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

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

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

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * <pre>
   * Enumeration type characterizing the size of a test, as specified by the
   * test rule.
   * </pre>
   *
   * Protobuf enum {@code build_event_stream.TestSize}
   */
  public enum TestSize
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>UNKNOWN = 0;</code>
     */
    UNKNOWN(0),
    /**
     * <code>SMALL = 1;</code>
     */
    SMALL(1),
    /**
     * <code>MEDIUM = 2;</code>
     */
    MEDIUM(2),
    /**
     * <code>LARGE = 3;</code>
     */
    LARGE(3),
    /**
     * <code>ENORMOUS = 4;</code>
     */
    ENORMOUS(4),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>UNKNOWN = 0;</code>
     */
    public static final int UNKNOWN_VALUE = 0;
    /**
     * <code>SMALL = 1;</code>
     */
    public static final int SMALL_VALUE = 1;
    /**
     * <code>MEDIUM = 2;</code>
     */
    public static final int MEDIUM_VALUE = 2;
    /**
     * <code>LARGE = 3;</code>
     */
    public static final int LARGE_VALUE = 3;
    /**
     * <code>ENORMOUS = 4;</code>
     */
    public static final int ENORMOUS_VALUE = 4;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static TestSize valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static TestSize forNumber(int value) {
      switch (value) {
        case 0: return UNKNOWN;
        case 1: return SMALL;
        case 2: return MEDIUM;
        case 3: return LARGE;
        case 4: return ENORMOUS;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.getDescriptor().getEnumTypes().get(0);
    }

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

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

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:build_event_stream.TestSize)
  }

  /**
   * Protobuf enum {@code build_event_stream.TestStatus}
   */
  public enum TestStatus
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>NO_STATUS = 0;</code>
     */
    NO_STATUS(0),
    /**
     * <code>PASSED = 1;</code>
     */
    PASSED(1),
    /**
     * <code>FLAKY = 2;</code>
     */
    FLAKY(2),
    /**
     * <code>TIMEOUT = 3;</code>
     */
    TIMEOUT(3),
    /**
     * <code>FAILED = 4;</code>
     */
    FAILED(4),
    /**
     * <code>INCOMPLETE = 5;</code>
     */
    INCOMPLETE(5),
    /**
     * <code>REMOTE_FAILURE = 6;</code>
     */
    REMOTE_FAILURE(6),
    /**
     * <code>FAILED_TO_BUILD = 7;</code>
     */
    FAILED_TO_BUILD(7),
    /**
     * <code>TOOL_HALTED_BEFORE_TESTING = 8;</code>
     */
    TOOL_HALTED_BEFORE_TESTING(8),
    UNRECOGNIZED(-1),
    ;

    /**
     * <code>NO_STATUS = 0;</code>
     */
    public static final int NO_STATUS_VALUE = 0;
    /**
     * <code>PASSED = 1;</code>
     */
    public static final int PASSED_VALUE = 1;
    /**
     * <code>FLAKY = 2;</code>
     */
    public static final int FLAKY_VALUE = 2;
    /**
     * <code>TIMEOUT = 3;</code>
     */
    public static final int TIMEOUT_VALUE = 3;
    /**
     * <code>FAILED = 4;</code>
     */
    public static final int FAILED_VALUE = 4;
    /**
     * <code>INCOMPLETE = 5;</code>
     */
    public static final int INCOMPLETE_VALUE = 5;
    /**
     * <code>REMOTE_FAILURE = 6;</code>
     */
    public static final int REMOTE_FAILURE_VALUE = 6;
    /**
     * <code>FAILED_TO_BUILD = 7;</code>
     */
    public static final int FAILED_TO_BUILD_VALUE = 7;
    /**
     * <code>TOOL_HALTED_BEFORE_TESTING = 8;</code>
     */
    public static final int TOOL_HALTED_BEFORE_TESTING_VALUE = 8;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static TestStatus valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static TestStatus forNumber(int value) {
      switch (value) {
        case 0: return NO_STATUS;
        case 1: return PASSED;
        case 2: return FLAKY;
        case 3: return TIMEOUT;
        case 4: return FAILED;
        case 5: return INCOMPLETE;
        case 6: return REMOTE_FAILURE;
        case 7: return FAILED_TO_BUILD;
        case 8: return TOOL_HALTED_BEFORE_TESTING;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.getDescriptor().getEnumTypes().get(1);
    }

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

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

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:build_event_stream.TestStatus)
  }

  public interface BuildEventIdOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.build_event_stream.BuildEventId.UnknownBuildEventId unknown = 1;</code>
     * @return Whether the unknown field is set.
     */
    boolean hasUnknown();
    /**
     * <code>.build_event_stream.BuildEventId.UnknownBuildEventId unknown = 1;</code>
     * @return The unknown.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId getUnknown();
    /**
     * <code>.build_event_stream.BuildEventId.UnknownBuildEventId unknown = 1;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventIdOrBuilder getUnknownOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.ProgressId progress = 2;</code>
     * @return Whether the progress field is set.
     */
    boolean hasProgress();
    /**
     * <code>.build_event_stream.BuildEventId.ProgressId progress = 2;</code>
     * @return The progress.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId getProgress();
    /**
     * <code>.build_event_stream.BuildEventId.ProgressId progress = 2;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressIdOrBuilder getProgressOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.BuildStartedId started = 3;</code>
     * @return Whether the started field is set.
     */
    boolean hasStarted();
    /**
     * <code>.build_event_stream.BuildEventId.BuildStartedId started = 3;</code>
     * @return The started.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId getStarted();
    /**
     * <code>.build_event_stream.BuildEventId.BuildStartedId started = 3;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedIdOrBuilder getStartedOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.UnstructuredCommandLineId unstructured_command_line = 11;</code>
     * @return Whether the unstructuredCommandLine field is set.
     */
    boolean hasUnstructuredCommandLine();
    /**
     * <code>.build_event_stream.BuildEventId.UnstructuredCommandLineId unstructured_command_line = 11;</code>
     * @return The unstructuredCommandLine.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId getUnstructuredCommandLine();
    /**
     * <code>.build_event_stream.BuildEventId.UnstructuredCommandLineId unstructured_command_line = 11;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineIdOrBuilder getUnstructuredCommandLineOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.StructuredCommandLineId structured_command_line = 18;</code>
     * @return Whether the structuredCommandLine field is set.
     */
    boolean hasStructuredCommandLine();
    /**
     * <code>.build_event_stream.BuildEventId.StructuredCommandLineId structured_command_line = 18;</code>
     * @return The structuredCommandLine.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId getStructuredCommandLine();
    /**
     * <code>.build_event_stream.BuildEventId.StructuredCommandLineId structured_command_line = 18;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineIdOrBuilder getStructuredCommandLineOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.WorkspaceStatusId workspace_status = 14;</code>
     * @return Whether the workspaceStatus field is set.
     */
    boolean hasWorkspaceStatus();
    /**
     * <code>.build_event_stream.BuildEventId.WorkspaceStatusId workspace_status = 14;</code>
     * @return The workspaceStatus.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId getWorkspaceStatus();
    /**
     * <code>.build_event_stream.BuildEventId.WorkspaceStatusId workspace_status = 14;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusIdOrBuilder getWorkspaceStatusOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.OptionsParsedId options_parsed = 12;</code>
     * @return Whether the optionsParsed field is set.
     */
    boolean hasOptionsParsed();
    /**
     * <code>.build_event_stream.BuildEventId.OptionsParsedId options_parsed = 12;</code>
     * @return The optionsParsed.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId getOptionsParsed();
    /**
     * <code>.build_event_stream.BuildEventId.OptionsParsedId options_parsed = 12;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedIdOrBuilder getOptionsParsedOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.FetchId fetch = 17;</code>
     * @return Whether the fetch field is set.
     */
    boolean hasFetch();
    /**
     * <code>.build_event_stream.BuildEventId.FetchId fetch = 17;</code>
     * @return The fetch.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId getFetch();
    /**
     * <code>.build_event_stream.BuildEventId.FetchId fetch = 17;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchIdOrBuilder getFetchOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 15;</code>
     * @return Whether the configuration field is set.
     */
    boolean hasConfiguration();
    /**
     * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 15;</code>
     * @return The configuration.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration();
    /**
     * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 15;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.TargetConfiguredId target_configured = 16;</code>
     * @return Whether the targetConfigured field is set.
     */
    boolean hasTargetConfigured();
    /**
     * <code>.build_event_stream.BuildEventId.TargetConfiguredId target_configured = 16;</code>
     * @return The targetConfigured.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId getTargetConfigured();
    /**
     * <code>.build_event_stream.BuildEventId.TargetConfiguredId target_configured = 16;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredIdOrBuilder getTargetConfiguredOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern = 4;</code>
     * @return Whether the pattern field is set.
     */
    boolean hasPattern();
    /**
     * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern = 4;</code>
     * @return The pattern.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId getPattern();
    /**
     * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern = 4;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedIdOrBuilder getPatternOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern_skipped = 10;</code>
     * @return Whether the patternSkipped field is set.
     */
    boolean hasPatternSkipped();
    /**
     * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern_skipped = 10;</code>
     * @return The patternSkipped.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId getPatternSkipped();
    /**
     * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern_skipped = 10;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedIdOrBuilder getPatternSkippedOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.NamedSetOfFilesId named_set = 13;</code>
     * @return Whether the namedSet field is set.
     */
    boolean hasNamedSet();
    /**
     * <code>.build_event_stream.BuildEventId.NamedSetOfFilesId named_set = 13;</code>
     * @return The namedSet.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId getNamedSet();
    /**
     * <code>.build_event_stream.BuildEventId.NamedSetOfFilesId named_set = 13;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder getNamedSetOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.TargetCompletedId target_completed = 5;</code>
     * @return Whether the targetCompleted field is set.
     */
    boolean hasTargetCompleted();
    /**
     * <code>.build_event_stream.BuildEventId.TargetCompletedId target_completed = 5;</code>
     * @return The targetCompleted.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId getTargetCompleted();
    /**
     * <code>.build_event_stream.BuildEventId.TargetCompletedId target_completed = 5;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedIdOrBuilder getTargetCompletedOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.ActionCompletedId action_completed = 6;</code>
     * @return Whether the actionCompleted field is set.
     */
    boolean hasActionCompleted();
    /**
     * <code>.build_event_stream.BuildEventId.ActionCompletedId action_completed = 6;</code>
     * @return The actionCompleted.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId getActionCompleted();
    /**
     * <code>.build_event_stream.BuildEventId.ActionCompletedId action_completed = 6;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedIdOrBuilder getActionCompletedOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.UnconfiguredLabelId unconfigured_label = 19;</code>
     * @return Whether the unconfiguredLabel field is set.
     */
    boolean hasUnconfiguredLabel();
    /**
     * <code>.build_event_stream.BuildEventId.UnconfiguredLabelId unconfigured_label = 19;</code>
     * @return The unconfiguredLabel.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId getUnconfiguredLabel();
    /**
     * <code>.build_event_stream.BuildEventId.UnconfiguredLabelId unconfigured_label = 19;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelIdOrBuilder getUnconfiguredLabelOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.ConfiguredLabelId configured_label = 21;</code>
     * @return Whether the configuredLabel field is set.
     */
    boolean hasConfiguredLabel();
    /**
     * <code>.build_event_stream.BuildEventId.ConfiguredLabelId configured_label = 21;</code>
     * @return The configuredLabel.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId getConfiguredLabel();
    /**
     * <code>.build_event_stream.BuildEventId.ConfiguredLabelId configured_label = 21;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelIdOrBuilder getConfiguredLabelOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.TestResultId test_result = 8;</code>
     * @return Whether the testResult field is set.
     */
    boolean hasTestResult();
    /**
     * <code>.build_event_stream.BuildEventId.TestResultId test_result = 8;</code>
     * @return The testResult.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId getTestResult();
    /**
     * <code>.build_event_stream.BuildEventId.TestResultId test_result = 8;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultIdOrBuilder getTestResultOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.TestSummaryId test_summary = 7;</code>
     * @return Whether the testSummary field is set.
     */
    boolean hasTestSummary();
    /**
     * <code>.build_event_stream.BuildEventId.TestSummaryId test_summary = 7;</code>
     * @return The testSummary.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId getTestSummary();
    /**
     * <code>.build_event_stream.BuildEventId.TestSummaryId test_summary = 7;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryIdOrBuilder getTestSummaryOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.TargetSummaryId target_summary = 26;</code>
     * @return Whether the targetSummary field is set.
     */
    boolean hasTargetSummary();
    /**
     * <code>.build_event_stream.BuildEventId.TargetSummaryId target_summary = 26;</code>
     * @return The targetSummary.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId getTargetSummary();
    /**
     * <code>.build_event_stream.BuildEventId.TargetSummaryId target_summary = 26;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryIdOrBuilder getTargetSummaryOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.BuildFinishedId build_finished = 9;</code>
     * @return Whether the buildFinished field is set.
     */
    boolean hasBuildFinished();
    /**
     * <code>.build_event_stream.BuildEventId.BuildFinishedId build_finished = 9;</code>
     * @return The buildFinished.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId getBuildFinished();
    /**
     * <code>.build_event_stream.BuildEventId.BuildFinishedId build_finished = 9;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedIdOrBuilder getBuildFinishedOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.BuildToolLogsId build_tool_logs = 20;</code>
     * @return Whether the buildToolLogs field is set.
     */
    boolean hasBuildToolLogs();
    /**
     * <code>.build_event_stream.BuildEventId.BuildToolLogsId build_tool_logs = 20;</code>
     * @return The buildToolLogs.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId getBuildToolLogs();
    /**
     * <code>.build_event_stream.BuildEventId.BuildToolLogsId build_tool_logs = 20;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsIdOrBuilder getBuildToolLogsOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.BuildMetricsId build_metrics = 22;</code>
     * @return Whether the buildMetrics field is set.
     */
    boolean hasBuildMetrics();
    /**
     * <code>.build_event_stream.BuildEventId.BuildMetricsId build_metrics = 22;</code>
     * @return The buildMetrics.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId getBuildMetrics();
    /**
     * <code>.build_event_stream.BuildEventId.BuildMetricsId build_metrics = 22;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsIdOrBuilder getBuildMetricsOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.WorkspaceConfigId workspace = 23;</code>
     * @return Whether the workspace field is set.
     */
    boolean hasWorkspace();
    /**
     * <code>.build_event_stream.BuildEventId.WorkspaceConfigId workspace = 23;</code>
     * @return The workspace.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId getWorkspace();
    /**
     * <code>.build_event_stream.BuildEventId.WorkspaceConfigId workspace = 23;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigIdOrBuilder getWorkspaceOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.BuildMetadataId build_metadata = 24;</code>
     * @return Whether the buildMetadata field is set.
     */
    boolean hasBuildMetadata();
    /**
     * <code>.build_event_stream.BuildEventId.BuildMetadataId build_metadata = 24;</code>
     * @return The buildMetadata.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId getBuildMetadata();
    /**
     * <code>.build_event_stream.BuildEventId.BuildMetadataId build_metadata = 24;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataIdOrBuilder getBuildMetadataOrBuilder();

    /**
     * <code>.build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId convenience_symlinks_identified = 25;</code>
     * @return Whether the convenienceSymlinksIdentified field is set.
     */
    boolean hasConvenienceSymlinksIdentified();
    /**
     * <code>.build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId convenience_symlinks_identified = 25;</code>
     * @return The convenienceSymlinksIdentified.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId getConvenienceSymlinksIdentified();
    /**
     * <code>.build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId convenience_symlinks_identified = 25;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedIdOrBuilder getConvenienceSymlinksIdentifiedOrBuilder();

    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.IdCase getIdCase();
  }
  /**
   * <pre>
   * Identifier for a build event. It is deliberately structured to also provide
   * information about which build target etc the event is related to.
   * Events are chained via the event id as follows: each event has an id and a
   * set of ids of children events such that apart from the initial event each
   * event has an id that is mentioned as child id in an earlier event and a build
   * invocation is complete if and only if all direct and indirect children of the
   * initial event have been posted.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.BuildEventId}
   */
  public static final class BuildEventId extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId)
      BuildEventIdOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BuildEventId.newBuilder() to construct.
    private BuildEventId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BuildEventId() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.Builder.class);
    }

    public interface UnknownBuildEventIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.UnknownBuildEventId)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>string details = 1;</code>
       * @return The details.
       */
      java.lang.String getDetails();
      /**
       * <code>string details = 1;</code>
       * @return The bytes for details.
       */
      com.google.protobuf.ByteString
          getDetailsBytes();
    }
    /**
     * <pre>
     * Generic identifier for a build event. This is the default type of
     * BuildEventId, but should not be used outside testing; nevertheless,
     * tools should handle build events with this kind of id gracefully.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.UnknownBuildEventId}
     */
    public static final class UnknownBuildEventId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.UnknownBuildEventId)
        UnknownBuildEventIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use UnknownBuildEventId.newBuilder() to construct.
      private UnknownBuildEventId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private UnknownBuildEventId() {
        details_ = "";
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_UnknownBuildEventId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_UnknownBuildEventId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId.Builder.class);
      }

      public static final int DETAILS_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object details_ = "";
      /**
       * <code>string details = 1;</code>
       * @return The details.
       */
      @java.lang.Override
      public java.lang.String getDetails() {
        java.lang.Object ref = details_;
        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();
          details_ = s;
          return s;
        }
      }
      /**
       * <code>string details = 1;</code>
       * @return The bytes for details.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getDetailsBytes() {
        java.lang.Object ref = details_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          details_ = 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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(details_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, details_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(details_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, details_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (!getDetails()
            .equals(other.getDetails())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + DETAILS_FIELD_NUMBER;
        hash = (53 * hash) + getDetails().hashCode();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId 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>
       * Generic identifier for a build event. This is the default type of
       * BuildEventId, but should not be used outside testing; nevertheless,
       * tools should handle build events with this kind of id gracefully.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.UnknownBuildEventId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.UnknownBuildEventId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_UnknownBuildEventId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_UnknownBuildEventId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          details_ = "";
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_UnknownBuildEventId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.details_ = details_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId.getDefaultInstance()) return this;
          if (!other.getDetails().isEmpty()) {
            details_ = other.details_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  details_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object details_ = "";
        /**
         * <code>string details = 1;</code>
         * @return The details.
         */
        public java.lang.String getDetails() {
          java.lang.Object ref = details_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            details_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>string details = 1;</code>
         * @return The bytes for details.
         */
        public com.google.protobuf.ByteString
            getDetailsBytes() {
          java.lang.Object ref = details_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            details_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>string details = 1;</code>
         * @param value The details to set.
         * @return This builder for chaining.
         */
        public Builder setDetails(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          details_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>string details = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearDetails() {
          details_ = getDefaultInstance().getDetails();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>string details = 1;</code>
         * @param value The bytes for details to set.
         * @return This builder for chaining.
         */
        public Builder setDetailsBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          details_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.UnknownBuildEventId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.UnknownBuildEventId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface ProgressIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.ProgressId)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Unique identifier. No assumption should be made about how the ids are
       * assigned; the only meaningful operation on this field is test for
       * equality.
       * </pre>
       *
       * <code>int32 opaque_count = 1;</code>
       * @return The opaqueCount.
       */
      int getOpaqueCount();
    }
    /**
     * <pre>
     * Identifier of an event reporting progress. Those events are also used to
     * chain in events that come early.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.ProgressId}
     */
    public static final class ProgressId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.ProgressId)
        ProgressIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ProgressId.newBuilder() to construct.
      private ProgressId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ProgressId() {
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ProgressId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ProgressId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId.Builder.class);
      }

      public static final int OPAQUE_COUNT_FIELD_NUMBER = 1;
      private int opaqueCount_ = 0;
      /**
       * <pre>
       * Unique identifier. No assumption should be made about how the ids are
       * assigned; the only meaningful operation on this field is test for
       * equality.
       * </pre>
       *
       * <code>int32 opaque_count = 1;</code>
       * @return The opaqueCount.
       */
      @java.lang.Override
      public int getOpaqueCount() {
        return opaqueCount_;
      }

      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 (opaqueCount_ != 0) {
          output.writeInt32(1, opaqueCount_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (opaqueCount_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, opaqueCount_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

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

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + OPAQUE_COUNT_FIELD_NUMBER;
        hash = (53 * hash) + getOpaqueCount();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId 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>
       * Identifier of an event reporting progress. Those events are also used to
       * chain in events that come early.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.ProgressId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.ProgressId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ProgressId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ProgressId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          opaqueCount_ = 0;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ProgressId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.opaqueCount_ = opaqueCount_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId.getDefaultInstance()) return this;
          if (other.getOpaqueCount() != 0) {
            setOpaqueCount(other.getOpaqueCount());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  opaqueCount_ = input.readInt32();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private int opaqueCount_ ;
        /**
         * <pre>
         * Unique identifier. No assumption should be made about how the ids are
         * assigned; the only meaningful operation on this field is test for
         * equality.
         * </pre>
         *
         * <code>int32 opaque_count = 1;</code>
         * @return The opaqueCount.
         */
        @java.lang.Override
        public int getOpaqueCount() {
          return opaqueCount_;
        }
        /**
         * <pre>
         * Unique identifier. No assumption should be made about how the ids are
         * assigned; the only meaningful operation on this field is test for
         * equality.
         * </pre>
         *
         * <code>int32 opaque_count = 1;</code>
         * @param value The opaqueCount to set.
         * @return This builder for chaining.
         */
        public Builder setOpaqueCount(int value) {
          
          opaqueCount_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Unique identifier. No assumption should be made about how the ids are
         * assigned; the only meaningful operation on this field is test for
         * equality.
         * </pre>
         *
         * <code>int32 opaque_count = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearOpaqueCount() {
          bitField0_ = (bitField0_ & ~0x00000001);
          opaqueCount_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.ProgressId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.ProgressId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface BuildStartedIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.BuildStartedId)
        com.google.protobuf.MessageOrBuilder {
    }
    /**
     * <pre>
     * Identifier of an event indicating the beginning of a build; this will
     * normally be the first event.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.BuildStartedId}
     */
    public static final class BuildStartedId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.BuildStartedId)
        BuildStartedIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use BuildStartedId.newBuilder() to construct.
      private BuildStartedId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private BuildStartedId() {
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildStartedId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildStartedId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId.Builder.class);
      }

      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 {
        getUnknownFields().writeTo(output);
      }

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

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

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

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

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId 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>
       * Identifier of an event indicating the beginning of a build; this will
       * normally be the first event.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.BuildStartedId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.BuildStartedId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildStartedId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildStartedId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildStartedId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId(this);
          onBuilt();
          return result;
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId.getDefaultInstance()) return this;
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.BuildStartedId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.BuildStartedId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface UnstructuredCommandLineIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.UnstructuredCommandLineId)
        com.google.protobuf.MessageOrBuilder {
    }
    /**
     * <pre>
     * Identifier on an event indicating the original commandline received by
     * the bazel server.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.UnstructuredCommandLineId}
     */
    public static final class UnstructuredCommandLineId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.UnstructuredCommandLineId)
        UnstructuredCommandLineIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use UnstructuredCommandLineId.newBuilder() to construct.
      private UnstructuredCommandLineId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private UnstructuredCommandLineId() {
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_UnstructuredCommandLineId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_UnstructuredCommandLineId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId.Builder.class);
      }

      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 {
        getUnknownFields().writeTo(output);
      }

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

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

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

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

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId 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>
       * Identifier on an event indicating the original commandline received by
       * the bazel server.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.UnstructuredCommandLineId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.UnstructuredCommandLineId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_UnstructuredCommandLineId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_UnstructuredCommandLineId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_UnstructuredCommandLineId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId(this);
          onBuilt();
          return result;
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId.getDefaultInstance()) return this;
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.UnstructuredCommandLineId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.UnstructuredCommandLineId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface StructuredCommandLineIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.StructuredCommandLineId)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * A title for this command line value, as there may be multiple.
       * For example, a single invocation may wish to report both the literal and
       * canonical command lines, and this label would be used to differentiate
       * between both versions.
       * </pre>
       *
       * <code>string command_line_label = 1;</code>
       * @return The commandLineLabel.
       */
      java.lang.String getCommandLineLabel();
      /**
       * <pre>
       * A title for this command line value, as there may be multiple.
       * For example, a single invocation may wish to report both the literal and
       * canonical command lines, and this label would be used to differentiate
       * between both versions.
       * </pre>
       *
       * <code>string command_line_label = 1;</code>
       * @return The bytes for commandLineLabel.
       */
      com.google.protobuf.ByteString
          getCommandLineLabelBytes();
    }
    /**
     * <pre>
     * Identifier on an event describing the commandline received by Bazel.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.StructuredCommandLineId}
     */
    public static final class StructuredCommandLineId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.StructuredCommandLineId)
        StructuredCommandLineIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use StructuredCommandLineId.newBuilder() to construct.
      private StructuredCommandLineId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private StructuredCommandLineId() {
        commandLineLabel_ = "";
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_StructuredCommandLineId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_StructuredCommandLineId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId.Builder.class);
      }

      public static final int COMMAND_LINE_LABEL_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object commandLineLabel_ = "";
      /**
       * <pre>
       * A title for this command line value, as there may be multiple.
       * For example, a single invocation may wish to report both the literal and
       * canonical command lines, and this label would be used to differentiate
       * between both versions.
       * </pre>
       *
       * <code>string command_line_label = 1;</code>
       * @return The commandLineLabel.
       */
      @java.lang.Override
      public java.lang.String getCommandLineLabel() {
        java.lang.Object ref = commandLineLabel_;
        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();
          commandLineLabel_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * A title for this command line value, as there may be multiple.
       * For example, a single invocation may wish to report both the literal and
       * canonical command lines, and this label would be used to differentiate
       * between both versions.
       * </pre>
       *
       * <code>string command_line_label = 1;</code>
       * @return The bytes for commandLineLabel.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getCommandLineLabelBytes() {
        java.lang.Object ref = commandLineLabel_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          commandLineLabel_ = 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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(commandLineLabel_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, commandLineLabel_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(commandLineLabel_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, commandLineLabel_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (!getCommandLineLabel()
            .equals(other.getCommandLineLabel())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + COMMAND_LINE_LABEL_FIELD_NUMBER;
        hash = (53 * hash) + getCommandLineLabel().hashCode();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId 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>
       * Identifier on an event describing the commandline received by Bazel.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.StructuredCommandLineId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.StructuredCommandLineId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_StructuredCommandLineId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_StructuredCommandLineId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          commandLineLabel_ = "";
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_StructuredCommandLineId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.commandLineLabel_ = commandLineLabel_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId.getDefaultInstance()) return this;
          if (!other.getCommandLineLabel().isEmpty()) {
            commandLineLabel_ = other.commandLineLabel_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  commandLineLabel_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object commandLineLabel_ = "";
        /**
         * <pre>
         * A title for this command line value, as there may be multiple.
         * For example, a single invocation may wish to report both the literal and
         * canonical command lines, and this label would be used to differentiate
         * between both versions.
         * </pre>
         *
         * <code>string command_line_label = 1;</code>
         * @return The commandLineLabel.
         */
        public java.lang.String getCommandLineLabel() {
          java.lang.Object ref = commandLineLabel_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            commandLineLabel_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * A title for this command line value, as there may be multiple.
         * For example, a single invocation may wish to report both the literal and
         * canonical command lines, and this label would be used to differentiate
         * between both versions.
         * </pre>
         *
         * <code>string command_line_label = 1;</code>
         * @return The bytes for commandLineLabel.
         */
        public com.google.protobuf.ByteString
            getCommandLineLabelBytes() {
          java.lang.Object ref = commandLineLabel_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            commandLineLabel_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * A title for this command line value, as there may be multiple.
         * For example, a single invocation may wish to report both the literal and
         * canonical command lines, and this label would be used to differentiate
         * between both versions.
         * </pre>
         *
         * <code>string command_line_label = 1;</code>
         * @param value The commandLineLabel to set.
         * @return This builder for chaining.
         */
        public Builder setCommandLineLabel(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          commandLineLabel_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * A title for this command line value, as there may be multiple.
         * For example, a single invocation may wish to report both the literal and
         * canonical command lines, and this label would be used to differentiate
         * between both versions.
         * </pre>
         *
         * <code>string command_line_label = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearCommandLineLabel() {
          commandLineLabel_ = getDefaultInstance().getCommandLineLabel();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * A title for this command line value, as there may be multiple.
         * For example, a single invocation may wish to report both the literal and
         * canonical command lines, and this label would be used to differentiate
         * between both versions.
         * </pre>
         *
         * <code>string command_line_label = 1;</code>
         * @param value The bytes for commandLineLabel to set.
         * @return This builder for chaining.
         */
        public Builder setCommandLineLabelBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          commandLineLabel_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.StructuredCommandLineId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.StructuredCommandLineId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface WorkspaceStatusIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.WorkspaceStatusId)
        com.google.protobuf.MessageOrBuilder {
    }
    /**
     * <pre>
     * Identifier of an event indicating the workspace status.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.WorkspaceStatusId}
     */
    public static final class WorkspaceStatusId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.WorkspaceStatusId)
        WorkspaceStatusIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use WorkspaceStatusId.newBuilder() to construct.
      private WorkspaceStatusId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private WorkspaceStatusId() {
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_WorkspaceStatusId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_WorkspaceStatusId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId.Builder.class);
      }

      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 {
        getUnknownFields().writeTo(output);
      }

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

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

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

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

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId 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>
       * Identifier of an event indicating the workspace status.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.WorkspaceStatusId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.WorkspaceStatusId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_WorkspaceStatusId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_WorkspaceStatusId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_WorkspaceStatusId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId(this);
          onBuilt();
          return result;
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId.getDefaultInstance()) return this;
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.WorkspaceStatusId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.WorkspaceStatusId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface OptionsParsedIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.OptionsParsedId)
        com.google.protobuf.MessageOrBuilder {
    }
    /**
     * <pre>
     * Identifier on an event reporting on the options included in the command
     * line, both explicitly and implicitly.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.OptionsParsedId}
     */
    public static final class OptionsParsedId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.OptionsParsedId)
        OptionsParsedIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use OptionsParsedId.newBuilder() to construct.
      private OptionsParsedId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private OptionsParsedId() {
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_OptionsParsedId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_OptionsParsedId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId.Builder.class);
      }

      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 {
        getUnknownFields().writeTo(output);
      }

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

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

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

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

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId 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>
       * Identifier on an event reporting on the options included in the command
       * line, both explicitly and implicitly.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.OptionsParsedId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.OptionsParsedId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_OptionsParsedId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_OptionsParsedId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_OptionsParsedId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId(this);
          onBuilt();
          return result;
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId.getDefaultInstance()) return this;
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.OptionsParsedId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.OptionsParsedId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface FetchIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.FetchId)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * The external resource that was fetched from.
       * </pre>
       *
       * <code>string url = 1;</code>
       * @return The url.
       */
      java.lang.String getUrl();
      /**
       * <pre>
       * The external resource that was fetched from.
       * </pre>
       *
       * <code>string url = 1;</code>
       * @return The bytes for url.
       */
      com.google.protobuf.ByteString
          getUrlBytes();
    }
    /**
     * <pre>
     * Identifier of an event reporting that an external resource was fetched
     * from.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.FetchId}
     */
    public static final class FetchId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.FetchId)
        FetchIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use FetchId.newBuilder() to construct.
      private FetchId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private FetchId() {
        url_ = "";
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_FetchId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_FetchId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId.Builder.class);
      }

      public static final int URL_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object url_ = "";
      /**
       * <pre>
       * The external resource that was fetched from.
       * </pre>
       *
       * <code>string url = 1;</code>
       * @return The url.
       */
      @java.lang.Override
      public java.lang.String getUrl() {
        java.lang.Object ref = url_;
        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();
          url_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * The external resource that was fetched from.
       * </pre>
       *
       * <code>string url = 1;</code>
       * @return The bytes for url.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getUrlBytes() {
        java.lang.Object ref = url_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          url_ = 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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(url_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, url_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(url_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, url_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (!getUrl()
            .equals(other.getUrl())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + URL_FIELD_NUMBER;
        hash = (53 * hash) + getUrl().hashCode();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId 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>
       * Identifier of an event reporting that an external resource was fetched
       * from.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.FetchId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.FetchId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_FetchId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_FetchId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          url_ = "";
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_FetchId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.url_ = url_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId.getDefaultInstance()) return this;
          if (!other.getUrl().isEmpty()) {
            url_ = other.url_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  url_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object url_ = "";
        /**
         * <pre>
         * The external resource that was fetched from.
         * </pre>
         *
         * <code>string url = 1;</code>
         * @return The url.
         */
        public java.lang.String getUrl() {
          java.lang.Object ref = url_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            url_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * The external resource that was fetched from.
         * </pre>
         *
         * <code>string url = 1;</code>
         * @return The bytes for url.
         */
        public com.google.protobuf.ByteString
            getUrlBytes() {
          java.lang.Object ref = url_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            url_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * The external resource that was fetched from.
         * </pre>
         *
         * <code>string url = 1;</code>
         * @param value The url to set.
         * @return This builder for chaining.
         */
        public Builder setUrl(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          url_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The external resource that was fetched from.
         * </pre>
         *
         * <code>string url = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearUrl() {
          url_ = getDefaultInstance().getUrl();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The external resource that was fetched from.
         * </pre>
         *
         * <code>string url = 1;</code>
         * @param value The bytes for url to set.
         * @return This builder for chaining.
         */
        public Builder setUrlBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          url_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.FetchId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.FetchId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface PatternExpandedIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.PatternExpandedId)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>repeated string pattern = 1;</code>
       * @return A list containing the pattern.
       */
      java.util.List<java.lang.String>
          getPatternList();
      /**
       * <code>repeated string pattern = 1;</code>
       * @return The count of pattern.
       */
      int getPatternCount();
      /**
       * <code>repeated string pattern = 1;</code>
       * @param index The index of the element to return.
       * @return The pattern at the given index.
       */
      java.lang.String getPattern(int index);
      /**
       * <code>repeated string pattern = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the pattern at the given index.
       */
      com.google.protobuf.ByteString
          getPatternBytes(int index);
    }
    /**
     * <pre>
     * Identifier of an event indicating that a target pattern has been expanded
     * further.
     * Messages of this shape are also used to describe parts of a pattern that
     * have been skipped for some reason, if the actual expansion was still
     * carried out (e.g., if keep_going is set). In this case, the
     * pattern_skipped choice in the id field is to be made.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.PatternExpandedId}
     */
    public static final class PatternExpandedId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.PatternExpandedId)
        PatternExpandedIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use PatternExpandedId.newBuilder() to construct.
      private PatternExpandedId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private PatternExpandedId() {
        pattern_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_PatternExpandedId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_PatternExpandedId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.Builder.class);
      }

      public static final int PATTERN_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private com.google.protobuf.LazyStringList pattern_;
      /**
       * <code>repeated string pattern = 1;</code>
       * @return A list containing the pattern.
       */
      public com.google.protobuf.ProtocolStringList
          getPatternList() {
        return pattern_;
      }
      /**
       * <code>repeated string pattern = 1;</code>
       * @return The count of pattern.
       */
      public int getPatternCount() {
        return pattern_.size();
      }
      /**
       * <code>repeated string pattern = 1;</code>
       * @param index The index of the element to return.
       * @return The pattern at the given index.
       */
      public java.lang.String getPattern(int index) {
        return pattern_.get(index);
      }
      /**
       * <code>repeated string pattern = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the pattern at the given index.
       */
      public com.google.protobuf.ByteString
          getPatternBytes(int index) {
        return pattern_.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 {
        for (int i = 0; i < pattern_.size(); i++) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, pattern_.getRaw(i));
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        {
          int dataSize = 0;
          for (int i = 0; i < pattern_.size(); i++) {
            dataSize += computeStringSizeNoTag(pattern_.getRaw(i));
          }
          size += dataSize;
          size += 1 * getPatternList().size();
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (!getPatternList()
            .equals(other.getPatternList())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (getPatternCount() > 0) {
          hash = (37 * hash) + PATTERN_FIELD_NUMBER;
          hash = (53 * hash) + getPatternList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId 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>
       * Identifier of an event indicating that a target pattern has been expanded
       * further.
       * Messages of this shape are also used to describe parts of a pattern that
       * have been skipped for some reason, if the actual expansion was still
       * carried out (e.g., if keep_going is set). In this case, the
       * pattern_skipped choice in the id field is to be made.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.PatternExpandedId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.PatternExpandedId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_PatternExpandedId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_PatternExpandedId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          pattern_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_PatternExpandedId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId(this);
          buildPartialRepeatedFields(result);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId result) {
          if (((bitField0_ & 0x00000001) != 0)) {
            pattern_ = pattern_.getUnmodifiableView();
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.pattern_ = pattern_;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId result) {
          int from_bitField0_ = bitField0_;
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.getDefaultInstance()) return this;
          if (!other.pattern_.isEmpty()) {
            if (pattern_.isEmpty()) {
              pattern_ = other.pattern_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensurePatternIsMutable();
              pattern_.addAll(other.pattern_);
            }
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  java.lang.String s = input.readStringRequireUtf8();
                  ensurePatternIsMutable();
                  pattern_.add(s);
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private com.google.protobuf.LazyStringList pattern_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        private void ensurePatternIsMutable() {
          if (!((bitField0_ & 0x00000001) != 0)) {
            pattern_ = new com.google.protobuf.LazyStringArrayList(pattern_);
            bitField0_ |= 0x00000001;
           }
        }
        /**
         * <code>repeated string pattern = 1;</code>
         * @return A list containing the pattern.
         */
        public com.google.protobuf.ProtocolStringList
            getPatternList() {
          return pattern_.getUnmodifiableView();
        }
        /**
         * <code>repeated string pattern = 1;</code>
         * @return The count of pattern.
         */
        public int getPatternCount() {
          return pattern_.size();
        }
        /**
         * <code>repeated string pattern = 1;</code>
         * @param index The index of the element to return.
         * @return The pattern at the given index.
         */
        public java.lang.String getPattern(int index) {
          return pattern_.get(index);
        }
        /**
         * <code>repeated string pattern = 1;</code>
         * @param index The index of the value to return.
         * @return The bytes of the pattern at the given index.
         */
        public com.google.protobuf.ByteString
            getPatternBytes(int index) {
          return pattern_.getByteString(index);
        }
        /**
         * <code>repeated string pattern = 1;</code>
         * @param index The index to set the value at.
         * @param value The pattern to set.
         * @return This builder for chaining.
         */
        public Builder setPattern(
            int index, java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          ensurePatternIsMutable();
          pattern_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string pattern = 1;</code>
         * @param value The pattern to add.
         * @return This builder for chaining.
         */
        public Builder addPattern(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          ensurePatternIsMutable();
          pattern_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string pattern = 1;</code>
         * @param values The pattern to add.
         * @return This builder for chaining.
         */
        public Builder addAllPattern(
            java.lang.Iterable<java.lang.String> values) {
          ensurePatternIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, pattern_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string pattern = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearPattern() {
          pattern_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string pattern = 1;</code>
         * @param value The bytes of the pattern to add.
         * @return This builder for chaining.
         */
        public Builder addPatternBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          ensurePatternIsMutable();
          pattern_.add(value);
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.PatternExpandedId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.PatternExpandedId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface WorkspaceConfigIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.WorkspaceConfigId)
        com.google.protobuf.MessageOrBuilder {
    }
    /**
     * Protobuf type {@code build_event_stream.BuildEventId.WorkspaceConfigId}
     */
    public static final class WorkspaceConfigId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.WorkspaceConfigId)
        WorkspaceConfigIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use WorkspaceConfigId.newBuilder() to construct.
      private WorkspaceConfigId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private WorkspaceConfigId() {
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_WorkspaceConfigId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_WorkspaceConfigId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId.Builder.class);
      }

      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 {
        getUnknownFields().writeTo(output);
      }

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

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

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

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

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId 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 build_event_stream.BuildEventId.WorkspaceConfigId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.WorkspaceConfigId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_WorkspaceConfigId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_WorkspaceConfigId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_WorkspaceConfigId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId(this);
          onBuilt();
          return result;
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId.getDefaultInstance()) return this;
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.WorkspaceConfigId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.WorkspaceConfigId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface BuildMetadataIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.BuildMetadataId)
        com.google.protobuf.MessageOrBuilder {
    }
    /**
     * Protobuf type {@code build_event_stream.BuildEventId.BuildMetadataId}
     */
    public static final class BuildMetadataId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.BuildMetadataId)
        BuildMetadataIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use BuildMetadataId.newBuilder() to construct.
      private BuildMetadataId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private BuildMetadataId() {
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildMetadataId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildMetadataId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId.Builder.class);
      }

      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 {
        getUnknownFields().writeTo(output);
      }

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

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

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

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

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId 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 build_event_stream.BuildEventId.BuildMetadataId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.BuildMetadataId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildMetadataId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildMetadataId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildMetadataId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId(this);
          onBuilt();
          return result;
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId.getDefaultInstance()) return this;
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.BuildMetadataId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.BuildMetadataId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface TargetConfiguredIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.TargetConfiguredId)
        com.google.protobuf.MessageOrBuilder {

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

      /**
       * <pre>
       * If empty, the id refers to the expansion of the target. If not-empty,
       * the id refers to the expansion of an aspect applied to the (already
       * expanded) target.
       * For example, when building an apple_binary that depends on proto_library
       * "//:foo_proto", there will be two TargetConfigured events for
       * "//:foo_proto":
       * 1. An event with an empty aspect, corresponding to actions producing
       * language-agnostic outputs from the proto_library; and
       * 2. An event with aspect "ObjcProtoAspect", corresponding to Objective-C
       * code generation.
       * </pre>
       *
       * <code>string aspect = 2;</code>
       * @return The aspect.
       */
      java.lang.String getAspect();
      /**
       * <pre>
       * If empty, the id refers to the expansion of the target. If not-empty,
       * the id refers to the expansion of an aspect applied to the (already
       * expanded) target.
       * For example, when building an apple_binary that depends on proto_library
       * "//:foo_proto", there will be two TargetConfigured events for
       * "//:foo_proto":
       * 1. An event with an empty aspect, corresponding to actions producing
       * language-agnostic outputs from the proto_library; and
       * 2. An event with aspect "ObjcProtoAspect", corresponding to Objective-C
       * code generation.
       * </pre>
       *
       * <code>string aspect = 2;</code>
       * @return The bytes for aspect.
       */
      com.google.protobuf.ByteString
          getAspectBytes();
    }
    /**
     * <pre>
     * Identifier of an event indicating that a target has been expanded by
     * identifying for which configurations it should be build.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.TargetConfiguredId}
     */
    public static final class TargetConfiguredId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.TargetConfiguredId)
        TargetConfiguredIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use TargetConfiguredId.newBuilder() to construct.
      private TargetConfiguredId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private TargetConfiguredId() {
        label_ = "";
        aspect_ = "";
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TargetConfiguredId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TargetConfiguredId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId.Builder.class);
      }

      public static final int LABEL_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object label_ = "";
      /**
       * <code>string label = 1;</code>
       * @return The label.
       */
      @java.lang.Override
      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;
        }
      }
      /**
       * <code>string label = 1;</code>
       * @return The bytes for label.
       */
      @java.lang.Override
      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 ASPECT_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private volatile java.lang.Object aspect_ = "";
      /**
       * <pre>
       * If empty, the id refers to the expansion of the target. If not-empty,
       * the id refers to the expansion of an aspect applied to the (already
       * expanded) target.
       * For example, when building an apple_binary that depends on proto_library
       * "//:foo_proto", there will be two TargetConfigured events for
       * "//:foo_proto":
       * 1. An event with an empty aspect, corresponding to actions producing
       * language-agnostic outputs from the proto_library; and
       * 2. An event with aspect "ObjcProtoAspect", corresponding to Objective-C
       * code generation.
       * </pre>
       *
       * <code>string aspect = 2;</code>
       * @return The aspect.
       */
      @java.lang.Override
      public java.lang.String getAspect() {
        java.lang.Object ref = aspect_;
        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();
          aspect_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * If empty, the id refers to the expansion of the target. If not-empty,
       * the id refers to the expansion of an aspect applied to the (already
       * expanded) target.
       * For example, when building an apple_binary that depends on proto_library
       * "//:foo_proto", there will be two TargetConfigured events for
       * "//:foo_proto":
       * 1. An event with an empty aspect, corresponding to actions producing
       * language-agnostic outputs from the proto_library; and
       * 2. An event with aspect "ObjcProtoAspect", corresponding to Objective-C
       * code generation.
       * </pre>
       *
       * <code>string aspect = 2;</code>
       * @return The bytes for aspect.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getAspectBytes() {
        java.lang.Object ref = aspect_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          aspect_ = 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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(label_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, label_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(aspect_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, aspect_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(label_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, label_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(aspect_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, aspect_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (!getLabel()
            .equals(other.getLabel())) return false;
        if (!getAspect()
            .equals(other.getAspect())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + LABEL_FIELD_NUMBER;
        hash = (53 * hash) + getLabel().hashCode();
        hash = (37 * hash) + ASPECT_FIELD_NUMBER;
        hash = (53 * hash) + getAspect().hashCode();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId 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>
       * Identifier of an event indicating that a target has been expanded by
       * identifying for which configurations it should be build.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.TargetConfiguredId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.TargetConfiguredId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TargetConfiguredId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TargetConfiguredId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          label_ = "";
          aspect_ = "";
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TargetConfiguredId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.label_ = label_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.aspect_ = aspect_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId.getDefaultInstance()) return this;
          if (!other.getLabel().isEmpty()) {
            label_ = other.label_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (!other.getAspect().isEmpty()) {
            aspect_ = other.aspect_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  label_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  aspect_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object label_ = "";
        /**
         * <code>string label = 1;</code>
         * @return The label.
         */
        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;
          }
        }
        /**
         * <code>string label = 1;</code>
         * @return The bytes for label.
         */
        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;
          }
        }
        /**
         * <code>string label = 1;</code>
         * @param value The label to set.
         * @return This builder for chaining.
         */
        public Builder setLabel(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          label_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>string label = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearLabel() {
          label_ = getDefaultInstance().getLabel();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>string label = 1;</code>
         * @param value The bytes for label to set.
         * @return This builder for chaining.
         */
        public Builder setLabelBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          label_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }

        private java.lang.Object aspect_ = "";
        /**
         * <pre>
         * If empty, the id refers to the expansion of the target. If not-empty,
         * the id refers to the expansion of an aspect applied to the (already
         * expanded) target.
         * For example, when building an apple_binary that depends on proto_library
         * "//:foo_proto", there will be two TargetConfigured events for
         * "//:foo_proto":
         * 1. An event with an empty aspect, corresponding to actions producing
         * language-agnostic outputs from the proto_library; and
         * 2. An event with aspect "ObjcProtoAspect", corresponding to Objective-C
         * code generation.
         * </pre>
         *
         * <code>string aspect = 2;</code>
         * @return The aspect.
         */
        public java.lang.String getAspect() {
          java.lang.Object ref = aspect_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            aspect_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * If empty, the id refers to the expansion of the target. If not-empty,
         * the id refers to the expansion of an aspect applied to the (already
         * expanded) target.
         * For example, when building an apple_binary that depends on proto_library
         * "//:foo_proto", there will be two TargetConfigured events for
         * "//:foo_proto":
         * 1. An event with an empty aspect, corresponding to actions producing
         * language-agnostic outputs from the proto_library; and
         * 2. An event with aspect "ObjcProtoAspect", corresponding to Objective-C
         * code generation.
         * </pre>
         *
         * <code>string aspect = 2;</code>
         * @return The bytes for aspect.
         */
        public com.google.protobuf.ByteString
            getAspectBytes() {
          java.lang.Object ref = aspect_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            aspect_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * If empty, the id refers to the expansion of the target. If not-empty,
         * the id refers to the expansion of an aspect applied to the (already
         * expanded) target.
         * For example, when building an apple_binary that depends on proto_library
         * "//:foo_proto", there will be two TargetConfigured events for
         * "//:foo_proto":
         * 1. An event with an empty aspect, corresponding to actions producing
         * language-agnostic outputs from the proto_library; and
         * 2. An event with aspect "ObjcProtoAspect", corresponding to Objective-C
         * code generation.
         * </pre>
         *
         * <code>string aspect = 2;</code>
         * @param value The aspect to set.
         * @return This builder for chaining.
         */
        public Builder setAspect(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          aspect_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * If empty, the id refers to the expansion of the target. If not-empty,
         * the id refers to the expansion of an aspect applied to the (already
         * expanded) target.
         * For example, when building an apple_binary that depends on proto_library
         * "//:foo_proto", there will be two TargetConfigured events for
         * "//:foo_proto":
         * 1. An event with an empty aspect, corresponding to actions producing
         * language-agnostic outputs from the proto_library; and
         * 2. An event with aspect "ObjcProtoAspect", corresponding to Objective-C
         * code generation.
         * </pre>
         *
         * <code>string aspect = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearAspect() {
          aspect_ = getDefaultInstance().getAspect();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * If empty, the id refers to the expansion of the target. If not-empty,
         * the id refers to the expansion of an aspect applied to the (already
         * expanded) target.
         * For example, when building an apple_binary that depends on proto_library
         * "//:foo_proto", there will be two TargetConfigured events for
         * "//:foo_proto":
         * 1. An event with an empty aspect, corresponding to actions producing
         * language-agnostic outputs from the proto_library; and
         * 2. An event with aspect "ObjcProtoAspect", corresponding to Objective-C
         * code generation.
         * </pre>
         *
         * <code>string aspect = 2;</code>
         * @param value The bytes for aspect to set.
         * @return This builder for chaining.
         */
        public Builder setAspectBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          aspect_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.TargetConfiguredId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.TargetConfiguredId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface NamedSetOfFilesIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.NamedSetOfFilesId)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Identifier of the file set; this is an opaque string valid only for the
       * particular instance of the event stream.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The id.
       */
      java.lang.String getId();
      /**
       * <pre>
       * Identifier of the file set; this is an opaque string valid only for the
       * particular instance of the event stream.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The bytes for id.
       */
      com.google.protobuf.ByteString
          getIdBytes();
    }
    /**
     * <pre>
     * Identifier of an event introducing a named set of files (usually artifacts)
     * to be referred to in later messages.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.NamedSetOfFilesId}
     */
    public static final class NamedSetOfFilesId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.NamedSetOfFilesId)
        NamedSetOfFilesIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use NamedSetOfFilesId.newBuilder() to construct.
      private NamedSetOfFilesId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private NamedSetOfFilesId() {
        id_ = "";
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_NamedSetOfFilesId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_NamedSetOfFilesId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder.class);
      }

      public static final int ID_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object id_ = "";
      /**
       * <pre>
       * Identifier of the file set; this is an opaque string valid only for the
       * particular instance of the event stream.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The id.
       */
      @java.lang.Override
      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 of the file set; this is an opaque string valid only for the
       * particular instance of the event stream.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The bytes for id.
       */
      @java.lang.Override
      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;
        }
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (!getId()
            .equals(other.getId())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

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

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId 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>
       * Identifier of an event introducing a named set of files (usually artifacts)
       * to be referred to in later messages.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.NamedSetOfFilesId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.NamedSetOfFilesId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_NamedSetOfFilesId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_NamedSetOfFilesId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          id_ = "";
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_NamedSetOfFilesId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.id_ = id_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.getDefaultInstance()) return this;
          if (!other.getId().isEmpty()) {
            id_ = other.id_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  id_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object id_ = "";
        /**
         * <pre>
         * Identifier of the file set; this is an opaque string valid only for the
         * particular instance of the event stream.
         * </pre>
         *
         * <code>string id = 1;</code>
         * @return The id.
         */
        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 of the file set; this is an opaque string valid only for the
         * particular instance of the event stream.
         * </pre>
         *
         * <code>string id = 1;</code>
         * @return The bytes for id.
         */
        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 of the file set; this is an opaque string valid only for the
         * particular instance of the event stream.
         * </pre>
         *
         * <code>string id = 1;</code>
         * @param value The id to set.
         * @return This builder for chaining.
         */
        public Builder setId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          id_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Identifier of the file set; this is an opaque string valid only for the
         * particular instance of the event stream.
         * </pre>
         *
         * <code>string id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearId() {
          id_ = getDefaultInstance().getId();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Identifier of the file set; this is an opaque string valid only for the
         * particular instance of the event stream.
         * </pre>
         *
         * <code>string id = 1;</code>
         * @param value The bytes for id to set.
         * @return This builder for chaining.
         */
        public Builder setIdBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          id_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.NamedSetOfFilesId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.NamedSetOfFilesId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface ConfigurationIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.ConfigurationId)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Identifier of the configuration; users of the protocol should not make
       * any assumptions about it having any structure, or equality of the
       * identifier between different streams.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The id.
       */
      java.lang.String getId();
      /**
       * <pre>
       * Identifier of the configuration; users of the protocol should not make
       * any assumptions about it having any structure, or equality of the
       * identifier between different streams.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The bytes for id.
       */
      com.google.protobuf.ByteString
          getIdBytes();
    }
    /**
     * <pre>
     * Identifier of an event introducing a configuration.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.ConfigurationId}
     */
    public static final class ConfigurationId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.ConfigurationId)
        ConfigurationIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ConfigurationId.newBuilder() to construct.
      private ConfigurationId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ConfigurationId() {
        id_ = "";
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ConfigurationId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ConfigurationId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder.class);
      }

      public static final int ID_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object id_ = "";
      /**
       * <pre>
       * Identifier of the configuration; users of the protocol should not make
       * any assumptions about it having any structure, or equality of the
       * identifier between different streams.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The id.
       */
      @java.lang.Override
      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 of the configuration; users of the protocol should not make
       * any assumptions about it having any structure, or equality of the
       * identifier between different streams.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The bytes for id.
       */
      @java.lang.Override
      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;
        }
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (!getId()
            .equals(other.getId())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

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

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId 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>
       * Identifier of an event introducing a configuration.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.ConfigurationId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.ConfigurationId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ConfigurationId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ConfigurationId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          id_ = "";
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ConfigurationId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.id_ = id_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance()) return this;
          if (!other.getId().isEmpty()) {
            id_ = other.id_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  id_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object id_ = "";
        /**
         * <pre>
         * Identifier of the configuration; users of the protocol should not make
         * any assumptions about it having any structure, or equality of the
         * identifier between different streams.
         * </pre>
         *
         * <code>string id = 1;</code>
         * @return The id.
         */
        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 of the configuration; users of the protocol should not make
         * any assumptions about it having any structure, or equality of the
         * identifier between different streams.
         * </pre>
         *
         * <code>string id = 1;</code>
         * @return The bytes for id.
         */
        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 of the configuration; users of the protocol should not make
         * any assumptions about it having any structure, or equality of the
         * identifier between different streams.
         * </pre>
         *
         * <code>string id = 1;</code>
         * @param value The id to set.
         * @return This builder for chaining.
         */
        public Builder setId(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          id_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Identifier of the configuration; users of the protocol should not make
         * any assumptions about it having any structure, or equality of the
         * identifier between different streams.
         * </pre>
         *
         * <code>string id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearId() {
          id_ = getDefaultInstance().getId();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Identifier of the configuration; users of the protocol should not make
         * any assumptions about it having any structure, or equality of the
         * identifier between different streams.
         * </pre>
         *
         * <code>string id = 1;</code>
         * @param value The bytes for id to set.
         * @return This builder for chaining.
         */
        public Builder setIdBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          id_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.ConfigurationId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.ConfigurationId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface TargetCompletedIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.TargetCompletedId)
        com.google.protobuf.MessageOrBuilder {

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

      /**
       * <pre>
       * The configuration for which the target was built.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
       * @return Whether the configuration field is set.
       */
      boolean hasConfiguration();
      /**
       * <pre>
       * The configuration for which the target was built.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
       * @return The configuration.
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration();
      /**
       * <pre>
       * The configuration for which the target was built.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder();

      /**
       * <pre>
       * If empty, the id refers to the completion of the target. If not-empty,
       * the id refers to the completion of an aspect applied to the (already
       * completed) target.
       * For example, when building an apple_binary that depends on proto_library
       * "//:foo_proto", there will be two TargetCompleted events for
       * "//:foo_proto":
       * 1. An event with an empty aspect, corresponding to actions producing
       * language-agnostic outputs from the proto_library; and
       * 2. An event with aspect "ObjcProtoAspect", corresponding to Objective-C
       * code generation.
       * </pre>
       *
       * <code>string aspect = 2;</code>
       * @return The aspect.
       */
      java.lang.String getAspect();
      /**
       * <pre>
       * If empty, the id refers to the completion of the target. If not-empty,
       * the id refers to the completion of an aspect applied to the (already
       * completed) target.
       * For example, when building an apple_binary that depends on proto_library
       * "//:foo_proto", there will be two TargetCompleted events for
       * "//:foo_proto":
       * 1. An event with an empty aspect, corresponding to actions producing
       * language-agnostic outputs from the proto_library; and
       * 2. An event with aspect "ObjcProtoAspect", corresponding to Objective-C
       * code generation.
       * </pre>
       *
       * <code>string aspect = 2;</code>
       * @return The bytes for aspect.
       */
      com.google.protobuf.ByteString
          getAspectBytes();
    }
    /**
     * <pre>
     * Identifier of an event indicating that a target was built completely; this
     * does not include running the test if the target is a test target.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.TargetCompletedId}
     */
    public static final class TargetCompletedId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.TargetCompletedId)
        TargetCompletedIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use TargetCompletedId.newBuilder() to construct.
      private TargetCompletedId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private TargetCompletedId() {
        label_ = "";
        aspect_ = "";
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TargetCompletedId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TargetCompletedId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId.Builder.class);
      }

      public static final int LABEL_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object label_ = "";
      /**
       * <code>string label = 1;</code>
       * @return The label.
       */
      @java.lang.Override
      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;
        }
      }
      /**
       * <code>string label = 1;</code>
       * @return The bytes for label.
       */
      @java.lang.Override
      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 CONFIGURATION_FIELD_NUMBER = 3;
      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId configuration_;
      /**
       * <pre>
       * The configuration for which the target was built.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
       * @return Whether the configuration field is set.
       */
      @java.lang.Override
      public boolean hasConfiguration() {
        return configuration_ != null;
      }
      /**
       * <pre>
       * The configuration for which the target was built.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
       * @return The configuration.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration() {
        return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
      }
      /**
       * <pre>
       * The configuration for which the target was built.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder() {
        return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
      }

      public static final int ASPECT_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private volatile java.lang.Object aspect_ = "";
      /**
       * <pre>
       * If empty, the id refers to the completion of the target. If not-empty,
       * the id refers to the completion of an aspect applied to the (already
       * completed) target.
       * For example, when building an apple_binary that depends on proto_library
       * "//:foo_proto", there will be two TargetCompleted events for
       * "//:foo_proto":
       * 1. An event with an empty aspect, corresponding to actions producing
       * language-agnostic outputs from the proto_library; and
       * 2. An event with aspect "ObjcProtoAspect", corresponding to Objective-C
       * code generation.
       * </pre>
       *
       * <code>string aspect = 2;</code>
       * @return The aspect.
       */
      @java.lang.Override
      public java.lang.String getAspect() {
        java.lang.Object ref = aspect_;
        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();
          aspect_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * If empty, the id refers to the completion of the target. If not-empty,
       * the id refers to the completion of an aspect applied to the (already
       * completed) target.
       * For example, when building an apple_binary that depends on proto_library
       * "//:foo_proto", there will be two TargetCompleted events for
       * "//:foo_proto":
       * 1. An event with an empty aspect, corresponding to actions producing
       * language-agnostic outputs from the proto_library; and
       * 2. An event with aspect "ObjcProtoAspect", corresponding to Objective-C
       * code generation.
       * </pre>
       *
       * <code>string aspect = 2;</code>
       * @return The bytes for aspect.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getAspectBytes() {
        java.lang.Object ref = aspect_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          aspect_ = 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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(label_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, label_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(aspect_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, aspect_);
        }
        if (configuration_ != null) {
          output.writeMessage(3, getConfiguration());
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(label_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, label_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(aspect_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, aspect_);
        }
        if (configuration_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, getConfiguration());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (!getLabel()
            .equals(other.getLabel())) return false;
        if (hasConfiguration() != other.hasConfiguration()) return false;
        if (hasConfiguration()) {
          if (!getConfiguration()
              .equals(other.getConfiguration())) return false;
        }
        if (!getAspect()
            .equals(other.getAspect())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + LABEL_FIELD_NUMBER;
        hash = (53 * hash) + getLabel().hashCode();
        if (hasConfiguration()) {
          hash = (37 * hash) + CONFIGURATION_FIELD_NUMBER;
          hash = (53 * hash) + getConfiguration().hashCode();
        }
        hash = (37 * hash) + ASPECT_FIELD_NUMBER;
        hash = (53 * hash) + getAspect().hashCode();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId 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>
       * Identifier of an event indicating that a target was built completely; this
       * does not include running the test if the target is a test target.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.TargetCompletedId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.TargetCompletedId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TargetCompletedId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TargetCompletedId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          label_ = "";
          configuration_ = null;
          if (configurationBuilder_ != null) {
            configurationBuilder_.dispose();
            configurationBuilder_ = null;
          }
          aspect_ = "";
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TargetCompletedId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.label_ = label_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.configuration_ = configurationBuilder_ == null
                ? configuration_
                : configurationBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.aspect_ = aspect_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId.getDefaultInstance()) return this;
          if (!other.getLabel().isEmpty()) {
            label_ = other.label_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasConfiguration()) {
            mergeConfiguration(other.getConfiguration());
          }
          if (!other.getAspect().isEmpty()) {
            aspect_ = other.aspect_;
            bitField0_ |= 0x00000004;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  label_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  aspect_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 18
                case 26: {
                  input.readMessage(
                      getConfigurationFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000002;
                  break;
                } // case 26
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object label_ = "";
        /**
         * <code>string label = 1;</code>
         * @return The label.
         */
        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;
          }
        }
        /**
         * <code>string label = 1;</code>
         * @return The bytes for label.
         */
        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;
          }
        }
        /**
         * <code>string label = 1;</code>
         * @param value The label to set.
         * @return This builder for chaining.
         */
        public Builder setLabel(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          label_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>string label = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearLabel() {
          label_ = getDefaultInstance().getLabel();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>string label = 1;</code>
         * @param value The bytes for label to set.
         * @return This builder for chaining.
         */
        public Builder setLabelBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          label_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }

        private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId configuration_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder> configurationBuilder_;
        /**
         * <pre>
         * The configuration for which the target was built.
         * </pre>
         *
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
         * @return Whether the configuration field is set.
         */
        public boolean hasConfiguration() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         * The configuration for which the target was built.
         * </pre>
         *
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
         * @return The configuration.
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration() {
          if (configurationBuilder_ == null) {
            return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
          } else {
            return configurationBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         * The configuration for which the target was built.
         * </pre>
         *
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
         */
        public Builder setConfiguration(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId value) {
          if (configurationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            configuration_ = value;
          } else {
            configurationBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The configuration for which the target was built.
         * </pre>
         *
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
         */
        public Builder setConfiguration(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder builderForValue) {
          if (configurationBuilder_ == null) {
            configuration_ = builderForValue.build();
          } else {
            configurationBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The configuration for which the target was built.
         * </pre>
         *
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
         */
        public Builder mergeConfiguration(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId value) {
          if (configurationBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0) &&
              configuration_ != null &&
              configuration_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance()) {
              getConfigurationBuilder().mergeFrom(value);
            } else {
              configuration_ = value;
            }
          } else {
            configurationBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The configuration for which the target was built.
         * </pre>
         *
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
         */
        public Builder clearConfiguration() {
          bitField0_ = (bitField0_ & ~0x00000002);
          configuration_ = null;
          if (configurationBuilder_ != null) {
            configurationBuilder_.dispose();
            configurationBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The configuration for which the target was built.
         * </pre>
         *
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder getConfigurationBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getConfigurationFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * The configuration for which the target was built.
         * </pre>
         *
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder() {
          if (configurationBuilder_ != null) {
            return configurationBuilder_.getMessageOrBuilder();
          } else {
            return configuration_ == null ?
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
          }
        }
        /**
         * <pre>
         * The configuration for which the target was built.
         * </pre>
         *
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder> 
            getConfigurationFieldBuilder() {
          if (configurationBuilder_ == null) {
            configurationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder>(
                    getConfiguration(),
                    getParentForChildren(),
                    isClean());
            configuration_ = null;
          }
          return configurationBuilder_;
        }

        private java.lang.Object aspect_ = "";
        /**
         * <pre>
         * If empty, the id refers to the completion of the target. If not-empty,
         * the id refers to the completion of an aspect applied to the (already
         * completed) target.
         * For example, when building an apple_binary that depends on proto_library
         * "//:foo_proto", there will be two TargetCompleted events for
         * "//:foo_proto":
         * 1. An event with an empty aspect, corresponding to actions producing
         * language-agnostic outputs from the proto_library; and
         * 2. An event with aspect "ObjcProtoAspect", corresponding to Objective-C
         * code generation.
         * </pre>
         *
         * <code>string aspect = 2;</code>
         * @return The aspect.
         */
        public java.lang.String getAspect() {
          java.lang.Object ref = aspect_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            aspect_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * If empty, the id refers to the completion of the target. If not-empty,
         * the id refers to the completion of an aspect applied to the (already
         * completed) target.
         * For example, when building an apple_binary that depends on proto_library
         * "//:foo_proto", there will be two TargetCompleted events for
         * "//:foo_proto":
         * 1. An event with an empty aspect, corresponding to actions producing
         * language-agnostic outputs from the proto_library; and
         * 2. An event with aspect "ObjcProtoAspect", corresponding to Objective-C
         * code generation.
         * </pre>
         *
         * <code>string aspect = 2;</code>
         * @return The bytes for aspect.
         */
        public com.google.protobuf.ByteString
            getAspectBytes() {
          java.lang.Object ref = aspect_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            aspect_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * If empty, the id refers to the completion of the target. If not-empty,
         * the id refers to the completion of an aspect applied to the (already
         * completed) target.
         * For example, when building an apple_binary that depends on proto_library
         * "//:foo_proto", there will be two TargetCompleted events for
         * "//:foo_proto":
         * 1. An event with an empty aspect, corresponding to actions producing
         * language-agnostic outputs from the proto_library; and
         * 2. An event with aspect "ObjcProtoAspect", corresponding to Objective-C
         * code generation.
         * </pre>
         *
         * <code>string aspect = 2;</code>
         * @param value The aspect to set.
         * @return This builder for chaining.
         */
        public Builder setAspect(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          aspect_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * If empty, the id refers to the completion of the target. If not-empty,
         * the id refers to the completion of an aspect applied to the (already
         * completed) target.
         * For example, when building an apple_binary that depends on proto_library
         * "//:foo_proto", there will be two TargetCompleted events for
         * "//:foo_proto":
         * 1. An event with an empty aspect, corresponding to actions producing
         * language-agnostic outputs from the proto_library; and
         * 2. An event with aspect "ObjcProtoAspect", corresponding to Objective-C
         * code generation.
         * </pre>
         *
         * <code>string aspect = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearAspect() {
          aspect_ = getDefaultInstance().getAspect();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * If empty, the id refers to the completion of the target. If not-empty,
         * the id refers to the completion of an aspect applied to the (already
         * completed) target.
         * For example, when building an apple_binary that depends on proto_library
         * "//:foo_proto", there will be two TargetCompleted events for
         * "//:foo_proto":
         * 1. An event with an empty aspect, corresponding to actions producing
         * language-agnostic outputs from the proto_library; and
         * 2. An event with aspect "ObjcProtoAspect", corresponding to Objective-C
         * code generation.
         * </pre>
         *
         * <code>string aspect = 2;</code>
         * @param value The bytes for aspect to set.
         * @return This builder for chaining.
         */
        public Builder setAspectBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          aspect_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.TargetCompletedId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.TargetCompletedId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface ActionCompletedIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.ActionCompletedId)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>string primary_output = 1;</code>
       * @return The primaryOutput.
       */
      java.lang.String getPrimaryOutput();
      /**
       * <code>string primary_output = 1;</code>
       * @return The bytes for primaryOutput.
       */
      com.google.protobuf.ByteString
          getPrimaryOutputBytes();

      /**
       * <pre>
       * Optional, the label of the owner of the action, for reference.
       * </pre>
       *
       * <code>string label = 2;</code>
       * @return The label.
       */
      java.lang.String getLabel();
      /**
       * <pre>
       * Optional, the label of the owner of the action, for reference.
       * </pre>
       *
       * <code>string label = 2;</code>
       * @return The bytes for label.
       */
      com.google.protobuf.ByteString
          getLabelBytes();

      /**
       * <pre>
       * Optional, the id of the configuration of the action owner.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
       * @return Whether the configuration field is set.
       */
      boolean hasConfiguration();
      /**
       * <pre>
       * Optional, the id of the configuration of the action owner.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
       * @return The configuration.
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration();
      /**
       * <pre>
       * Optional, the id of the configuration of the action owner.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder();
    }
    /**
     * <pre>
     * Identifier of an event reporting that an action was completed (not all
     * actions are reported, only the ones that can be considered important;
     * this includes all failed actions).
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.ActionCompletedId}
     */
    public static final class ActionCompletedId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.ActionCompletedId)
        ActionCompletedIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ActionCompletedId.newBuilder() to construct.
      private ActionCompletedId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ActionCompletedId() {
        primaryOutput_ = "";
        label_ = "";
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ActionCompletedId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ActionCompletedId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId.Builder.class);
      }

      public static final int PRIMARY_OUTPUT_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object primaryOutput_ = "";
      /**
       * <code>string primary_output = 1;</code>
       * @return The primaryOutput.
       */
      @java.lang.Override
      public java.lang.String getPrimaryOutput() {
        java.lang.Object ref = primaryOutput_;
        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();
          primaryOutput_ = s;
          return s;
        }
      }
      /**
       * <code>string primary_output = 1;</code>
       * @return The bytes for primaryOutput.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getPrimaryOutputBytes() {
        java.lang.Object ref = primaryOutput_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          primaryOutput_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int LABEL_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private volatile java.lang.Object label_ = "";
      /**
       * <pre>
       * Optional, the label of the owner of the action, for reference.
       * </pre>
       *
       * <code>string label = 2;</code>
       * @return The label.
       */
      @java.lang.Override
      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>
       * Optional, the label of the owner of the action, for reference.
       * </pre>
       *
       * <code>string label = 2;</code>
       * @return The bytes for label.
       */
      @java.lang.Override
      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 CONFIGURATION_FIELD_NUMBER = 3;
      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId configuration_;
      /**
       * <pre>
       * Optional, the id of the configuration of the action owner.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
       * @return Whether the configuration field is set.
       */
      @java.lang.Override
      public boolean hasConfiguration() {
        return configuration_ != null;
      }
      /**
       * <pre>
       * Optional, the id of the configuration of the action owner.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
       * @return The configuration.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration() {
        return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
      }
      /**
       * <pre>
       * Optional, the id of the configuration of the action owner.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder() {
        return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(primaryOutput_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, primaryOutput_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(label_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, label_);
        }
        if (configuration_ != null) {
          output.writeMessage(3, getConfiguration());
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(primaryOutput_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, primaryOutput_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(label_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, label_);
        }
        if (configuration_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, getConfiguration());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (!getPrimaryOutput()
            .equals(other.getPrimaryOutput())) return false;
        if (!getLabel()
            .equals(other.getLabel())) return false;
        if (hasConfiguration() != other.hasConfiguration()) return false;
        if (hasConfiguration()) {
          if (!getConfiguration()
              .equals(other.getConfiguration())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + PRIMARY_OUTPUT_FIELD_NUMBER;
        hash = (53 * hash) + getPrimaryOutput().hashCode();
        hash = (37 * hash) + LABEL_FIELD_NUMBER;
        hash = (53 * hash) + getLabel().hashCode();
        if (hasConfiguration()) {
          hash = (37 * hash) + CONFIGURATION_FIELD_NUMBER;
          hash = (53 * hash) + getConfiguration().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId 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>
       * Identifier of an event reporting that an action was completed (not all
       * actions are reported, only the ones that can be considered important;
       * this includes all failed actions).
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.ActionCompletedId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.ActionCompletedId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ActionCompletedId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ActionCompletedId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          primaryOutput_ = "";
          label_ = "";
          configuration_ = null;
          if (configurationBuilder_ != null) {
            configurationBuilder_.dispose();
            configurationBuilder_ = null;
          }
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ActionCompletedId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.primaryOutput_ = primaryOutput_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.label_ = label_;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.configuration_ = configurationBuilder_ == null
                ? configuration_
                : configurationBuilder_.build();
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId.getDefaultInstance()) return this;
          if (!other.getPrimaryOutput().isEmpty()) {
            primaryOutput_ = other.primaryOutput_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (!other.getLabel().isEmpty()) {
            label_ = other.label_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          if (other.hasConfiguration()) {
            mergeConfiguration(other.getConfiguration());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  primaryOutput_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  label_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                case 26: {
                  input.readMessage(
                      getConfigurationFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000004;
                  break;
                } // case 26
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object primaryOutput_ = "";
        /**
         * <code>string primary_output = 1;</code>
         * @return The primaryOutput.
         */
        public java.lang.String getPrimaryOutput() {
          java.lang.Object ref = primaryOutput_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            primaryOutput_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>string primary_output = 1;</code>
         * @return The bytes for primaryOutput.
         */
        public com.google.protobuf.ByteString
            getPrimaryOutputBytes() {
          java.lang.Object ref = primaryOutput_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            primaryOutput_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>string primary_output = 1;</code>
         * @param value The primaryOutput to set.
         * @return This builder for chaining.
         */
        public Builder setPrimaryOutput(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          primaryOutput_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>string primary_output = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearPrimaryOutput() {
          primaryOutput_ = getDefaultInstance().getPrimaryOutput();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>string primary_output = 1;</code>
         * @param value The bytes for primaryOutput to set.
         * @return This builder for chaining.
         */
        public Builder setPrimaryOutputBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          primaryOutput_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }

        private java.lang.Object label_ = "";
        /**
         * <pre>
         * Optional, the label of the owner of the action, for reference.
         * </pre>
         *
         * <code>string label = 2;</code>
         * @return The label.
         */
        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>
         * Optional, the label of the owner of the action, for reference.
         * </pre>
         *
         * <code>string label = 2;</code>
         * @return The bytes for label.
         */
        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>
         * Optional, the label of the owner of the action, for reference.
         * </pre>
         *
         * <code>string label = 2;</code>
         * @param value The label to set.
         * @return This builder for chaining.
         */
        public Builder setLabel(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          label_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Optional, the label of the owner of the action, for reference.
         * </pre>
         *
         * <code>string label = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearLabel() {
          label_ = getDefaultInstance().getLabel();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Optional, the label of the owner of the action, for reference.
         * </pre>
         *
         * <code>string label = 2;</code>
         * @param value The bytes for label to set.
         * @return This builder for chaining.
         */
        public Builder setLabelBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          label_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }

        private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId configuration_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder> configurationBuilder_;
        /**
         * <pre>
         * Optional, the id of the configuration of the action owner.
         * </pre>
         *
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
         * @return Whether the configuration field is set.
         */
        public boolean hasConfiguration() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <pre>
         * Optional, the id of the configuration of the action owner.
         * </pre>
         *
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
         * @return The configuration.
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration() {
          if (configurationBuilder_ == null) {
            return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
          } else {
            return configurationBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         * Optional, the id of the configuration of the action owner.
         * </pre>
         *
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
         */
        public Builder setConfiguration(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId value) {
          if (configurationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            configuration_ = value;
          } else {
            configurationBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Optional, the id of the configuration of the action owner.
         * </pre>
         *
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
         */
        public Builder setConfiguration(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder builderForValue) {
          if (configurationBuilder_ == null) {
            configuration_ = builderForValue.build();
          } else {
            configurationBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Optional, the id of the configuration of the action owner.
         * </pre>
         *
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
         */
        public Builder mergeConfiguration(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId value) {
          if (configurationBuilder_ == null) {
            if (((bitField0_ & 0x00000004) != 0) &&
              configuration_ != null &&
              configuration_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance()) {
              getConfigurationBuilder().mergeFrom(value);
            } else {
              configuration_ = value;
            }
          } else {
            configurationBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Optional, the id of the configuration of the action owner.
         * </pre>
         *
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
         */
        public Builder clearConfiguration() {
          bitField0_ = (bitField0_ & ~0x00000004);
          configuration_ = null;
          if (configurationBuilder_ != null) {
            configurationBuilder_.dispose();
            configurationBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Optional, the id of the configuration of the action owner.
         * </pre>
         *
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder getConfigurationBuilder() {
          bitField0_ |= 0x00000004;
          onChanged();
          return getConfigurationFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Optional, the id of the configuration of the action owner.
         * </pre>
         *
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder() {
          if (configurationBuilder_ != null) {
            return configurationBuilder_.getMessageOrBuilder();
          } else {
            return configuration_ == null ?
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
          }
        }
        /**
         * <pre>
         * Optional, the id of the configuration of the action owner.
         * </pre>
         *
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 3;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder> 
            getConfigurationFieldBuilder() {
          if (configurationBuilder_ == null) {
            configurationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder>(
                    getConfiguration(),
                    getParentForChildren(),
                    isClean());
            configuration_ = null;
          }
          return configurationBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.ActionCompletedId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.ActionCompletedId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface UnconfiguredLabelIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.UnconfiguredLabelId)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>string label = 1;</code>
       * @return The label.
       */
      java.lang.String getLabel();
      /**
       * <code>string label = 1;</code>
       * @return The bytes for label.
       */
      com.google.protobuf.ByteString
          getLabelBytes();
    }
    /**
     * <pre>
     * Identifier of an event reporting an event associated with an unconfigured
     * label. Usually, this indicates a failure due to a missing input file. In
     * any case, it will report some form of error (i.e., the payload will be an
     * Aborted event); there are no regular events using this identifier. The
     * purpose of those events is to serve as the root cause of a failed target.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.UnconfiguredLabelId}
     */
    public static final class UnconfiguredLabelId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.UnconfiguredLabelId)
        UnconfiguredLabelIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use UnconfiguredLabelId.newBuilder() to construct.
      private UnconfiguredLabelId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private UnconfiguredLabelId() {
        label_ = "";
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_UnconfiguredLabelId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_UnconfiguredLabelId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId.Builder.class);
      }

      public static final int LABEL_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object label_ = "";
      /**
       * <code>string label = 1;</code>
       * @return The label.
       */
      @java.lang.Override
      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;
        }
      }
      /**
       * <code>string label = 1;</code>
       * @return The bytes for label.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getLabelBytes() {
        java.lang.Object ref = label_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          label_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(label_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, label_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(label_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, label_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (!getLabel()
            .equals(other.getLabel())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

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

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId 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>
       * Identifier of an event reporting an event associated with an unconfigured
       * label. Usually, this indicates a failure due to a missing input file. In
       * any case, it will report some form of error (i.e., the payload will be an
       * Aborted event); there are no regular events using this identifier. The
       * purpose of those events is to serve as the root cause of a failed target.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.UnconfiguredLabelId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.UnconfiguredLabelId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_UnconfiguredLabelId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_UnconfiguredLabelId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          label_ = "";
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_UnconfiguredLabelId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.label_ = label_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId.getDefaultInstance()) return this;
          if (!other.getLabel().isEmpty()) {
            label_ = other.label_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  label_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object label_ = "";
        /**
         * <code>string label = 1;</code>
         * @return The label.
         */
        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;
          }
        }
        /**
         * <code>string label = 1;</code>
         * @return The bytes for label.
         */
        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;
          }
        }
        /**
         * <code>string label = 1;</code>
         * @param value The label to set.
         * @return This builder for chaining.
         */
        public Builder setLabel(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          label_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>string label = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearLabel() {
          label_ = getDefaultInstance().getLabel();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>string label = 1;</code>
         * @param value The bytes for label to set.
         * @return This builder for chaining.
         */
        public Builder setLabelBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          label_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.UnconfiguredLabelId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.UnconfiguredLabelId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface ConfiguredLabelIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.ConfiguredLabelId)
        com.google.protobuf.MessageOrBuilder {

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

      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
       * @return Whether the configuration field is set.
       */
      boolean hasConfiguration();
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
       * @return The configuration.
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration();
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder();
    }
    /**
     * <pre>
     * Identifier of an event reporting an event associated with a configured
     * label, usually a visibility error. In any case, an event with such an
     * id will always report some form of error (i.e., the payload will be an
     * Aborted event); there are no regular events using this identifier.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.ConfiguredLabelId}
     */
    public static final class ConfiguredLabelId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.ConfiguredLabelId)
        ConfiguredLabelIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ConfiguredLabelId.newBuilder() to construct.
      private ConfiguredLabelId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ConfiguredLabelId() {
        label_ = "";
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ConfiguredLabelId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ConfiguredLabelId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId.Builder.class);
      }

      public static final int LABEL_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object label_ = "";
      /**
       * <code>string label = 1;</code>
       * @return The label.
       */
      @java.lang.Override
      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;
        }
      }
      /**
       * <code>string label = 1;</code>
       * @return The bytes for label.
       */
      @java.lang.Override
      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 CONFIGURATION_FIELD_NUMBER = 2;
      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId configuration_;
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
       * @return Whether the configuration field is set.
       */
      @java.lang.Override
      public boolean hasConfiguration() {
        return configuration_ != null;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
       * @return The configuration.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration() {
        return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder() {
        return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(label_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, label_);
        }
        if (configuration_ != null) {
          output.writeMessage(2, getConfiguration());
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(label_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, label_);
        }
        if (configuration_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getConfiguration());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (!getLabel()
            .equals(other.getLabel())) return false;
        if (hasConfiguration() != other.hasConfiguration()) return false;
        if (hasConfiguration()) {
          if (!getConfiguration()
              .equals(other.getConfiguration())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

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

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId 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>
       * Identifier of an event reporting an event associated with a configured
       * label, usually a visibility error. In any case, an event with such an
       * id will always report some form of error (i.e., the payload will be an
       * Aborted event); there are no regular events using this identifier.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.ConfiguredLabelId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.ConfiguredLabelId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ConfiguredLabelId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ConfiguredLabelId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          label_ = "";
          configuration_ = null;
          if (configurationBuilder_ != null) {
            configurationBuilder_.dispose();
            configurationBuilder_ = null;
          }
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ConfiguredLabelId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.label_ = label_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.configuration_ = configurationBuilder_ == null
                ? configuration_
                : configurationBuilder_.build();
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId.getDefaultInstance()) return this;
          if (!other.getLabel().isEmpty()) {
            label_ = other.label_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasConfiguration()) {
            mergeConfiguration(other.getConfiguration());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  label_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  input.readMessage(
                      getConfigurationFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object label_ = "";
        /**
         * <code>string label = 1;</code>
         * @return The label.
         */
        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;
          }
        }
        /**
         * <code>string label = 1;</code>
         * @return The bytes for label.
         */
        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;
          }
        }
        /**
         * <code>string label = 1;</code>
         * @param value The label to set.
         * @return This builder for chaining.
         */
        public Builder setLabel(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          label_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>string label = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearLabel() {
          label_ = getDefaultInstance().getLabel();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>string label = 1;</code>
         * @param value The bytes for label to set.
         * @return This builder for chaining.
         */
        public Builder setLabelBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          label_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }

        private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId configuration_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder> configurationBuilder_;
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         * @return Whether the configuration field is set.
         */
        public boolean hasConfiguration() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         * @return The configuration.
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration() {
          if (configurationBuilder_ == null) {
            return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
          } else {
            return configurationBuilder_.getMessage();
          }
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        public Builder setConfiguration(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId value) {
          if (configurationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            configuration_ = value;
          } else {
            configurationBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        public Builder setConfiguration(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder builderForValue) {
          if (configurationBuilder_ == null) {
            configuration_ = builderForValue.build();
          } else {
            configurationBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        public Builder mergeConfiguration(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId value) {
          if (configurationBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0) &&
              configuration_ != null &&
              configuration_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance()) {
              getConfigurationBuilder().mergeFrom(value);
            } else {
              configuration_ = value;
            }
          } else {
            configurationBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        public Builder clearConfiguration() {
          bitField0_ = (bitField0_ & ~0x00000002);
          configuration_ = null;
          if (configurationBuilder_ != null) {
            configurationBuilder_.dispose();
            configurationBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder getConfigurationBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getConfigurationFieldBuilder().getBuilder();
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder() {
          if (configurationBuilder_ != null) {
            return configurationBuilder_.getMessageOrBuilder();
          } else {
            return configuration_ == null ?
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
          }
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder> 
            getConfigurationFieldBuilder() {
          if (configurationBuilder_ == null) {
            configurationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder>(
                    getConfiguration(),
                    getParentForChildren(),
                    isClean());
            configuration_ = null;
          }
          return configurationBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.ConfiguredLabelId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.ConfiguredLabelId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface TestResultIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.TestResultId)
        com.google.protobuf.MessageOrBuilder {

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

      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 5;</code>
       * @return Whether the configuration field is set.
       */
      boolean hasConfiguration();
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 5;</code>
       * @return The configuration.
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration();
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 5;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder();

      /**
       * <code>int32 run = 2;</code>
       * @return The run.
       */
      int getRun();

      /**
       * <code>int32 shard = 3;</code>
       * @return The shard.
       */
      int getShard();

      /**
       * <code>int32 attempt = 4;</code>
       * @return The attempt.
       */
      int getAttempt();
    }
    /**
     * <pre>
     * Identifier of an event reporting on an individual test run. The label
     * identifies the test that is reported about, the remaining fields are
     * in such a way as to uniquely identify the action within a build. In fact,
     * attempts for the same test, run, shard triple are counted sequentially,
     * starting with 1.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.TestResultId}
     */
    public static final class TestResultId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.TestResultId)
        TestResultIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use TestResultId.newBuilder() to construct.
      private TestResultId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private TestResultId() {
        label_ = "";
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TestResultId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TestResultId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId.Builder.class);
      }

      public static final int LABEL_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object label_ = "";
      /**
       * <code>string label = 1;</code>
       * @return The label.
       */
      @java.lang.Override
      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;
        }
      }
      /**
       * <code>string label = 1;</code>
       * @return The bytes for label.
       */
      @java.lang.Override
      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 CONFIGURATION_FIELD_NUMBER = 5;
      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId configuration_;
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 5;</code>
       * @return Whether the configuration field is set.
       */
      @java.lang.Override
      public boolean hasConfiguration() {
        return configuration_ != null;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 5;</code>
       * @return The configuration.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration() {
        return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 5;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder() {
        return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
      }

      public static final int RUN_FIELD_NUMBER = 2;
      private int run_ = 0;
      /**
       * <code>int32 run = 2;</code>
       * @return The run.
       */
      @java.lang.Override
      public int getRun() {
        return run_;
      }

      public static final int SHARD_FIELD_NUMBER = 3;
      private int shard_ = 0;
      /**
       * <code>int32 shard = 3;</code>
       * @return The shard.
       */
      @java.lang.Override
      public int getShard() {
        return shard_;
      }

      public static final int ATTEMPT_FIELD_NUMBER = 4;
      private int attempt_ = 0;
      /**
       * <code>int32 attempt = 4;</code>
       * @return The attempt.
       */
      @java.lang.Override
      public int getAttempt() {
        return attempt_;
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(label_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, label_);
        }
        if (run_ != 0) {
          output.writeInt32(2, run_);
        }
        if (shard_ != 0) {
          output.writeInt32(3, shard_);
        }
        if (attempt_ != 0) {
          output.writeInt32(4, attempt_);
        }
        if (configuration_ != null) {
          output.writeMessage(5, getConfiguration());
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(label_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, label_);
        }
        if (run_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, run_);
        }
        if (shard_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(3, shard_);
        }
        if (attempt_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(4, attempt_);
        }
        if (configuration_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, getConfiguration());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (!getLabel()
            .equals(other.getLabel())) return false;
        if (hasConfiguration() != other.hasConfiguration()) return false;
        if (hasConfiguration()) {
          if (!getConfiguration()
              .equals(other.getConfiguration())) return false;
        }
        if (getRun()
            != other.getRun()) return false;
        if (getShard()
            != other.getShard()) return false;
        if (getAttempt()
            != other.getAttempt()) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + LABEL_FIELD_NUMBER;
        hash = (53 * hash) + getLabel().hashCode();
        if (hasConfiguration()) {
          hash = (37 * hash) + CONFIGURATION_FIELD_NUMBER;
          hash = (53 * hash) + getConfiguration().hashCode();
        }
        hash = (37 * hash) + RUN_FIELD_NUMBER;
        hash = (53 * hash) + getRun();
        hash = (37 * hash) + SHARD_FIELD_NUMBER;
        hash = (53 * hash) + getShard();
        hash = (37 * hash) + ATTEMPT_FIELD_NUMBER;
        hash = (53 * hash) + getAttempt();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId 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>
       * Identifier of an event reporting on an individual test run. The label
       * identifies the test that is reported about, the remaining fields are
       * in such a way as to uniquely identify the action within a build. In fact,
       * attempts for the same test, run, shard triple are counted sequentially,
       * starting with 1.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.TestResultId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.TestResultId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TestResultId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TestResultId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          label_ = "";
          configuration_ = null;
          if (configurationBuilder_ != null) {
            configurationBuilder_.dispose();
            configurationBuilder_ = null;
          }
          run_ = 0;
          shard_ = 0;
          attempt_ = 0;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TestResultId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.label_ = label_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.configuration_ = configurationBuilder_ == null
                ? configuration_
                : configurationBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.run_ = run_;
          }
          if (((from_bitField0_ & 0x00000008) != 0)) {
            result.shard_ = shard_;
          }
          if (((from_bitField0_ & 0x00000010) != 0)) {
            result.attempt_ = attempt_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId.getDefaultInstance()) return this;
          if (!other.getLabel().isEmpty()) {
            label_ = other.label_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasConfiguration()) {
            mergeConfiguration(other.getConfiguration());
          }
          if (other.getRun() != 0) {
            setRun(other.getRun());
          }
          if (other.getShard() != 0) {
            setShard(other.getShard());
          }
          if (other.getAttempt() != 0) {
            setAttempt(other.getAttempt());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  label_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 16: {
                  run_ = input.readInt32();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 16
                case 24: {
                  shard_ = input.readInt32();
                  bitField0_ |= 0x00000008;
                  break;
                } // case 24
                case 32: {
                  attempt_ = input.readInt32();
                  bitField0_ |= 0x00000010;
                  break;
                } // case 32
                case 42: {
                  input.readMessage(
                      getConfigurationFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000002;
                  break;
                } // case 42
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object label_ = "";
        /**
         * <code>string label = 1;</code>
         * @return The label.
         */
        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;
          }
        }
        /**
         * <code>string label = 1;</code>
         * @return The bytes for label.
         */
        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;
          }
        }
        /**
         * <code>string label = 1;</code>
         * @param value The label to set.
         * @return This builder for chaining.
         */
        public Builder setLabel(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          label_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>string label = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearLabel() {
          label_ = getDefaultInstance().getLabel();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>string label = 1;</code>
         * @param value The bytes for label to set.
         * @return This builder for chaining.
         */
        public Builder setLabelBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          label_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }

        private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId configuration_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder> configurationBuilder_;
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 5;</code>
         * @return Whether the configuration field is set.
         */
        public boolean hasConfiguration() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 5;</code>
         * @return The configuration.
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration() {
          if (configurationBuilder_ == null) {
            return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
          } else {
            return configurationBuilder_.getMessage();
          }
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 5;</code>
         */
        public Builder setConfiguration(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId value) {
          if (configurationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            configuration_ = value;
          } else {
            configurationBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 5;</code>
         */
        public Builder setConfiguration(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder builderForValue) {
          if (configurationBuilder_ == null) {
            configuration_ = builderForValue.build();
          } else {
            configurationBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 5;</code>
         */
        public Builder mergeConfiguration(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId value) {
          if (configurationBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0) &&
              configuration_ != null &&
              configuration_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance()) {
              getConfigurationBuilder().mergeFrom(value);
            } else {
              configuration_ = value;
            }
          } else {
            configurationBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 5;</code>
         */
        public Builder clearConfiguration() {
          bitField0_ = (bitField0_ & ~0x00000002);
          configuration_ = null;
          if (configurationBuilder_ != null) {
            configurationBuilder_.dispose();
            configurationBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 5;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder getConfigurationBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getConfigurationFieldBuilder().getBuilder();
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 5;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder() {
          if (configurationBuilder_ != null) {
            return configurationBuilder_.getMessageOrBuilder();
          } else {
            return configuration_ == null ?
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
          }
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 5;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder> 
            getConfigurationFieldBuilder() {
          if (configurationBuilder_ == null) {
            configurationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder>(
                    getConfiguration(),
                    getParentForChildren(),
                    isClean());
            configuration_ = null;
          }
          return configurationBuilder_;
        }

        private int run_ ;
        /**
         * <code>int32 run = 2;</code>
         * @return The run.
         */
        @java.lang.Override
        public int getRun() {
          return run_;
        }
        /**
         * <code>int32 run = 2;</code>
         * @param value The run to set.
         * @return This builder for chaining.
         */
        public Builder setRun(int value) {
          
          run_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <code>int32 run = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearRun() {
          bitField0_ = (bitField0_ & ~0x00000004);
          run_ = 0;
          onChanged();
          return this;
        }

        private int shard_ ;
        /**
         * <code>int32 shard = 3;</code>
         * @return The shard.
         */
        @java.lang.Override
        public int getShard() {
          return shard_;
        }
        /**
         * <code>int32 shard = 3;</code>
         * @param value The shard to set.
         * @return This builder for chaining.
         */
        public Builder setShard(int value) {
          
          shard_ = value;
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
        /**
         * <code>int32 shard = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearShard() {
          bitField0_ = (bitField0_ & ~0x00000008);
          shard_ = 0;
          onChanged();
          return this;
        }

        private int attempt_ ;
        /**
         * <code>int32 attempt = 4;</code>
         * @return The attempt.
         */
        @java.lang.Override
        public int getAttempt() {
          return attempt_;
        }
        /**
         * <code>int32 attempt = 4;</code>
         * @param value The attempt to set.
         * @return This builder for chaining.
         */
        public Builder setAttempt(int value) {
          
          attempt_ = value;
          bitField0_ |= 0x00000010;
          onChanged();
          return this;
        }
        /**
         * <code>int32 attempt = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearAttempt() {
          bitField0_ = (bitField0_ & ~0x00000010);
          attempt_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.TestResultId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.TestResultId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface TestSummaryIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.TestSummaryId)
        com.google.protobuf.MessageOrBuilder {

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

      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
       * @return Whether the configuration field is set.
       */
      boolean hasConfiguration();
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
       * @return The configuration.
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration();
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder();
    }
    /**
     * <pre>
     * Identifier of an event reporting the summary of a test.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.TestSummaryId}
     */
    public static final class TestSummaryId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.TestSummaryId)
        TestSummaryIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use TestSummaryId.newBuilder() to construct.
      private TestSummaryId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private TestSummaryId() {
        label_ = "";
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TestSummaryId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TestSummaryId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId.Builder.class);
      }

      public static final int LABEL_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object label_ = "";
      /**
       * <code>string label = 1;</code>
       * @return The label.
       */
      @java.lang.Override
      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;
        }
      }
      /**
       * <code>string label = 1;</code>
       * @return The bytes for label.
       */
      @java.lang.Override
      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 CONFIGURATION_FIELD_NUMBER = 2;
      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId configuration_;
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
       * @return Whether the configuration field is set.
       */
      @java.lang.Override
      public boolean hasConfiguration() {
        return configuration_ != null;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
       * @return The configuration.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration() {
        return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder() {
        return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(label_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, label_);
        }
        if (configuration_ != null) {
          output.writeMessage(2, getConfiguration());
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(label_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, label_);
        }
        if (configuration_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getConfiguration());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (!getLabel()
            .equals(other.getLabel())) return false;
        if (hasConfiguration() != other.hasConfiguration()) return false;
        if (hasConfiguration()) {
          if (!getConfiguration()
              .equals(other.getConfiguration())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

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

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId 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>
       * Identifier of an event reporting the summary of a test.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.TestSummaryId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.TestSummaryId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TestSummaryId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TestSummaryId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          label_ = "";
          configuration_ = null;
          if (configurationBuilder_ != null) {
            configurationBuilder_.dispose();
            configurationBuilder_ = null;
          }
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TestSummaryId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.label_ = label_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.configuration_ = configurationBuilder_ == null
                ? configuration_
                : configurationBuilder_.build();
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId.getDefaultInstance()) return this;
          if (!other.getLabel().isEmpty()) {
            label_ = other.label_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasConfiguration()) {
            mergeConfiguration(other.getConfiguration());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  label_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  input.readMessage(
                      getConfigurationFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object label_ = "";
        /**
         * <code>string label = 1;</code>
         * @return The label.
         */
        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;
          }
        }
        /**
         * <code>string label = 1;</code>
         * @return The bytes for label.
         */
        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;
          }
        }
        /**
         * <code>string label = 1;</code>
         * @param value The label to set.
         * @return This builder for chaining.
         */
        public Builder setLabel(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          label_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>string label = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearLabel() {
          label_ = getDefaultInstance().getLabel();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>string label = 1;</code>
         * @param value The bytes for label to set.
         * @return This builder for chaining.
         */
        public Builder setLabelBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          label_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }

        private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId configuration_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder> configurationBuilder_;
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         * @return Whether the configuration field is set.
         */
        public boolean hasConfiguration() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         * @return The configuration.
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration() {
          if (configurationBuilder_ == null) {
            return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
          } else {
            return configurationBuilder_.getMessage();
          }
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        public Builder setConfiguration(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId value) {
          if (configurationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            configuration_ = value;
          } else {
            configurationBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        public Builder setConfiguration(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder builderForValue) {
          if (configurationBuilder_ == null) {
            configuration_ = builderForValue.build();
          } else {
            configurationBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        public Builder mergeConfiguration(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId value) {
          if (configurationBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0) &&
              configuration_ != null &&
              configuration_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance()) {
              getConfigurationBuilder().mergeFrom(value);
            } else {
              configuration_ = value;
            }
          } else {
            configurationBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        public Builder clearConfiguration() {
          bitField0_ = (bitField0_ & ~0x00000002);
          configuration_ = null;
          if (configurationBuilder_ != null) {
            configurationBuilder_.dispose();
            configurationBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder getConfigurationBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getConfigurationFieldBuilder().getBuilder();
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder() {
          if (configurationBuilder_ != null) {
            return configurationBuilder_.getMessageOrBuilder();
          } else {
            return configuration_ == null ?
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
          }
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder> 
            getConfigurationFieldBuilder() {
          if (configurationBuilder_ == null) {
            configurationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder>(
                    getConfiguration(),
                    getParentForChildren(),
                    isClean());
            configuration_ = null;
          }
          return configurationBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.TestSummaryId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.TestSummaryId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface TargetSummaryIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.TargetSummaryId)
        com.google.protobuf.MessageOrBuilder {

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

      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
       * @return Whether the configuration field is set.
       */
      boolean hasConfiguration();
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
       * @return The configuration.
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration();
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder();
    }
    /**
     * <pre>
     * Identifier of an event reporting the summary of a target.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.TargetSummaryId}
     */
    public static final class TargetSummaryId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.TargetSummaryId)
        TargetSummaryIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use TargetSummaryId.newBuilder() to construct.
      private TargetSummaryId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private TargetSummaryId() {
        label_ = "";
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TargetSummaryId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TargetSummaryId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId.Builder.class);
      }

      public static final int LABEL_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object label_ = "";
      /**
       * <code>string label = 1;</code>
       * @return The label.
       */
      @java.lang.Override
      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;
        }
      }
      /**
       * <code>string label = 1;</code>
       * @return The bytes for label.
       */
      @java.lang.Override
      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 CONFIGURATION_FIELD_NUMBER = 2;
      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId configuration_;
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
       * @return Whether the configuration field is set.
       */
      @java.lang.Override
      public boolean hasConfiguration() {
        return configuration_ != null;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
       * @return The configuration.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration() {
        return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder() {
        return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(label_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, label_);
        }
        if (configuration_ != null) {
          output.writeMessage(2, getConfiguration());
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(label_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, label_);
        }
        if (configuration_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getConfiguration());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (!getLabel()
            .equals(other.getLabel())) return false;
        if (hasConfiguration() != other.hasConfiguration()) return false;
        if (hasConfiguration()) {
          if (!getConfiguration()
              .equals(other.getConfiguration())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

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

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId 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>
       * Identifier of an event reporting the summary of a target.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.TargetSummaryId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.TargetSummaryId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TargetSummaryId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TargetSummaryId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          label_ = "";
          configuration_ = null;
          if (configurationBuilder_ != null) {
            configurationBuilder_.dispose();
            configurationBuilder_ = null;
          }
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_TargetSummaryId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.label_ = label_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.configuration_ = configurationBuilder_ == null
                ? configuration_
                : configurationBuilder_.build();
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId.getDefaultInstance()) return this;
          if (!other.getLabel().isEmpty()) {
            label_ = other.label_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasConfiguration()) {
            mergeConfiguration(other.getConfiguration());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  label_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  input.readMessage(
                      getConfigurationFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object label_ = "";
        /**
         * <code>string label = 1;</code>
         * @return The label.
         */
        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;
          }
        }
        /**
         * <code>string label = 1;</code>
         * @return The bytes for label.
         */
        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;
          }
        }
        /**
         * <code>string label = 1;</code>
         * @param value The label to set.
         * @return This builder for chaining.
         */
        public Builder setLabel(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          label_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>string label = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearLabel() {
          label_ = getDefaultInstance().getLabel();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>string label = 1;</code>
         * @param value The bytes for label to set.
         * @return This builder for chaining.
         */
        public Builder setLabelBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          label_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }

        private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId configuration_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder> configurationBuilder_;
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         * @return Whether the configuration field is set.
         */
        public boolean hasConfiguration() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         * @return The configuration.
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration() {
          if (configurationBuilder_ == null) {
            return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
          } else {
            return configurationBuilder_.getMessage();
          }
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        public Builder setConfiguration(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId value) {
          if (configurationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            configuration_ = value;
          } else {
            configurationBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        public Builder setConfiguration(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder builderForValue) {
          if (configurationBuilder_ == null) {
            configuration_ = builderForValue.build();
          } else {
            configurationBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        public Builder mergeConfiguration(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId value) {
          if (configurationBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0) &&
              configuration_ != null &&
              configuration_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance()) {
              getConfigurationBuilder().mergeFrom(value);
            } else {
              configuration_ = value;
            }
          } else {
            configurationBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        public Builder clearConfiguration() {
          bitField0_ = (bitField0_ & ~0x00000002);
          configuration_ = null;
          if (configurationBuilder_ != null) {
            configurationBuilder_.dispose();
            configurationBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder getConfigurationBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getConfigurationFieldBuilder().getBuilder();
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder() {
          if (configurationBuilder_ != null) {
            return configurationBuilder_.getMessageOrBuilder();
          } else {
            return configuration_ == null ?
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
          }
        }
        /**
         * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder> 
            getConfigurationFieldBuilder() {
          if (configurationBuilder_ == null) {
            configurationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder>(
                    getConfiguration(),
                    getParentForChildren(),
                    isClean());
            configuration_ = null;
          }
          return configurationBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.TargetSummaryId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.TargetSummaryId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface BuildFinishedIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.BuildFinishedId)
        com.google.protobuf.MessageOrBuilder {
    }
    /**
     * <pre>
     * Identifier of the BuildFinished event, indicating the end of a build.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.BuildFinishedId}
     */
    public static final class BuildFinishedId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.BuildFinishedId)
        BuildFinishedIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use BuildFinishedId.newBuilder() to construct.
      private BuildFinishedId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private BuildFinishedId() {
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildFinishedId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildFinishedId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId.Builder.class);
      }

      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 {
        getUnknownFields().writeTo(output);
      }

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

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

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

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

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId 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>
       * Identifier of the BuildFinished event, indicating the end of a build.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.BuildFinishedId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.BuildFinishedId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildFinishedId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildFinishedId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildFinishedId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId(this);
          onBuilt();
          return result;
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId.getDefaultInstance()) return this;
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.BuildFinishedId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.BuildFinishedId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface BuildToolLogsIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.BuildToolLogsId)
        com.google.protobuf.MessageOrBuilder {
    }
    /**
     * <pre>
     * Identifier of an event providing additional logs/statistics after
     * completion of the build.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.BuildToolLogsId}
     */
    public static final class BuildToolLogsId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.BuildToolLogsId)
        BuildToolLogsIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use BuildToolLogsId.newBuilder() to construct.
      private BuildToolLogsId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private BuildToolLogsId() {
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildToolLogsId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildToolLogsId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId.Builder.class);
      }

      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 {
        getUnknownFields().writeTo(output);
      }

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

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

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

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

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId 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>
       * Identifier of an event providing additional logs/statistics after
       * completion of the build.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.BuildToolLogsId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.BuildToolLogsId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildToolLogsId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildToolLogsId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildToolLogsId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId(this);
          onBuilt();
          return result;
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId.getDefaultInstance()) return this;
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.BuildToolLogsId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.BuildToolLogsId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface BuildMetricsIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.BuildMetricsId)
        com.google.protobuf.MessageOrBuilder {
    }
    /**
     * <pre>
     * Identifier of an event providing build metrics after completion
     * of the build.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.BuildMetricsId}
     */
    public static final class BuildMetricsId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.BuildMetricsId)
        BuildMetricsIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use BuildMetricsId.newBuilder() to construct.
      private BuildMetricsId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private BuildMetricsId() {
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildMetricsId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildMetricsId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId.Builder.class);
      }

      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 {
        getUnknownFields().writeTo(output);
      }

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

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

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

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

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId 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>
       * Identifier of an event providing build metrics after completion
       * of the build.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.BuildMetricsId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.BuildMetricsId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildMetricsId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildMetricsId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_BuildMetricsId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId(this);
          onBuilt();
          return result;
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId.getDefaultInstance()) return this;
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.BuildMetricsId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.BuildMetricsId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface ConvenienceSymlinksIdentifiedIdOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId)
        com.google.protobuf.MessageOrBuilder {
    }
    /**
     * <pre>
     * Identifier of an event providing convenience symlinks information.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId}
     */
    public static final class ConvenienceSymlinksIdentifiedId extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId)
        ConvenienceSymlinksIdentifiedIdOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ConvenienceSymlinksIdentifiedId.newBuilder() to construct.
      private ConvenienceSymlinksIdentifiedId(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ConvenienceSymlinksIdentifiedId() {
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ConvenienceSymlinksIdentifiedId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ConvenienceSymlinksIdentifiedId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId.Builder.class);
      }

      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 {
        getUnknownFields().writeTo(output);
      }

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

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

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

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

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId 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.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId 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>
       * Identifier of an event providing convenience symlinks information.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedIdOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ConvenienceSymlinksIdentifiedId_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ConvenienceSymlinksIdentifiedId_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_ConvenienceSymlinksIdentifiedId_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId(this);
          onBuilt();
          return result;
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId.getDefaultInstance()) return this;
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int idCase_ = 0;
    private java.lang.Object id_;
    public enum IdCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      UNKNOWN(1),
      PROGRESS(2),
      STARTED(3),
      UNSTRUCTURED_COMMAND_LINE(11),
      STRUCTURED_COMMAND_LINE(18),
      WORKSPACE_STATUS(14),
      OPTIONS_PARSED(12),
      FETCH(17),
      CONFIGURATION(15),
      TARGET_CONFIGURED(16),
      PATTERN(4),
      PATTERN_SKIPPED(10),
      NAMED_SET(13),
      TARGET_COMPLETED(5),
      ACTION_COMPLETED(6),
      UNCONFIGURED_LABEL(19),
      CONFIGURED_LABEL(21),
      TEST_RESULT(8),
      TEST_SUMMARY(7),
      TARGET_SUMMARY(26),
      BUILD_FINISHED(9),
      BUILD_TOOL_LOGS(20),
      BUILD_METRICS(22),
      WORKSPACE(23),
      BUILD_METADATA(24),
      CONVENIENCE_SYMLINKS_IDENTIFIED(25),
      ID_NOT_SET(0);
      private final int value;
      private IdCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static IdCase valueOf(int value) {
        return forNumber(value);
      }

      public static IdCase forNumber(int value) {
        switch (value) {
          case 1: return UNKNOWN;
          case 2: return PROGRESS;
          case 3: return STARTED;
          case 11: return UNSTRUCTURED_COMMAND_LINE;
          case 18: return STRUCTURED_COMMAND_LINE;
          case 14: return WORKSPACE_STATUS;
          case 12: return OPTIONS_PARSED;
          case 17: return FETCH;
          case 15: return CONFIGURATION;
          case 16: return TARGET_CONFIGURED;
          case 4: return PATTERN;
          case 10: return PATTERN_SKIPPED;
          case 13: return NAMED_SET;
          case 5: return TARGET_COMPLETED;
          case 6: return ACTION_COMPLETED;
          case 19: return UNCONFIGURED_LABEL;
          case 21: return CONFIGURED_LABEL;
          case 8: return TEST_RESULT;
          case 7: return TEST_SUMMARY;
          case 26: return TARGET_SUMMARY;
          case 9: return BUILD_FINISHED;
          case 20: return BUILD_TOOL_LOGS;
          case 22: return BUILD_METRICS;
          case 23: return WORKSPACE;
          case 24: return BUILD_METADATA;
          case 25: return CONVENIENCE_SYMLINKS_IDENTIFIED;
          case 0: return ID_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public IdCase
    getIdCase() {
      return IdCase.forNumber(
          idCase_);
    }

    public static final int UNKNOWN_FIELD_NUMBER = 1;
    /**
     * <code>.build_event_stream.BuildEventId.UnknownBuildEventId unknown = 1;</code>
     * @return Whether the unknown field is set.
     */
    @java.lang.Override
    public boolean hasUnknown() {
      return idCase_ == 1;
    }
    /**
     * <code>.build_event_stream.BuildEventId.UnknownBuildEventId unknown = 1;</code>
     * @return The unknown.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId getUnknown() {
      if (idCase_ == 1) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.UnknownBuildEventId unknown = 1;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventIdOrBuilder getUnknownOrBuilder() {
      if (idCase_ == 1) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId.getDefaultInstance();
    }

    public static final int PROGRESS_FIELD_NUMBER = 2;
    /**
     * <code>.build_event_stream.BuildEventId.ProgressId progress = 2;</code>
     * @return Whether the progress field is set.
     */
    @java.lang.Override
    public boolean hasProgress() {
      return idCase_ == 2;
    }
    /**
     * <code>.build_event_stream.BuildEventId.ProgressId progress = 2;</code>
     * @return The progress.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId getProgress() {
      if (idCase_ == 2) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.ProgressId progress = 2;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressIdOrBuilder getProgressOrBuilder() {
      if (idCase_ == 2) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId.getDefaultInstance();
    }

    public static final int STARTED_FIELD_NUMBER = 3;
    /**
     * <code>.build_event_stream.BuildEventId.BuildStartedId started = 3;</code>
     * @return Whether the started field is set.
     */
    @java.lang.Override
    public boolean hasStarted() {
      return idCase_ == 3;
    }
    /**
     * <code>.build_event_stream.BuildEventId.BuildStartedId started = 3;</code>
     * @return The started.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId getStarted() {
      if (idCase_ == 3) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.BuildStartedId started = 3;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedIdOrBuilder getStartedOrBuilder() {
      if (idCase_ == 3) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId.getDefaultInstance();
    }

    public static final int UNSTRUCTURED_COMMAND_LINE_FIELD_NUMBER = 11;
    /**
     * <code>.build_event_stream.BuildEventId.UnstructuredCommandLineId unstructured_command_line = 11;</code>
     * @return Whether the unstructuredCommandLine field is set.
     */
    @java.lang.Override
    public boolean hasUnstructuredCommandLine() {
      return idCase_ == 11;
    }
    /**
     * <code>.build_event_stream.BuildEventId.UnstructuredCommandLineId unstructured_command_line = 11;</code>
     * @return The unstructuredCommandLine.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId getUnstructuredCommandLine() {
      if (idCase_ == 11) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.UnstructuredCommandLineId unstructured_command_line = 11;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineIdOrBuilder getUnstructuredCommandLineOrBuilder() {
      if (idCase_ == 11) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId.getDefaultInstance();
    }

    public static final int STRUCTURED_COMMAND_LINE_FIELD_NUMBER = 18;
    /**
     * <code>.build_event_stream.BuildEventId.StructuredCommandLineId structured_command_line = 18;</code>
     * @return Whether the structuredCommandLine field is set.
     */
    @java.lang.Override
    public boolean hasStructuredCommandLine() {
      return idCase_ == 18;
    }
    /**
     * <code>.build_event_stream.BuildEventId.StructuredCommandLineId structured_command_line = 18;</code>
     * @return The structuredCommandLine.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId getStructuredCommandLine() {
      if (idCase_ == 18) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.StructuredCommandLineId structured_command_line = 18;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineIdOrBuilder getStructuredCommandLineOrBuilder() {
      if (idCase_ == 18) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId.getDefaultInstance();
    }

    public static final int WORKSPACE_STATUS_FIELD_NUMBER = 14;
    /**
     * <code>.build_event_stream.BuildEventId.WorkspaceStatusId workspace_status = 14;</code>
     * @return Whether the workspaceStatus field is set.
     */
    @java.lang.Override
    public boolean hasWorkspaceStatus() {
      return idCase_ == 14;
    }
    /**
     * <code>.build_event_stream.BuildEventId.WorkspaceStatusId workspace_status = 14;</code>
     * @return The workspaceStatus.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId getWorkspaceStatus() {
      if (idCase_ == 14) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.WorkspaceStatusId workspace_status = 14;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusIdOrBuilder getWorkspaceStatusOrBuilder() {
      if (idCase_ == 14) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId.getDefaultInstance();
    }

    public static final int OPTIONS_PARSED_FIELD_NUMBER = 12;
    /**
     * <code>.build_event_stream.BuildEventId.OptionsParsedId options_parsed = 12;</code>
     * @return Whether the optionsParsed field is set.
     */
    @java.lang.Override
    public boolean hasOptionsParsed() {
      return idCase_ == 12;
    }
    /**
     * <code>.build_event_stream.BuildEventId.OptionsParsedId options_parsed = 12;</code>
     * @return The optionsParsed.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId getOptionsParsed() {
      if (idCase_ == 12) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.OptionsParsedId options_parsed = 12;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedIdOrBuilder getOptionsParsedOrBuilder() {
      if (idCase_ == 12) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId.getDefaultInstance();
    }

    public static final int FETCH_FIELD_NUMBER = 17;
    /**
     * <code>.build_event_stream.BuildEventId.FetchId fetch = 17;</code>
     * @return Whether the fetch field is set.
     */
    @java.lang.Override
    public boolean hasFetch() {
      return idCase_ == 17;
    }
    /**
     * <code>.build_event_stream.BuildEventId.FetchId fetch = 17;</code>
     * @return The fetch.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId getFetch() {
      if (idCase_ == 17) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.FetchId fetch = 17;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchIdOrBuilder getFetchOrBuilder() {
      if (idCase_ == 17) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId.getDefaultInstance();
    }

    public static final int CONFIGURATION_FIELD_NUMBER = 15;
    /**
     * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 15;</code>
     * @return Whether the configuration field is set.
     */
    @java.lang.Override
    public boolean hasConfiguration() {
      return idCase_ == 15;
    }
    /**
     * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 15;</code>
     * @return The configuration.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration() {
      if (idCase_ == 15) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 15;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder() {
      if (idCase_ == 15) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance();
    }

    public static final int TARGET_CONFIGURED_FIELD_NUMBER = 16;
    /**
     * <code>.build_event_stream.BuildEventId.TargetConfiguredId target_configured = 16;</code>
     * @return Whether the targetConfigured field is set.
     */
    @java.lang.Override
    public boolean hasTargetConfigured() {
      return idCase_ == 16;
    }
    /**
     * <code>.build_event_stream.BuildEventId.TargetConfiguredId target_configured = 16;</code>
     * @return The targetConfigured.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId getTargetConfigured() {
      if (idCase_ == 16) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.TargetConfiguredId target_configured = 16;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredIdOrBuilder getTargetConfiguredOrBuilder() {
      if (idCase_ == 16) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId.getDefaultInstance();
    }

    public static final int PATTERN_FIELD_NUMBER = 4;
    /**
     * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern = 4;</code>
     * @return Whether the pattern field is set.
     */
    @java.lang.Override
    public boolean hasPattern() {
      return idCase_ == 4;
    }
    /**
     * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern = 4;</code>
     * @return The pattern.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId getPattern() {
      if (idCase_ == 4) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern = 4;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedIdOrBuilder getPatternOrBuilder() {
      if (idCase_ == 4) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.getDefaultInstance();
    }

    public static final int PATTERN_SKIPPED_FIELD_NUMBER = 10;
    /**
     * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern_skipped = 10;</code>
     * @return Whether the patternSkipped field is set.
     */
    @java.lang.Override
    public boolean hasPatternSkipped() {
      return idCase_ == 10;
    }
    /**
     * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern_skipped = 10;</code>
     * @return The patternSkipped.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId getPatternSkipped() {
      if (idCase_ == 10) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern_skipped = 10;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedIdOrBuilder getPatternSkippedOrBuilder() {
      if (idCase_ == 10) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.getDefaultInstance();
    }

    public static final int NAMED_SET_FIELD_NUMBER = 13;
    /**
     * <code>.build_event_stream.BuildEventId.NamedSetOfFilesId named_set = 13;</code>
     * @return Whether the namedSet field is set.
     */
    @java.lang.Override
    public boolean hasNamedSet() {
      return idCase_ == 13;
    }
    /**
     * <code>.build_event_stream.BuildEventId.NamedSetOfFilesId named_set = 13;</code>
     * @return The namedSet.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId getNamedSet() {
      if (idCase_ == 13) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.NamedSetOfFilesId named_set = 13;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder getNamedSetOrBuilder() {
      if (idCase_ == 13) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.getDefaultInstance();
    }

    public static final int TARGET_COMPLETED_FIELD_NUMBER = 5;
    /**
     * <code>.build_event_stream.BuildEventId.TargetCompletedId target_completed = 5;</code>
     * @return Whether the targetCompleted field is set.
     */
    @java.lang.Override
    public boolean hasTargetCompleted() {
      return idCase_ == 5;
    }
    /**
     * <code>.build_event_stream.BuildEventId.TargetCompletedId target_completed = 5;</code>
     * @return The targetCompleted.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId getTargetCompleted() {
      if (idCase_ == 5) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.TargetCompletedId target_completed = 5;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedIdOrBuilder getTargetCompletedOrBuilder() {
      if (idCase_ == 5) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId.getDefaultInstance();
    }

    public static final int ACTION_COMPLETED_FIELD_NUMBER = 6;
    /**
     * <code>.build_event_stream.BuildEventId.ActionCompletedId action_completed = 6;</code>
     * @return Whether the actionCompleted field is set.
     */
    @java.lang.Override
    public boolean hasActionCompleted() {
      return idCase_ == 6;
    }
    /**
     * <code>.build_event_stream.BuildEventId.ActionCompletedId action_completed = 6;</code>
     * @return The actionCompleted.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId getActionCompleted() {
      if (idCase_ == 6) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.ActionCompletedId action_completed = 6;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedIdOrBuilder getActionCompletedOrBuilder() {
      if (idCase_ == 6) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId.getDefaultInstance();
    }

    public static final int UNCONFIGURED_LABEL_FIELD_NUMBER = 19;
    /**
     * <code>.build_event_stream.BuildEventId.UnconfiguredLabelId unconfigured_label = 19;</code>
     * @return Whether the unconfiguredLabel field is set.
     */
    @java.lang.Override
    public boolean hasUnconfiguredLabel() {
      return idCase_ == 19;
    }
    /**
     * <code>.build_event_stream.BuildEventId.UnconfiguredLabelId unconfigured_label = 19;</code>
     * @return The unconfiguredLabel.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId getUnconfiguredLabel() {
      if (idCase_ == 19) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.UnconfiguredLabelId unconfigured_label = 19;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelIdOrBuilder getUnconfiguredLabelOrBuilder() {
      if (idCase_ == 19) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId.getDefaultInstance();
    }

    public static final int CONFIGURED_LABEL_FIELD_NUMBER = 21;
    /**
     * <code>.build_event_stream.BuildEventId.ConfiguredLabelId configured_label = 21;</code>
     * @return Whether the configuredLabel field is set.
     */
    @java.lang.Override
    public boolean hasConfiguredLabel() {
      return idCase_ == 21;
    }
    /**
     * <code>.build_event_stream.BuildEventId.ConfiguredLabelId configured_label = 21;</code>
     * @return The configuredLabel.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId getConfiguredLabel() {
      if (idCase_ == 21) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.ConfiguredLabelId configured_label = 21;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelIdOrBuilder getConfiguredLabelOrBuilder() {
      if (idCase_ == 21) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId.getDefaultInstance();
    }

    public static final int TEST_RESULT_FIELD_NUMBER = 8;
    /**
     * <code>.build_event_stream.BuildEventId.TestResultId test_result = 8;</code>
     * @return Whether the testResult field is set.
     */
    @java.lang.Override
    public boolean hasTestResult() {
      return idCase_ == 8;
    }
    /**
     * <code>.build_event_stream.BuildEventId.TestResultId test_result = 8;</code>
     * @return The testResult.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId getTestResult() {
      if (idCase_ == 8) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.TestResultId test_result = 8;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultIdOrBuilder getTestResultOrBuilder() {
      if (idCase_ == 8) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId.getDefaultInstance();
    }

    public static final int TEST_SUMMARY_FIELD_NUMBER = 7;
    /**
     * <code>.build_event_stream.BuildEventId.TestSummaryId test_summary = 7;</code>
     * @return Whether the testSummary field is set.
     */
    @java.lang.Override
    public boolean hasTestSummary() {
      return idCase_ == 7;
    }
    /**
     * <code>.build_event_stream.BuildEventId.TestSummaryId test_summary = 7;</code>
     * @return The testSummary.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId getTestSummary() {
      if (idCase_ == 7) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.TestSummaryId test_summary = 7;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryIdOrBuilder getTestSummaryOrBuilder() {
      if (idCase_ == 7) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId.getDefaultInstance();
    }

    public static final int TARGET_SUMMARY_FIELD_NUMBER = 26;
    /**
     * <code>.build_event_stream.BuildEventId.TargetSummaryId target_summary = 26;</code>
     * @return Whether the targetSummary field is set.
     */
    @java.lang.Override
    public boolean hasTargetSummary() {
      return idCase_ == 26;
    }
    /**
     * <code>.build_event_stream.BuildEventId.TargetSummaryId target_summary = 26;</code>
     * @return The targetSummary.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId getTargetSummary() {
      if (idCase_ == 26) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.TargetSummaryId target_summary = 26;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryIdOrBuilder getTargetSummaryOrBuilder() {
      if (idCase_ == 26) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId.getDefaultInstance();
    }

    public static final int BUILD_FINISHED_FIELD_NUMBER = 9;
    /**
     * <code>.build_event_stream.BuildEventId.BuildFinishedId build_finished = 9;</code>
     * @return Whether the buildFinished field is set.
     */
    @java.lang.Override
    public boolean hasBuildFinished() {
      return idCase_ == 9;
    }
    /**
     * <code>.build_event_stream.BuildEventId.BuildFinishedId build_finished = 9;</code>
     * @return The buildFinished.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId getBuildFinished() {
      if (idCase_ == 9) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.BuildFinishedId build_finished = 9;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedIdOrBuilder getBuildFinishedOrBuilder() {
      if (idCase_ == 9) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId.getDefaultInstance();
    }

    public static final int BUILD_TOOL_LOGS_FIELD_NUMBER = 20;
    /**
     * <code>.build_event_stream.BuildEventId.BuildToolLogsId build_tool_logs = 20;</code>
     * @return Whether the buildToolLogs field is set.
     */
    @java.lang.Override
    public boolean hasBuildToolLogs() {
      return idCase_ == 20;
    }
    /**
     * <code>.build_event_stream.BuildEventId.BuildToolLogsId build_tool_logs = 20;</code>
     * @return The buildToolLogs.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId getBuildToolLogs() {
      if (idCase_ == 20) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.BuildToolLogsId build_tool_logs = 20;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsIdOrBuilder getBuildToolLogsOrBuilder() {
      if (idCase_ == 20) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId.getDefaultInstance();
    }

    public static final int BUILD_METRICS_FIELD_NUMBER = 22;
    /**
     * <code>.build_event_stream.BuildEventId.BuildMetricsId build_metrics = 22;</code>
     * @return Whether the buildMetrics field is set.
     */
    @java.lang.Override
    public boolean hasBuildMetrics() {
      return idCase_ == 22;
    }
    /**
     * <code>.build_event_stream.BuildEventId.BuildMetricsId build_metrics = 22;</code>
     * @return The buildMetrics.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId getBuildMetrics() {
      if (idCase_ == 22) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.BuildMetricsId build_metrics = 22;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsIdOrBuilder getBuildMetricsOrBuilder() {
      if (idCase_ == 22) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId.getDefaultInstance();
    }

    public static final int WORKSPACE_FIELD_NUMBER = 23;
    /**
     * <code>.build_event_stream.BuildEventId.WorkspaceConfigId workspace = 23;</code>
     * @return Whether the workspace field is set.
     */
    @java.lang.Override
    public boolean hasWorkspace() {
      return idCase_ == 23;
    }
    /**
     * <code>.build_event_stream.BuildEventId.WorkspaceConfigId workspace = 23;</code>
     * @return The workspace.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId getWorkspace() {
      if (idCase_ == 23) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.WorkspaceConfigId workspace = 23;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigIdOrBuilder getWorkspaceOrBuilder() {
      if (idCase_ == 23) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId.getDefaultInstance();
    }

    public static final int BUILD_METADATA_FIELD_NUMBER = 24;
    /**
     * <code>.build_event_stream.BuildEventId.BuildMetadataId build_metadata = 24;</code>
     * @return Whether the buildMetadata field is set.
     */
    @java.lang.Override
    public boolean hasBuildMetadata() {
      return idCase_ == 24;
    }
    /**
     * <code>.build_event_stream.BuildEventId.BuildMetadataId build_metadata = 24;</code>
     * @return The buildMetadata.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId getBuildMetadata() {
      if (idCase_ == 24) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.BuildMetadataId build_metadata = 24;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataIdOrBuilder getBuildMetadataOrBuilder() {
      if (idCase_ == 24) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId.getDefaultInstance();
    }

    public static final int CONVENIENCE_SYMLINKS_IDENTIFIED_FIELD_NUMBER = 25;
    /**
     * <code>.build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId convenience_symlinks_identified = 25;</code>
     * @return Whether the convenienceSymlinksIdentified field is set.
     */
    @java.lang.Override
    public boolean hasConvenienceSymlinksIdentified() {
      return idCase_ == 25;
    }
    /**
     * <code>.build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId convenience_symlinks_identified = 25;</code>
     * @return The convenienceSymlinksIdentified.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId getConvenienceSymlinksIdentified() {
      if (idCase_ == 25) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId convenience_symlinks_identified = 25;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedIdOrBuilder getConvenienceSymlinksIdentifiedOrBuilder() {
      if (idCase_ == 25) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId) id_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId.getDefaultInstance();
    }

    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 (idCase_ == 1) {
        output.writeMessage(1, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId) id_);
      }
      if (idCase_ == 2) {
        output.writeMessage(2, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId) id_);
      }
      if (idCase_ == 3) {
        output.writeMessage(3, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId) id_);
      }
      if (idCase_ == 4) {
        output.writeMessage(4, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId) id_);
      }
      if (idCase_ == 5) {
        output.writeMessage(5, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId) id_);
      }
      if (idCase_ == 6) {
        output.writeMessage(6, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId) id_);
      }
      if (idCase_ == 7) {
        output.writeMessage(7, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId) id_);
      }
      if (idCase_ == 8) {
        output.writeMessage(8, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId) id_);
      }
      if (idCase_ == 9) {
        output.writeMessage(9, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId) id_);
      }
      if (idCase_ == 10) {
        output.writeMessage(10, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId) id_);
      }
      if (idCase_ == 11) {
        output.writeMessage(11, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId) id_);
      }
      if (idCase_ == 12) {
        output.writeMessage(12, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId) id_);
      }
      if (idCase_ == 13) {
        output.writeMessage(13, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId) id_);
      }
      if (idCase_ == 14) {
        output.writeMessage(14, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId) id_);
      }
      if (idCase_ == 15) {
        output.writeMessage(15, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId) id_);
      }
      if (idCase_ == 16) {
        output.writeMessage(16, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId) id_);
      }
      if (idCase_ == 17) {
        output.writeMessage(17, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId) id_);
      }
      if (idCase_ == 18) {
        output.writeMessage(18, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId) id_);
      }
      if (idCase_ == 19) {
        output.writeMessage(19, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId) id_);
      }
      if (idCase_ == 20) {
        output.writeMessage(20, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId) id_);
      }
      if (idCase_ == 21) {
        output.writeMessage(21, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId) id_);
      }
      if (idCase_ == 22) {
        output.writeMessage(22, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId) id_);
      }
      if (idCase_ == 23) {
        output.writeMessage(23, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId) id_);
      }
      if (idCase_ == 24) {
        output.writeMessage(24, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId) id_);
      }
      if (idCase_ == 25) {
        output.writeMessage(25, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId) id_);
      }
      if (idCase_ == 26) {
        output.writeMessage(26, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId) id_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (idCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId) id_);
      }
      if (idCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId) id_);
      }
      if (idCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId) id_);
      }
      if (idCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId) id_);
      }
      if (idCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId) id_);
      }
      if (idCase_ == 6) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId) id_);
      }
      if (idCase_ == 7) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId) id_);
      }
      if (idCase_ == 8) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId) id_);
      }
      if (idCase_ == 9) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId) id_);
      }
      if (idCase_ == 10) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId) id_);
      }
      if (idCase_ == 11) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId) id_);
      }
      if (idCase_ == 12) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId) id_);
      }
      if (idCase_ == 13) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId) id_);
      }
      if (idCase_ == 14) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId) id_);
      }
      if (idCase_ == 15) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(15, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId) id_);
      }
      if (idCase_ == 16) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(16, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId) id_);
      }
      if (idCase_ == 17) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(17, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId) id_);
      }
      if (idCase_ == 18) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(18, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId) id_);
      }
      if (idCase_ == 19) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(19, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId) id_);
      }
      if (idCase_ == 20) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(20, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId) id_);
      }
      if (idCase_ == 21) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(21, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId) id_);
      }
      if (idCase_ == 22) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(22, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId) id_);
      }
      if (idCase_ == 23) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(23, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId) id_);
      }
      if (idCase_ == 24) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(24, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId) id_);
      }
      if (idCase_ == 25) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(25, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId) id_);
      }
      if (idCase_ == 26) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(26, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId) id_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (!getIdCase().equals(other.getIdCase())) return false;
      switch (idCase_) {
        case 1:
          if (!getUnknown()
              .equals(other.getUnknown())) return false;
          break;
        case 2:
          if (!getProgress()
              .equals(other.getProgress())) return false;
          break;
        case 3:
          if (!getStarted()
              .equals(other.getStarted())) return false;
          break;
        case 11:
          if (!getUnstructuredCommandLine()
              .equals(other.getUnstructuredCommandLine())) return false;
          break;
        case 18:
          if (!getStructuredCommandLine()
              .equals(other.getStructuredCommandLine())) return false;
          break;
        case 14:
          if (!getWorkspaceStatus()
              .equals(other.getWorkspaceStatus())) return false;
          break;
        case 12:
          if (!getOptionsParsed()
              .equals(other.getOptionsParsed())) return false;
          break;
        case 17:
          if (!getFetch()
              .equals(other.getFetch())) return false;
          break;
        case 15:
          if (!getConfiguration()
              .equals(other.getConfiguration())) return false;
          break;
        case 16:
          if (!getTargetConfigured()
              .equals(other.getTargetConfigured())) return false;
          break;
        case 4:
          if (!getPattern()
              .equals(other.getPattern())) return false;
          break;
        case 10:
          if (!getPatternSkipped()
              .equals(other.getPatternSkipped())) return false;
          break;
        case 13:
          if (!getNamedSet()
              .equals(other.getNamedSet())) return false;
          break;
        case 5:
          if (!getTargetCompleted()
              .equals(other.getTargetCompleted())) return false;
          break;
        case 6:
          if (!getActionCompleted()
              .equals(other.getActionCompleted())) return false;
          break;
        case 19:
          if (!getUnconfiguredLabel()
              .equals(other.getUnconfiguredLabel())) return false;
          break;
        case 21:
          if (!getConfiguredLabel()
              .equals(other.getConfiguredLabel())) return false;
          break;
        case 8:
          if (!getTestResult()
              .equals(other.getTestResult())) return false;
          break;
        case 7:
          if (!getTestSummary()
              .equals(other.getTestSummary())) return false;
          break;
        case 26:
          if (!getTargetSummary()
              .equals(other.getTargetSummary())) return false;
          break;
        case 9:
          if (!getBuildFinished()
              .equals(other.getBuildFinished())) return false;
          break;
        case 20:
          if (!getBuildToolLogs()
              .equals(other.getBuildToolLogs())) return false;
          break;
        case 22:
          if (!getBuildMetrics()
              .equals(other.getBuildMetrics())) return false;
          break;
        case 23:
          if (!getWorkspace()
              .equals(other.getWorkspace())) return false;
          break;
        case 24:
          if (!getBuildMetadata()
              .equals(other.getBuildMetadata())) return false;
          break;
        case 25:
          if (!getConvenienceSymlinksIdentified()
              .equals(other.getConvenienceSymlinksIdentified())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (idCase_) {
        case 1:
          hash = (37 * hash) + UNKNOWN_FIELD_NUMBER;
          hash = (53 * hash) + getUnknown().hashCode();
          break;
        case 2:
          hash = (37 * hash) + PROGRESS_FIELD_NUMBER;
          hash = (53 * hash) + getProgress().hashCode();
          break;
        case 3:
          hash = (37 * hash) + STARTED_FIELD_NUMBER;
          hash = (53 * hash) + getStarted().hashCode();
          break;
        case 11:
          hash = (37 * hash) + UNSTRUCTURED_COMMAND_LINE_FIELD_NUMBER;
          hash = (53 * hash) + getUnstructuredCommandLine().hashCode();
          break;
        case 18:
          hash = (37 * hash) + STRUCTURED_COMMAND_LINE_FIELD_NUMBER;
          hash = (53 * hash) + getStructuredCommandLine().hashCode();
          break;
        case 14:
          hash = (37 * hash) + WORKSPACE_STATUS_FIELD_NUMBER;
          hash = (53 * hash) + getWorkspaceStatus().hashCode();
          break;
        case 12:
          hash = (37 * hash) + OPTIONS_PARSED_FIELD_NUMBER;
          hash = (53 * hash) + getOptionsParsed().hashCode();
          break;
        case 17:
          hash = (37 * hash) + FETCH_FIELD_NUMBER;
          hash = (53 * hash) + getFetch().hashCode();
          break;
        case 15:
          hash = (37 * hash) + CONFIGURATION_FIELD_NUMBER;
          hash = (53 * hash) + getConfiguration().hashCode();
          break;
        case 16:
          hash = (37 * hash) + TARGET_CONFIGURED_FIELD_NUMBER;
          hash = (53 * hash) + getTargetConfigured().hashCode();
          break;
        case 4:
          hash = (37 * hash) + PATTERN_FIELD_NUMBER;
          hash = (53 * hash) + getPattern().hashCode();
          break;
        case 10:
          hash = (37 * hash) + PATTERN_SKIPPED_FIELD_NUMBER;
          hash = (53 * hash) + getPatternSkipped().hashCode();
          break;
        case 13:
          hash = (37 * hash) + NAMED_SET_FIELD_NUMBER;
          hash = (53 * hash) + getNamedSet().hashCode();
          break;
        case 5:
          hash = (37 * hash) + TARGET_COMPLETED_FIELD_NUMBER;
          hash = (53 * hash) + getTargetCompleted().hashCode();
          break;
        case 6:
          hash = (37 * hash) + ACTION_COMPLETED_FIELD_NUMBER;
          hash = (53 * hash) + getActionCompleted().hashCode();
          break;
        case 19:
          hash = (37 * hash) + UNCONFIGURED_LABEL_FIELD_NUMBER;
          hash = (53 * hash) + getUnconfiguredLabel().hashCode();
          break;
        case 21:
          hash = (37 * hash) + CONFIGURED_LABEL_FIELD_NUMBER;
          hash = (53 * hash) + getConfiguredLabel().hashCode();
          break;
        case 8:
          hash = (37 * hash) + TEST_RESULT_FIELD_NUMBER;
          hash = (53 * hash) + getTestResult().hashCode();
          break;
        case 7:
          hash = (37 * hash) + TEST_SUMMARY_FIELD_NUMBER;
          hash = (53 * hash) + getTestSummary().hashCode();
          break;
        case 26:
          hash = (37 * hash) + TARGET_SUMMARY_FIELD_NUMBER;
          hash = (53 * hash) + getTargetSummary().hashCode();
          break;
        case 9:
          hash = (37 * hash) + BUILD_FINISHED_FIELD_NUMBER;
          hash = (53 * hash) + getBuildFinished().hashCode();
          break;
        case 20:
          hash = (37 * hash) + BUILD_TOOL_LOGS_FIELD_NUMBER;
          hash = (53 * hash) + getBuildToolLogs().hashCode();
          break;
        case 22:
          hash = (37 * hash) + BUILD_METRICS_FIELD_NUMBER;
          hash = (53 * hash) + getBuildMetrics().hashCode();
          break;
        case 23:
          hash = (37 * hash) + WORKSPACE_FIELD_NUMBER;
          hash = (53 * hash) + getWorkspace().hashCode();
          break;
        case 24:
          hash = (37 * hash) + BUILD_METADATA_FIELD_NUMBER;
          hash = (53 * hash) + getBuildMetadata().hashCode();
          break;
        case 25:
          hash = (37 * hash) + CONVENIENCE_SYMLINKS_IDENTIFIED_FIELD_NUMBER;
          hash = (53 * hash) + getConvenienceSymlinksIdentified().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId 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.buildeventstream.BuildEventStreamProtos.BuildEventId parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId 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.buildeventstream.BuildEventStreamProtos.BuildEventId parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId 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.buildeventstream.BuildEventStreamProtos.BuildEventId parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId 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.buildeventstream.BuildEventStreamProtos.BuildEventId parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId 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.buildeventstream.BuildEventStreamProtos.BuildEventId 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.buildeventstream.BuildEventStreamProtos.BuildEventId 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.buildeventstream.BuildEventStreamProtos.BuildEventId 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>
     * Identifier for a build event. It is deliberately structured to also provide
     * information about which build target etc the event is related to.
     * Events are chained via the event id as follows: each event has an id and a
     * set of ids of children events such that apart from the initial event each
     * event has an id that is mentioned as child id in an earlier event and a build
     * invocation is complete if and only if all direct and indirect children of the
     * initial event have been posted.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEventId}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEventId)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventIdOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (unknownBuilder_ != null) {
          unknownBuilder_.clear();
        }
        if (progressBuilder_ != null) {
          progressBuilder_.clear();
        }
        if (startedBuilder_ != null) {
          startedBuilder_.clear();
        }
        if (unstructuredCommandLineBuilder_ != null) {
          unstructuredCommandLineBuilder_.clear();
        }
        if (structuredCommandLineBuilder_ != null) {
          structuredCommandLineBuilder_.clear();
        }
        if (workspaceStatusBuilder_ != null) {
          workspaceStatusBuilder_.clear();
        }
        if (optionsParsedBuilder_ != null) {
          optionsParsedBuilder_.clear();
        }
        if (fetchBuilder_ != null) {
          fetchBuilder_.clear();
        }
        if (configurationBuilder_ != null) {
          configurationBuilder_.clear();
        }
        if (targetConfiguredBuilder_ != null) {
          targetConfiguredBuilder_.clear();
        }
        if (patternBuilder_ != null) {
          patternBuilder_.clear();
        }
        if (patternSkippedBuilder_ != null) {
          patternSkippedBuilder_.clear();
        }
        if (namedSetBuilder_ != null) {
          namedSetBuilder_.clear();
        }
        if (targetCompletedBuilder_ != null) {
          targetCompletedBuilder_.clear();
        }
        if (actionCompletedBuilder_ != null) {
          actionCompletedBuilder_.clear();
        }
        if (unconfiguredLabelBuilder_ != null) {
          unconfiguredLabelBuilder_.clear();
        }
        if (configuredLabelBuilder_ != null) {
          configuredLabelBuilder_.clear();
        }
        if (testResultBuilder_ != null) {
          testResultBuilder_.clear();
        }
        if (testSummaryBuilder_ != null) {
          testSummaryBuilder_.clear();
        }
        if (targetSummaryBuilder_ != null) {
          targetSummaryBuilder_.clear();
        }
        if (buildFinishedBuilder_ != null) {
          buildFinishedBuilder_.clear();
        }
        if (buildToolLogsBuilder_ != null) {
          buildToolLogsBuilder_.clear();
        }
        if (buildMetricsBuilder_ != null) {
          buildMetricsBuilder_.clear();
        }
        if (workspaceBuilder_ != null) {
          workspaceBuilder_.clear();
        }
        if (buildMetadataBuilder_ != null) {
          buildMetadataBuilder_.clear();
        }
        if (convenienceSymlinksIdentifiedBuilder_ != null) {
          convenienceSymlinksIdentifiedBuilder_.clear();
        }
        idCase_ = 0;
        id_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEventId_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId result) {
        result.idCase_ = idCase_;
        result.id_ = this.id_;
        if (idCase_ == 1 &&
            unknownBuilder_ != null) {
          result.id_ = unknownBuilder_.build();
        }
        if (idCase_ == 2 &&
            progressBuilder_ != null) {
          result.id_ = progressBuilder_.build();
        }
        if (idCase_ == 3 &&
            startedBuilder_ != null) {
          result.id_ = startedBuilder_.build();
        }
        if (idCase_ == 11 &&
            unstructuredCommandLineBuilder_ != null) {
          result.id_ = unstructuredCommandLineBuilder_.build();
        }
        if (idCase_ == 18 &&
            structuredCommandLineBuilder_ != null) {
          result.id_ = structuredCommandLineBuilder_.build();
        }
        if (idCase_ == 14 &&
            workspaceStatusBuilder_ != null) {
          result.id_ = workspaceStatusBuilder_.build();
        }
        if (idCase_ == 12 &&
            optionsParsedBuilder_ != null) {
          result.id_ = optionsParsedBuilder_.build();
        }
        if (idCase_ == 17 &&
            fetchBuilder_ != null) {
          result.id_ = fetchBuilder_.build();
        }
        if (idCase_ == 15 &&
            configurationBuilder_ != null) {
          result.id_ = configurationBuilder_.build();
        }
        if (idCase_ == 16 &&
            targetConfiguredBuilder_ != null) {
          result.id_ = targetConfiguredBuilder_.build();
        }
        if (idCase_ == 4 &&
            patternBuilder_ != null) {
          result.id_ = patternBuilder_.build();
        }
        if (idCase_ == 10 &&
            patternSkippedBuilder_ != null) {
          result.id_ = patternSkippedBuilder_.build();
        }
        if (idCase_ == 13 &&
            namedSetBuilder_ != null) {
          result.id_ = namedSetBuilder_.build();
        }
        if (idCase_ == 5 &&
            targetCompletedBuilder_ != null) {
          result.id_ = targetCompletedBuilder_.build();
        }
        if (idCase_ == 6 &&
            actionCompletedBuilder_ != null) {
          result.id_ = actionCompletedBuilder_.build();
        }
        if (idCase_ == 19 &&
            unconfiguredLabelBuilder_ != null) {
          result.id_ = unconfiguredLabelBuilder_.build();
        }
        if (idCase_ == 21 &&
            configuredLabelBuilder_ != null) {
          result.id_ = configuredLabelBuilder_.build();
        }
        if (idCase_ == 8 &&
            testResultBuilder_ != null) {
          result.id_ = testResultBuilder_.build();
        }
        if (idCase_ == 7 &&
            testSummaryBuilder_ != null) {
          result.id_ = testSummaryBuilder_.build();
        }
        if (idCase_ == 26 &&
            targetSummaryBuilder_ != null) {
          result.id_ = targetSummaryBuilder_.build();
        }
        if (idCase_ == 9 &&
            buildFinishedBuilder_ != null) {
          result.id_ = buildFinishedBuilder_.build();
        }
        if (idCase_ == 20 &&
            buildToolLogsBuilder_ != null) {
          result.id_ = buildToolLogsBuilder_.build();
        }
        if (idCase_ == 22 &&
            buildMetricsBuilder_ != null) {
          result.id_ = buildMetricsBuilder_.build();
        }
        if (idCase_ == 23 &&
            workspaceBuilder_ != null) {
          result.id_ = workspaceBuilder_.build();
        }
        if (idCase_ == 24 &&
            buildMetadataBuilder_ != null) {
          result.id_ = buildMetadataBuilder_.build();
        }
        if (idCase_ == 25 &&
            convenienceSymlinksIdentifiedBuilder_ != null) {
          result.id_ = convenienceSymlinksIdentifiedBuilder_.build();
        }
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.getDefaultInstance()) return this;
        switch (other.getIdCase()) {
          case UNKNOWN: {
            mergeUnknown(other.getUnknown());
            break;
          }
          case PROGRESS: {
            mergeProgress(other.getProgress());
            break;
          }
          case STARTED: {
            mergeStarted(other.getStarted());
            break;
          }
          case UNSTRUCTURED_COMMAND_LINE: {
            mergeUnstructuredCommandLine(other.getUnstructuredCommandLine());
            break;
          }
          case STRUCTURED_COMMAND_LINE: {
            mergeStructuredCommandLine(other.getStructuredCommandLine());
            break;
          }
          case WORKSPACE_STATUS: {
            mergeWorkspaceStatus(other.getWorkspaceStatus());
            break;
          }
          case OPTIONS_PARSED: {
            mergeOptionsParsed(other.getOptionsParsed());
            break;
          }
          case FETCH: {
            mergeFetch(other.getFetch());
            break;
          }
          case CONFIGURATION: {
            mergeConfiguration(other.getConfiguration());
            break;
          }
          case TARGET_CONFIGURED: {
            mergeTargetConfigured(other.getTargetConfigured());
            break;
          }
          case PATTERN: {
            mergePattern(other.getPattern());
            break;
          }
          case PATTERN_SKIPPED: {
            mergePatternSkipped(other.getPatternSkipped());
            break;
          }
          case NAMED_SET: {
            mergeNamedSet(other.getNamedSet());
            break;
          }
          case TARGET_COMPLETED: {
            mergeTargetCompleted(other.getTargetCompleted());
            break;
          }
          case ACTION_COMPLETED: {
            mergeActionCompleted(other.getActionCompleted());
            break;
          }
          case UNCONFIGURED_LABEL: {
            mergeUnconfiguredLabel(other.getUnconfiguredLabel());
            break;
          }
          case CONFIGURED_LABEL: {
            mergeConfiguredLabel(other.getConfiguredLabel());
            break;
          }
          case TEST_RESULT: {
            mergeTestResult(other.getTestResult());
            break;
          }
          case TEST_SUMMARY: {
            mergeTestSummary(other.getTestSummary());
            break;
          }
          case TARGET_SUMMARY: {
            mergeTargetSummary(other.getTargetSummary());
            break;
          }
          case BUILD_FINISHED: {
            mergeBuildFinished(other.getBuildFinished());
            break;
          }
          case BUILD_TOOL_LOGS: {
            mergeBuildToolLogs(other.getBuildToolLogs());
            break;
          }
          case BUILD_METRICS: {
            mergeBuildMetrics(other.getBuildMetrics());
            break;
          }
          case WORKSPACE: {
            mergeWorkspace(other.getWorkspace());
            break;
          }
          case BUILD_METADATA: {
            mergeBuildMetadata(other.getBuildMetadata());
            break;
          }
          case CONVENIENCE_SYMLINKS_IDENTIFIED: {
            mergeConvenienceSymlinksIdentified(other.getConvenienceSymlinksIdentified());
            break;
          }
          case ID_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getUnknownFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 1;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getProgressFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 2;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getStartedFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 3;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getPatternFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 4;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getTargetCompletedFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 5;
                break;
              } // case 42
              case 50: {
                input.readMessage(
                    getActionCompletedFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 6;
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getTestSummaryFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 7;
                break;
              } // case 58
              case 66: {
                input.readMessage(
                    getTestResultFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 8;
                break;
              } // case 66
              case 74: {
                input.readMessage(
                    getBuildFinishedFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 9;
                break;
              } // case 74
              case 82: {
                input.readMessage(
                    getPatternSkippedFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 10;
                break;
              } // case 82
              case 90: {
                input.readMessage(
                    getUnstructuredCommandLineFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 11;
                break;
              } // case 90
              case 98: {
                input.readMessage(
                    getOptionsParsedFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 12;
                break;
              } // case 98
              case 106: {
                input.readMessage(
                    getNamedSetFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 13;
                break;
              } // case 106
              case 114: {
                input.readMessage(
                    getWorkspaceStatusFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 14;
                break;
              } // case 114
              case 122: {
                input.readMessage(
                    getConfigurationFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 15;
                break;
              } // case 122
              case 130: {
                input.readMessage(
                    getTargetConfiguredFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 16;
                break;
              } // case 130
              case 138: {
                input.readMessage(
                    getFetchFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 17;
                break;
              } // case 138
              case 146: {
                input.readMessage(
                    getStructuredCommandLineFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 18;
                break;
              } // case 146
              case 154: {
                input.readMessage(
                    getUnconfiguredLabelFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 19;
                break;
              } // case 154
              case 162: {
                input.readMessage(
                    getBuildToolLogsFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 20;
                break;
              } // case 162
              case 170: {
                input.readMessage(
                    getConfiguredLabelFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 21;
                break;
              } // case 170
              case 178: {
                input.readMessage(
                    getBuildMetricsFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 22;
                break;
              } // case 178
              case 186: {
                input.readMessage(
                    getWorkspaceFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 23;
                break;
              } // case 186
              case 194: {
                input.readMessage(
                    getBuildMetadataFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 24;
                break;
              } // case 194
              case 202: {
                input.readMessage(
                    getConvenienceSymlinksIdentifiedFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 25;
                break;
              } // case 202
              case 210: {
                input.readMessage(
                    getTargetSummaryFieldBuilder().getBuilder(),
                    extensionRegistry);
                idCase_ = 26;
                break;
              } // case 210
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int idCase_ = 0;
      private java.lang.Object id_;
      public IdCase
          getIdCase() {
        return IdCase.forNumber(
            idCase_);
      }

      public Builder clearId() {
        idCase_ = 0;
        id_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventIdOrBuilder> unknownBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.UnknownBuildEventId unknown = 1;</code>
       * @return Whether the unknown field is set.
       */
      @java.lang.Override
      public boolean hasUnknown() {
        return idCase_ == 1;
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnknownBuildEventId unknown = 1;</code>
       * @return The unknown.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId getUnknown() {
        if (unknownBuilder_ == null) {
          if (idCase_ == 1) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId.getDefaultInstance();
        } else {
          if (idCase_ == 1) {
            return unknownBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnknownBuildEventId unknown = 1;</code>
       */
      public Builder setUnknown(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId value) {
        if (unknownBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          unknownBuilder_.setMessage(value);
        }
        idCase_ = 1;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnknownBuildEventId unknown = 1;</code>
       */
      public Builder setUnknown(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId.Builder builderForValue) {
        if (unknownBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          unknownBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 1;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnknownBuildEventId unknown = 1;</code>
       */
      public Builder mergeUnknown(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId value) {
        if (unknownBuilder_ == null) {
          if (idCase_ == 1 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 1) {
            unknownBuilder_.mergeFrom(value);
          } else {
            unknownBuilder_.setMessage(value);
          }
        }
        idCase_ = 1;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnknownBuildEventId unknown = 1;</code>
       */
      public Builder clearUnknown() {
        if (unknownBuilder_ == null) {
          if (idCase_ == 1) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 1) {
            idCase_ = 0;
            id_ = null;
          }
          unknownBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnknownBuildEventId unknown = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId.Builder getUnknownBuilder() {
        return getUnknownFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnknownBuildEventId unknown = 1;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventIdOrBuilder getUnknownOrBuilder() {
        if ((idCase_ == 1) && (unknownBuilder_ != null)) {
          return unknownBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 1) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnknownBuildEventId unknown = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventIdOrBuilder> 
          getUnknownFieldBuilder() {
        if (unknownBuilder_ == null) {
          if (!(idCase_ == 1)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId.getDefaultInstance();
          }
          unknownBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnknownBuildEventId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 1;
        onChanged();
        return unknownBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressIdOrBuilder> progressBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.ProgressId progress = 2;</code>
       * @return Whether the progress field is set.
       */
      @java.lang.Override
      public boolean hasProgress() {
        return idCase_ == 2;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ProgressId progress = 2;</code>
       * @return The progress.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId getProgress() {
        if (progressBuilder_ == null) {
          if (idCase_ == 2) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId.getDefaultInstance();
        } else {
          if (idCase_ == 2) {
            return progressBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.ProgressId progress = 2;</code>
       */
      public Builder setProgress(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId value) {
        if (progressBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          progressBuilder_.setMessage(value);
        }
        idCase_ = 2;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ProgressId progress = 2;</code>
       */
      public Builder setProgress(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId.Builder builderForValue) {
        if (progressBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          progressBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 2;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ProgressId progress = 2;</code>
       */
      public Builder mergeProgress(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId value) {
        if (progressBuilder_ == null) {
          if (idCase_ == 2 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 2) {
            progressBuilder_.mergeFrom(value);
          } else {
            progressBuilder_.setMessage(value);
          }
        }
        idCase_ = 2;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ProgressId progress = 2;</code>
       */
      public Builder clearProgress() {
        if (progressBuilder_ == null) {
          if (idCase_ == 2) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 2) {
            idCase_ = 0;
            id_ = null;
          }
          progressBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ProgressId progress = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId.Builder getProgressBuilder() {
        return getProgressFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.ProgressId progress = 2;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressIdOrBuilder getProgressOrBuilder() {
        if ((idCase_ == 2) && (progressBuilder_ != null)) {
          return progressBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 2) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.ProgressId progress = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressIdOrBuilder> 
          getProgressFieldBuilder() {
        if (progressBuilder_ == null) {
          if (!(idCase_ == 2)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId.getDefaultInstance();
          }
          progressBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ProgressId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 2;
        onChanged();
        return progressBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedIdOrBuilder> startedBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.BuildStartedId started = 3;</code>
       * @return Whether the started field is set.
       */
      @java.lang.Override
      public boolean hasStarted() {
        return idCase_ == 3;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildStartedId started = 3;</code>
       * @return The started.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId getStarted() {
        if (startedBuilder_ == null) {
          if (idCase_ == 3) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId.getDefaultInstance();
        } else {
          if (idCase_ == 3) {
            return startedBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildStartedId started = 3;</code>
       */
      public Builder setStarted(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId value) {
        if (startedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          startedBuilder_.setMessage(value);
        }
        idCase_ = 3;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildStartedId started = 3;</code>
       */
      public Builder setStarted(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId.Builder builderForValue) {
        if (startedBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          startedBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 3;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildStartedId started = 3;</code>
       */
      public Builder mergeStarted(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId value) {
        if (startedBuilder_ == null) {
          if (idCase_ == 3 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 3) {
            startedBuilder_.mergeFrom(value);
          } else {
            startedBuilder_.setMessage(value);
          }
        }
        idCase_ = 3;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildStartedId started = 3;</code>
       */
      public Builder clearStarted() {
        if (startedBuilder_ == null) {
          if (idCase_ == 3) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 3) {
            idCase_ = 0;
            id_ = null;
          }
          startedBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildStartedId started = 3;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId.Builder getStartedBuilder() {
        return getStartedFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildStartedId started = 3;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedIdOrBuilder getStartedOrBuilder() {
        if ((idCase_ == 3) && (startedBuilder_ != null)) {
          return startedBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 3) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildStartedId started = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedIdOrBuilder> 
          getStartedFieldBuilder() {
        if (startedBuilder_ == null) {
          if (!(idCase_ == 3)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId.getDefaultInstance();
          }
          startedBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildStartedId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 3;
        onChanged();
        return startedBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineIdOrBuilder> unstructuredCommandLineBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.UnstructuredCommandLineId unstructured_command_line = 11;</code>
       * @return Whether the unstructuredCommandLine field is set.
       */
      @java.lang.Override
      public boolean hasUnstructuredCommandLine() {
        return idCase_ == 11;
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnstructuredCommandLineId unstructured_command_line = 11;</code>
       * @return The unstructuredCommandLine.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId getUnstructuredCommandLine() {
        if (unstructuredCommandLineBuilder_ == null) {
          if (idCase_ == 11) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId.getDefaultInstance();
        } else {
          if (idCase_ == 11) {
            return unstructuredCommandLineBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnstructuredCommandLineId unstructured_command_line = 11;</code>
       */
      public Builder setUnstructuredCommandLine(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId value) {
        if (unstructuredCommandLineBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          unstructuredCommandLineBuilder_.setMessage(value);
        }
        idCase_ = 11;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnstructuredCommandLineId unstructured_command_line = 11;</code>
       */
      public Builder setUnstructuredCommandLine(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId.Builder builderForValue) {
        if (unstructuredCommandLineBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          unstructuredCommandLineBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 11;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnstructuredCommandLineId unstructured_command_line = 11;</code>
       */
      public Builder mergeUnstructuredCommandLine(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId value) {
        if (unstructuredCommandLineBuilder_ == null) {
          if (idCase_ == 11 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 11) {
            unstructuredCommandLineBuilder_.mergeFrom(value);
          } else {
            unstructuredCommandLineBuilder_.setMessage(value);
          }
        }
        idCase_ = 11;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnstructuredCommandLineId unstructured_command_line = 11;</code>
       */
      public Builder clearUnstructuredCommandLine() {
        if (unstructuredCommandLineBuilder_ == null) {
          if (idCase_ == 11) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 11) {
            idCase_ = 0;
            id_ = null;
          }
          unstructuredCommandLineBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnstructuredCommandLineId unstructured_command_line = 11;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId.Builder getUnstructuredCommandLineBuilder() {
        return getUnstructuredCommandLineFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnstructuredCommandLineId unstructured_command_line = 11;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineIdOrBuilder getUnstructuredCommandLineOrBuilder() {
        if ((idCase_ == 11) && (unstructuredCommandLineBuilder_ != null)) {
          return unstructuredCommandLineBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 11) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnstructuredCommandLineId unstructured_command_line = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineIdOrBuilder> 
          getUnstructuredCommandLineFieldBuilder() {
        if (unstructuredCommandLineBuilder_ == null) {
          if (!(idCase_ == 11)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId.getDefaultInstance();
          }
          unstructuredCommandLineBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnstructuredCommandLineId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 11;
        onChanged();
        return unstructuredCommandLineBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineIdOrBuilder> structuredCommandLineBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.StructuredCommandLineId structured_command_line = 18;</code>
       * @return Whether the structuredCommandLine field is set.
       */
      @java.lang.Override
      public boolean hasStructuredCommandLine() {
        return idCase_ == 18;
      }
      /**
       * <code>.build_event_stream.BuildEventId.StructuredCommandLineId structured_command_line = 18;</code>
       * @return The structuredCommandLine.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId getStructuredCommandLine() {
        if (structuredCommandLineBuilder_ == null) {
          if (idCase_ == 18) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId.getDefaultInstance();
        } else {
          if (idCase_ == 18) {
            return structuredCommandLineBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.StructuredCommandLineId structured_command_line = 18;</code>
       */
      public Builder setStructuredCommandLine(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId value) {
        if (structuredCommandLineBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          structuredCommandLineBuilder_.setMessage(value);
        }
        idCase_ = 18;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.StructuredCommandLineId structured_command_line = 18;</code>
       */
      public Builder setStructuredCommandLine(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId.Builder builderForValue) {
        if (structuredCommandLineBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          structuredCommandLineBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 18;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.StructuredCommandLineId structured_command_line = 18;</code>
       */
      public Builder mergeStructuredCommandLine(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId value) {
        if (structuredCommandLineBuilder_ == null) {
          if (idCase_ == 18 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 18) {
            structuredCommandLineBuilder_.mergeFrom(value);
          } else {
            structuredCommandLineBuilder_.setMessage(value);
          }
        }
        idCase_ = 18;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.StructuredCommandLineId structured_command_line = 18;</code>
       */
      public Builder clearStructuredCommandLine() {
        if (structuredCommandLineBuilder_ == null) {
          if (idCase_ == 18) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 18) {
            idCase_ = 0;
            id_ = null;
          }
          structuredCommandLineBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.StructuredCommandLineId structured_command_line = 18;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId.Builder getStructuredCommandLineBuilder() {
        return getStructuredCommandLineFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.StructuredCommandLineId structured_command_line = 18;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineIdOrBuilder getStructuredCommandLineOrBuilder() {
        if ((idCase_ == 18) && (structuredCommandLineBuilder_ != null)) {
          return structuredCommandLineBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 18) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.StructuredCommandLineId structured_command_line = 18;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineIdOrBuilder> 
          getStructuredCommandLineFieldBuilder() {
        if (structuredCommandLineBuilder_ == null) {
          if (!(idCase_ == 18)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId.getDefaultInstance();
          }
          structuredCommandLineBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.StructuredCommandLineId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 18;
        onChanged();
        return structuredCommandLineBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusIdOrBuilder> workspaceStatusBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.WorkspaceStatusId workspace_status = 14;</code>
       * @return Whether the workspaceStatus field is set.
       */
      @java.lang.Override
      public boolean hasWorkspaceStatus() {
        return idCase_ == 14;
      }
      /**
       * <code>.build_event_stream.BuildEventId.WorkspaceStatusId workspace_status = 14;</code>
       * @return The workspaceStatus.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId getWorkspaceStatus() {
        if (workspaceStatusBuilder_ == null) {
          if (idCase_ == 14) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId.getDefaultInstance();
        } else {
          if (idCase_ == 14) {
            return workspaceStatusBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.WorkspaceStatusId workspace_status = 14;</code>
       */
      public Builder setWorkspaceStatus(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId value) {
        if (workspaceStatusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          workspaceStatusBuilder_.setMessage(value);
        }
        idCase_ = 14;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.WorkspaceStatusId workspace_status = 14;</code>
       */
      public Builder setWorkspaceStatus(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId.Builder builderForValue) {
        if (workspaceStatusBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          workspaceStatusBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 14;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.WorkspaceStatusId workspace_status = 14;</code>
       */
      public Builder mergeWorkspaceStatus(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId value) {
        if (workspaceStatusBuilder_ == null) {
          if (idCase_ == 14 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 14) {
            workspaceStatusBuilder_.mergeFrom(value);
          } else {
            workspaceStatusBuilder_.setMessage(value);
          }
        }
        idCase_ = 14;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.WorkspaceStatusId workspace_status = 14;</code>
       */
      public Builder clearWorkspaceStatus() {
        if (workspaceStatusBuilder_ == null) {
          if (idCase_ == 14) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 14) {
            idCase_ = 0;
            id_ = null;
          }
          workspaceStatusBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.WorkspaceStatusId workspace_status = 14;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId.Builder getWorkspaceStatusBuilder() {
        return getWorkspaceStatusFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.WorkspaceStatusId workspace_status = 14;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusIdOrBuilder getWorkspaceStatusOrBuilder() {
        if ((idCase_ == 14) && (workspaceStatusBuilder_ != null)) {
          return workspaceStatusBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 14) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.WorkspaceStatusId workspace_status = 14;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusIdOrBuilder> 
          getWorkspaceStatusFieldBuilder() {
        if (workspaceStatusBuilder_ == null) {
          if (!(idCase_ == 14)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId.getDefaultInstance();
          }
          workspaceStatusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceStatusId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 14;
        onChanged();
        return workspaceStatusBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedIdOrBuilder> optionsParsedBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.OptionsParsedId options_parsed = 12;</code>
       * @return Whether the optionsParsed field is set.
       */
      @java.lang.Override
      public boolean hasOptionsParsed() {
        return idCase_ == 12;
      }
      /**
       * <code>.build_event_stream.BuildEventId.OptionsParsedId options_parsed = 12;</code>
       * @return The optionsParsed.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId getOptionsParsed() {
        if (optionsParsedBuilder_ == null) {
          if (idCase_ == 12) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId.getDefaultInstance();
        } else {
          if (idCase_ == 12) {
            return optionsParsedBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.OptionsParsedId options_parsed = 12;</code>
       */
      public Builder setOptionsParsed(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId value) {
        if (optionsParsedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          optionsParsedBuilder_.setMessage(value);
        }
        idCase_ = 12;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.OptionsParsedId options_parsed = 12;</code>
       */
      public Builder setOptionsParsed(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId.Builder builderForValue) {
        if (optionsParsedBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          optionsParsedBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 12;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.OptionsParsedId options_parsed = 12;</code>
       */
      public Builder mergeOptionsParsed(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId value) {
        if (optionsParsedBuilder_ == null) {
          if (idCase_ == 12 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 12) {
            optionsParsedBuilder_.mergeFrom(value);
          } else {
            optionsParsedBuilder_.setMessage(value);
          }
        }
        idCase_ = 12;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.OptionsParsedId options_parsed = 12;</code>
       */
      public Builder clearOptionsParsed() {
        if (optionsParsedBuilder_ == null) {
          if (idCase_ == 12) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 12) {
            idCase_ = 0;
            id_ = null;
          }
          optionsParsedBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.OptionsParsedId options_parsed = 12;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId.Builder getOptionsParsedBuilder() {
        return getOptionsParsedFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.OptionsParsedId options_parsed = 12;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedIdOrBuilder getOptionsParsedOrBuilder() {
        if ((idCase_ == 12) && (optionsParsedBuilder_ != null)) {
          return optionsParsedBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 12) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.OptionsParsedId options_parsed = 12;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedIdOrBuilder> 
          getOptionsParsedFieldBuilder() {
        if (optionsParsedBuilder_ == null) {
          if (!(idCase_ == 12)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId.getDefaultInstance();
          }
          optionsParsedBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.OptionsParsedId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 12;
        onChanged();
        return optionsParsedBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchIdOrBuilder> fetchBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.FetchId fetch = 17;</code>
       * @return Whether the fetch field is set.
       */
      @java.lang.Override
      public boolean hasFetch() {
        return idCase_ == 17;
      }
      /**
       * <code>.build_event_stream.BuildEventId.FetchId fetch = 17;</code>
       * @return The fetch.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId getFetch() {
        if (fetchBuilder_ == null) {
          if (idCase_ == 17) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId.getDefaultInstance();
        } else {
          if (idCase_ == 17) {
            return fetchBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.FetchId fetch = 17;</code>
       */
      public Builder setFetch(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId value) {
        if (fetchBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          fetchBuilder_.setMessage(value);
        }
        idCase_ = 17;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.FetchId fetch = 17;</code>
       */
      public Builder setFetch(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId.Builder builderForValue) {
        if (fetchBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          fetchBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 17;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.FetchId fetch = 17;</code>
       */
      public Builder mergeFetch(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId value) {
        if (fetchBuilder_ == null) {
          if (idCase_ == 17 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 17) {
            fetchBuilder_.mergeFrom(value);
          } else {
            fetchBuilder_.setMessage(value);
          }
        }
        idCase_ = 17;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.FetchId fetch = 17;</code>
       */
      public Builder clearFetch() {
        if (fetchBuilder_ == null) {
          if (idCase_ == 17) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 17) {
            idCase_ = 0;
            id_ = null;
          }
          fetchBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.FetchId fetch = 17;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId.Builder getFetchBuilder() {
        return getFetchFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.FetchId fetch = 17;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchIdOrBuilder getFetchOrBuilder() {
        if ((idCase_ == 17) && (fetchBuilder_ != null)) {
          return fetchBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 17) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.FetchId fetch = 17;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchIdOrBuilder> 
          getFetchFieldBuilder() {
        if (fetchBuilder_ == null) {
          if (!(idCase_ == 17)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId.getDefaultInstance();
          }
          fetchBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.FetchId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 17;
        onChanged();
        return fetchBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder> configurationBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 15;</code>
       * @return Whether the configuration field is set.
       */
      @java.lang.Override
      public boolean hasConfiguration() {
        return idCase_ == 15;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 15;</code>
       * @return The configuration.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration() {
        if (configurationBuilder_ == null) {
          if (idCase_ == 15) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance();
        } else {
          if (idCase_ == 15) {
            return configurationBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 15;</code>
       */
      public Builder setConfiguration(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId value) {
        if (configurationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          configurationBuilder_.setMessage(value);
        }
        idCase_ = 15;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 15;</code>
       */
      public Builder setConfiguration(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder builderForValue) {
        if (configurationBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          configurationBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 15;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 15;</code>
       */
      public Builder mergeConfiguration(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId value) {
        if (configurationBuilder_ == null) {
          if (idCase_ == 15 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 15) {
            configurationBuilder_.mergeFrom(value);
          } else {
            configurationBuilder_.setMessage(value);
          }
        }
        idCase_ = 15;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 15;</code>
       */
      public Builder clearConfiguration() {
        if (configurationBuilder_ == null) {
          if (idCase_ == 15) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 15) {
            idCase_ = 0;
            id_ = null;
          }
          configurationBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 15;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder getConfigurationBuilder() {
        return getConfigurationFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 15;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder() {
        if ((idCase_ == 15) && (configurationBuilder_ != null)) {
          return configurationBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 15) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 15;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder> 
          getConfigurationFieldBuilder() {
        if (configurationBuilder_ == null) {
          if (!(idCase_ == 15)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance();
          }
          configurationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 15;
        onChanged();
        return configurationBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredIdOrBuilder> targetConfiguredBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.TargetConfiguredId target_configured = 16;</code>
       * @return Whether the targetConfigured field is set.
       */
      @java.lang.Override
      public boolean hasTargetConfigured() {
        return idCase_ == 16;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetConfiguredId target_configured = 16;</code>
       * @return The targetConfigured.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId getTargetConfigured() {
        if (targetConfiguredBuilder_ == null) {
          if (idCase_ == 16) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId.getDefaultInstance();
        } else {
          if (idCase_ == 16) {
            return targetConfiguredBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetConfiguredId target_configured = 16;</code>
       */
      public Builder setTargetConfigured(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId value) {
        if (targetConfiguredBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          targetConfiguredBuilder_.setMessage(value);
        }
        idCase_ = 16;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetConfiguredId target_configured = 16;</code>
       */
      public Builder setTargetConfigured(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId.Builder builderForValue) {
        if (targetConfiguredBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          targetConfiguredBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 16;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetConfiguredId target_configured = 16;</code>
       */
      public Builder mergeTargetConfigured(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId value) {
        if (targetConfiguredBuilder_ == null) {
          if (idCase_ == 16 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 16) {
            targetConfiguredBuilder_.mergeFrom(value);
          } else {
            targetConfiguredBuilder_.setMessage(value);
          }
        }
        idCase_ = 16;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetConfiguredId target_configured = 16;</code>
       */
      public Builder clearTargetConfigured() {
        if (targetConfiguredBuilder_ == null) {
          if (idCase_ == 16) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 16) {
            idCase_ = 0;
            id_ = null;
          }
          targetConfiguredBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetConfiguredId target_configured = 16;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId.Builder getTargetConfiguredBuilder() {
        return getTargetConfiguredFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetConfiguredId target_configured = 16;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredIdOrBuilder getTargetConfiguredOrBuilder() {
        if ((idCase_ == 16) && (targetConfiguredBuilder_ != null)) {
          return targetConfiguredBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 16) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetConfiguredId target_configured = 16;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredIdOrBuilder> 
          getTargetConfiguredFieldBuilder() {
        if (targetConfiguredBuilder_ == null) {
          if (!(idCase_ == 16)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId.getDefaultInstance();
          }
          targetConfiguredBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetConfiguredId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 16;
        onChanged();
        return targetConfiguredBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedIdOrBuilder> patternBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern = 4;</code>
       * @return Whether the pattern field is set.
       */
      @java.lang.Override
      public boolean hasPattern() {
        return idCase_ == 4;
      }
      /**
       * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern = 4;</code>
       * @return The pattern.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId getPattern() {
        if (patternBuilder_ == null) {
          if (idCase_ == 4) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.getDefaultInstance();
        } else {
          if (idCase_ == 4) {
            return patternBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern = 4;</code>
       */
      public Builder setPattern(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId value) {
        if (patternBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          patternBuilder_.setMessage(value);
        }
        idCase_ = 4;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern = 4;</code>
       */
      public Builder setPattern(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.Builder builderForValue) {
        if (patternBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          patternBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 4;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern = 4;</code>
       */
      public Builder mergePattern(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId value) {
        if (patternBuilder_ == null) {
          if (idCase_ == 4 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 4) {
            patternBuilder_.mergeFrom(value);
          } else {
            patternBuilder_.setMessage(value);
          }
        }
        idCase_ = 4;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern = 4;</code>
       */
      public Builder clearPattern() {
        if (patternBuilder_ == null) {
          if (idCase_ == 4) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 4) {
            idCase_ = 0;
            id_ = null;
          }
          patternBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern = 4;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.Builder getPatternBuilder() {
        return getPatternFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern = 4;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedIdOrBuilder getPatternOrBuilder() {
        if ((idCase_ == 4) && (patternBuilder_ != null)) {
          return patternBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 4) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedIdOrBuilder> 
          getPatternFieldBuilder() {
        if (patternBuilder_ == null) {
          if (!(idCase_ == 4)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.getDefaultInstance();
          }
          patternBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 4;
        onChanged();
        return patternBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedIdOrBuilder> patternSkippedBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern_skipped = 10;</code>
       * @return Whether the patternSkipped field is set.
       */
      @java.lang.Override
      public boolean hasPatternSkipped() {
        return idCase_ == 10;
      }
      /**
       * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern_skipped = 10;</code>
       * @return The patternSkipped.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId getPatternSkipped() {
        if (patternSkippedBuilder_ == null) {
          if (idCase_ == 10) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.getDefaultInstance();
        } else {
          if (idCase_ == 10) {
            return patternSkippedBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern_skipped = 10;</code>
       */
      public Builder setPatternSkipped(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId value) {
        if (patternSkippedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          patternSkippedBuilder_.setMessage(value);
        }
        idCase_ = 10;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern_skipped = 10;</code>
       */
      public Builder setPatternSkipped(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.Builder builderForValue) {
        if (patternSkippedBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          patternSkippedBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 10;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern_skipped = 10;</code>
       */
      public Builder mergePatternSkipped(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId value) {
        if (patternSkippedBuilder_ == null) {
          if (idCase_ == 10 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 10) {
            patternSkippedBuilder_.mergeFrom(value);
          } else {
            patternSkippedBuilder_.setMessage(value);
          }
        }
        idCase_ = 10;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern_skipped = 10;</code>
       */
      public Builder clearPatternSkipped() {
        if (patternSkippedBuilder_ == null) {
          if (idCase_ == 10) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 10) {
            idCase_ = 0;
            id_ = null;
          }
          patternSkippedBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern_skipped = 10;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.Builder getPatternSkippedBuilder() {
        return getPatternSkippedFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern_skipped = 10;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedIdOrBuilder getPatternSkippedOrBuilder() {
        if ((idCase_ == 10) && (patternSkippedBuilder_ != null)) {
          return patternSkippedBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 10) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.PatternExpandedId pattern_skipped = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedIdOrBuilder> 
          getPatternSkippedFieldBuilder() {
        if (patternSkippedBuilder_ == null) {
          if (!(idCase_ == 10)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.getDefaultInstance();
          }
          patternSkippedBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.PatternExpandedId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 10;
        onChanged();
        return patternSkippedBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder> namedSetBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.NamedSetOfFilesId named_set = 13;</code>
       * @return Whether the namedSet field is set.
       */
      @java.lang.Override
      public boolean hasNamedSet() {
        return idCase_ == 13;
      }
      /**
       * <code>.build_event_stream.BuildEventId.NamedSetOfFilesId named_set = 13;</code>
       * @return The namedSet.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId getNamedSet() {
        if (namedSetBuilder_ == null) {
          if (idCase_ == 13) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.getDefaultInstance();
        } else {
          if (idCase_ == 13) {
            return namedSetBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.NamedSetOfFilesId named_set = 13;</code>
       */
      public Builder setNamedSet(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId value) {
        if (namedSetBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          namedSetBuilder_.setMessage(value);
        }
        idCase_ = 13;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.NamedSetOfFilesId named_set = 13;</code>
       */
      public Builder setNamedSet(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder builderForValue) {
        if (namedSetBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          namedSetBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 13;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.NamedSetOfFilesId named_set = 13;</code>
       */
      public Builder mergeNamedSet(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId value) {
        if (namedSetBuilder_ == null) {
          if (idCase_ == 13 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 13) {
            namedSetBuilder_.mergeFrom(value);
          } else {
            namedSetBuilder_.setMessage(value);
          }
        }
        idCase_ = 13;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.NamedSetOfFilesId named_set = 13;</code>
       */
      public Builder clearNamedSet() {
        if (namedSetBuilder_ == null) {
          if (idCase_ == 13) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 13) {
            idCase_ = 0;
            id_ = null;
          }
          namedSetBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.NamedSetOfFilesId named_set = 13;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder getNamedSetBuilder() {
        return getNamedSetFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.NamedSetOfFilesId named_set = 13;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder getNamedSetOrBuilder() {
        if ((idCase_ == 13) && (namedSetBuilder_ != null)) {
          return namedSetBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 13) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.NamedSetOfFilesId named_set = 13;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder> 
          getNamedSetFieldBuilder() {
        if (namedSetBuilder_ == null) {
          if (!(idCase_ == 13)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.getDefaultInstance();
          }
          namedSetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 13;
        onChanged();
        return namedSetBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedIdOrBuilder> targetCompletedBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.TargetCompletedId target_completed = 5;</code>
       * @return Whether the targetCompleted field is set.
       */
      @java.lang.Override
      public boolean hasTargetCompleted() {
        return idCase_ == 5;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetCompletedId target_completed = 5;</code>
       * @return The targetCompleted.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId getTargetCompleted() {
        if (targetCompletedBuilder_ == null) {
          if (idCase_ == 5) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId.getDefaultInstance();
        } else {
          if (idCase_ == 5) {
            return targetCompletedBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetCompletedId target_completed = 5;</code>
       */
      public Builder setTargetCompleted(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId value) {
        if (targetCompletedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          targetCompletedBuilder_.setMessage(value);
        }
        idCase_ = 5;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetCompletedId target_completed = 5;</code>
       */
      public Builder setTargetCompleted(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId.Builder builderForValue) {
        if (targetCompletedBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          targetCompletedBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 5;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetCompletedId target_completed = 5;</code>
       */
      public Builder mergeTargetCompleted(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId value) {
        if (targetCompletedBuilder_ == null) {
          if (idCase_ == 5 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 5) {
            targetCompletedBuilder_.mergeFrom(value);
          } else {
            targetCompletedBuilder_.setMessage(value);
          }
        }
        idCase_ = 5;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetCompletedId target_completed = 5;</code>
       */
      public Builder clearTargetCompleted() {
        if (targetCompletedBuilder_ == null) {
          if (idCase_ == 5) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 5) {
            idCase_ = 0;
            id_ = null;
          }
          targetCompletedBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetCompletedId target_completed = 5;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId.Builder getTargetCompletedBuilder() {
        return getTargetCompletedFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetCompletedId target_completed = 5;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedIdOrBuilder getTargetCompletedOrBuilder() {
        if ((idCase_ == 5) && (targetCompletedBuilder_ != null)) {
          return targetCompletedBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 5) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetCompletedId target_completed = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedIdOrBuilder> 
          getTargetCompletedFieldBuilder() {
        if (targetCompletedBuilder_ == null) {
          if (!(idCase_ == 5)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId.getDefaultInstance();
          }
          targetCompletedBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetCompletedId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 5;
        onChanged();
        return targetCompletedBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedIdOrBuilder> actionCompletedBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.ActionCompletedId action_completed = 6;</code>
       * @return Whether the actionCompleted field is set.
       */
      @java.lang.Override
      public boolean hasActionCompleted() {
        return idCase_ == 6;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ActionCompletedId action_completed = 6;</code>
       * @return The actionCompleted.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId getActionCompleted() {
        if (actionCompletedBuilder_ == null) {
          if (idCase_ == 6) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId.getDefaultInstance();
        } else {
          if (idCase_ == 6) {
            return actionCompletedBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.ActionCompletedId action_completed = 6;</code>
       */
      public Builder setActionCompleted(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId value) {
        if (actionCompletedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          actionCompletedBuilder_.setMessage(value);
        }
        idCase_ = 6;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ActionCompletedId action_completed = 6;</code>
       */
      public Builder setActionCompleted(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId.Builder builderForValue) {
        if (actionCompletedBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          actionCompletedBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 6;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ActionCompletedId action_completed = 6;</code>
       */
      public Builder mergeActionCompleted(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId value) {
        if (actionCompletedBuilder_ == null) {
          if (idCase_ == 6 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 6) {
            actionCompletedBuilder_.mergeFrom(value);
          } else {
            actionCompletedBuilder_.setMessage(value);
          }
        }
        idCase_ = 6;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ActionCompletedId action_completed = 6;</code>
       */
      public Builder clearActionCompleted() {
        if (actionCompletedBuilder_ == null) {
          if (idCase_ == 6) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 6) {
            idCase_ = 0;
            id_ = null;
          }
          actionCompletedBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ActionCompletedId action_completed = 6;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId.Builder getActionCompletedBuilder() {
        return getActionCompletedFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.ActionCompletedId action_completed = 6;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedIdOrBuilder getActionCompletedOrBuilder() {
        if ((idCase_ == 6) && (actionCompletedBuilder_ != null)) {
          return actionCompletedBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 6) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.ActionCompletedId action_completed = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedIdOrBuilder> 
          getActionCompletedFieldBuilder() {
        if (actionCompletedBuilder_ == null) {
          if (!(idCase_ == 6)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId.getDefaultInstance();
          }
          actionCompletedBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ActionCompletedId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 6;
        onChanged();
        return actionCompletedBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelIdOrBuilder> unconfiguredLabelBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.UnconfiguredLabelId unconfigured_label = 19;</code>
       * @return Whether the unconfiguredLabel field is set.
       */
      @java.lang.Override
      public boolean hasUnconfiguredLabel() {
        return idCase_ == 19;
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnconfiguredLabelId unconfigured_label = 19;</code>
       * @return The unconfiguredLabel.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId getUnconfiguredLabel() {
        if (unconfiguredLabelBuilder_ == null) {
          if (idCase_ == 19) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId.getDefaultInstance();
        } else {
          if (idCase_ == 19) {
            return unconfiguredLabelBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnconfiguredLabelId unconfigured_label = 19;</code>
       */
      public Builder setUnconfiguredLabel(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId value) {
        if (unconfiguredLabelBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          unconfiguredLabelBuilder_.setMessage(value);
        }
        idCase_ = 19;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnconfiguredLabelId unconfigured_label = 19;</code>
       */
      public Builder setUnconfiguredLabel(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId.Builder builderForValue) {
        if (unconfiguredLabelBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          unconfiguredLabelBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 19;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnconfiguredLabelId unconfigured_label = 19;</code>
       */
      public Builder mergeUnconfiguredLabel(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId value) {
        if (unconfiguredLabelBuilder_ == null) {
          if (idCase_ == 19 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 19) {
            unconfiguredLabelBuilder_.mergeFrom(value);
          } else {
            unconfiguredLabelBuilder_.setMessage(value);
          }
        }
        idCase_ = 19;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnconfiguredLabelId unconfigured_label = 19;</code>
       */
      public Builder clearUnconfiguredLabel() {
        if (unconfiguredLabelBuilder_ == null) {
          if (idCase_ == 19) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 19) {
            idCase_ = 0;
            id_ = null;
          }
          unconfiguredLabelBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnconfiguredLabelId unconfigured_label = 19;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId.Builder getUnconfiguredLabelBuilder() {
        return getUnconfiguredLabelFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnconfiguredLabelId unconfigured_label = 19;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelIdOrBuilder getUnconfiguredLabelOrBuilder() {
        if ((idCase_ == 19) && (unconfiguredLabelBuilder_ != null)) {
          return unconfiguredLabelBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 19) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.UnconfiguredLabelId unconfigured_label = 19;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelIdOrBuilder> 
          getUnconfiguredLabelFieldBuilder() {
        if (unconfiguredLabelBuilder_ == null) {
          if (!(idCase_ == 19)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId.getDefaultInstance();
          }
          unconfiguredLabelBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.UnconfiguredLabelId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 19;
        onChanged();
        return unconfiguredLabelBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelIdOrBuilder> configuredLabelBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.ConfiguredLabelId configured_label = 21;</code>
       * @return Whether the configuredLabel field is set.
       */
      @java.lang.Override
      public boolean hasConfiguredLabel() {
        return idCase_ == 21;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfiguredLabelId configured_label = 21;</code>
       * @return The configuredLabel.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId getConfiguredLabel() {
        if (configuredLabelBuilder_ == null) {
          if (idCase_ == 21) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId.getDefaultInstance();
        } else {
          if (idCase_ == 21) {
            return configuredLabelBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfiguredLabelId configured_label = 21;</code>
       */
      public Builder setConfiguredLabel(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId value) {
        if (configuredLabelBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          configuredLabelBuilder_.setMessage(value);
        }
        idCase_ = 21;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfiguredLabelId configured_label = 21;</code>
       */
      public Builder setConfiguredLabel(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId.Builder builderForValue) {
        if (configuredLabelBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          configuredLabelBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 21;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfiguredLabelId configured_label = 21;</code>
       */
      public Builder mergeConfiguredLabel(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId value) {
        if (configuredLabelBuilder_ == null) {
          if (idCase_ == 21 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 21) {
            configuredLabelBuilder_.mergeFrom(value);
          } else {
            configuredLabelBuilder_.setMessage(value);
          }
        }
        idCase_ = 21;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfiguredLabelId configured_label = 21;</code>
       */
      public Builder clearConfiguredLabel() {
        if (configuredLabelBuilder_ == null) {
          if (idCase_ == 21) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 21) {
            idCase_ = 0;
            id_ = null;
          }
          configuredLabelBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfiguredLabelId configured_label = 21;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId.Builder getConfiguredLabelBuilder() {
        return getConfiguredLabelFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfiguredLabelId configured_label = 21;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelIdOrBuilder getConfiguredLabelOrBuilder() {
        if ((idCase_ == 21) && (configuredLabelBuilder_ != null)) {
          return configuredLabelBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 21) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConfiguredLabelId configured_label = 21;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelIdOrBuilder> 
          getConfiguredLabelFieldBuilder() {
        if (configuredLabelBuilder_ == null) {
          if (!(idCase_ == 21)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId.getDefaultInstance();
          }
          configuredLabelBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfiguredLabelId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 21;
        onChanged();
        return configuredLabelBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultIdOrBuilder> testResultBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.TestResultId test_result = 8;</code>
       * @return Whether the testResult field is set.
       */
      @java.lang.Override
      public boolean hasTestResult() {
        return idCase_ == 8;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TestResultId test_result = 8;</code>
       * @return The testResult.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId getTestResult() {
        if (testResultBuilder_ == null) {
          if (idCase_ == 8) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId.getDefaultInstance();
        } else {
          if (idCase_ == 8) {
            return testResultBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.TestResultId test_result = 8;</code>
       */
      public Builder setTestResult(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId value) {
        if (testResultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          testResultBuilder_.setMessage(value);
        }
        idCase_ = 8;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TestResultId test_result = 8;</code>
       */
      public Builder setTestResult(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId.Builder builderForValue) {
        if (testResultBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          testResultBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 8;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TestResultId test_result = 8;</code>
       */
      public Builder mergeTestResult(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId value) {
        if (testResultBuilder_ == null) {
          if (idCase_ == 8 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 8) {
            testResultBuilder_.mergeFrom(value);
          } else {
            testResultBuilder_.setMessage(value);
          }
        }
        idCase_ = 8;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TestResultId test_result = 8;</code>
       */
      public Builder clearTestResult() {
        if (testResultBuilder_ == null) {
          if (idCase_ == 8) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 8) {
            idCase_ = 0;
            id_ = null;
          }
          testResultBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TestResultId test_result = 8;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId.Builder getTestResultBuilder() {
        return getTestResultFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.TestResultId test_result = 8;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultIdOrBuilder getTestResultOrBuilder() {
        if ((idCase_ == 8) && (testResultBuilder_ != null)) {
          return testResultBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 8) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.TestResultId test_result = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultIdOrBuilder> 
          getTestResultFieldBuilder() {
        if (testResultBuilder_ == null) {
          if (!(idCase_ == 8)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId.getDefaultInstance();
          }
          testResultBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestResultId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 8;
        onChanged();
        return testResultBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryIdOrBuilder> testSummaryBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.TestSummaryId test_summary = 7;</code>
       * @return Whether the testSummary field is set.
       */
      @java.lang.Override
      public boolean hasTestSummary() {
        return idCase_ == 7;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TestSummaryId test_summary = 7;</code>
       * @return The testSummary.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId getTestSummary() {
        if (testSummaryBuilder_ == null) {
          if (idCase_ == 7) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId.getDefaultInstance();
        } else {
          if (idCase_ == 7) {
            return testSummaryBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.TestSummaryId test_summary = 7;</code>
       */
      public Builder setTestSummary(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId value) {
        if (testSummaryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          testSummaryBuilder_.setMessage(value);
        }
        idCase_ = 7;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TestSummaryId test_summary = 7;</code>
       */
      public Builder setTestSummary(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId.Builder builderForValue) {
        if (testSummaryBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          testSummaryBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 7;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TestSummaryId test_summary = 7;</code>
       */
      public Builder mergeTestSummary(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId value) {
        if (testSummaryBuilder_ == null) {
          if (idCase_ == 7 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 7) {
            testSummaryBuilder_.mergeFrom(value);
          } else {
            testSummaryBuilder_.setMessage(value);
          }
        }
        idCase_ = 7;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TestSummaryId test_summary = 7;</code>
       */
      public Builder clearTestSummary() {
        if (testSummaryBuilder_ == null) {
          if (idCase_ == 7) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 7) {
            idCase_ = 0;
            id_ = null;
          }
          testSummaryBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TestSummaryId test_summary = 7;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId.Builder getTestSummaryBuilder() {
        return getTestSummaryFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.TestSummaryId test_summary = 7;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryIdOrBuilder getTestSummaryOrBuilder() {
        if ((idCase_ == 7) && (testSummaryBuilder_ != null)) {
          return testSummaryBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 7) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.TestSummaryId test_summary = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryIdOrBuilder> 
          getTestSummaryFieldBuilder() {
        if (testSummaryBuilder_ == null) {
          if (!(idCase_ == 7)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId.getDefaultInstance();
          }
          testSummaryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TestSummaryId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 7;
        onChanged();
        return testSummaryBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryIdOrBuilder> targetSummaryBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.TargetSummaryId target_summary = 26;</code>
       * @return Whether the targetSummary field is set.
       */
      @java.lang.Override
      public boolean hasTargetSummary() {
        return idCase_ == 26;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetSummaryId target_summary = 26;</code>
       * @return The targetSummary.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId getTargetSummary() {
        if (targetSummaryBuilder_ == null) {
          if (idCase_ == 26) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId.getDefaultInstance();
        } else {
          if (idCase_ == 26) {
            return targetSummaryBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetSummaryId target_summary = 26;</code>
       */
      public Builder setTargetSummary(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId value) {
        if (targetSummaryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          targetSummaryBuilder_.setMessage(value);
        }
        idCase_ = 26;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetSummaryId target_summary = 26;</code>
       */
      public Builder setTargetSummary(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId.Builder builderForValue) {
        if (targetSummaryBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          targetSummaryBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 26;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetSummaryId target_summary = 26;</code>
       */
      public Builder mergeTargetSummary(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId value) {
        if (targetSummaryBuilder_ == null) {
          if (idCase_ == 26 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 26) {
            targetSummaryBuilder_.mergeFrom(value);
          } else {
            targetSummaryBuilder_.setMessage(value);
          }
        }
        idCase_ = 26;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetSummaryId target_summary = 26;</code>
       */
      public Builder clearTargetSummary() {
        if (targetSummaryBuilder_ == null) {
          if (idCase_ == 26) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 26) {
            idCase_ = 0;
            id_ = null;
          }
          targetSummaryBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetSummaryId target_summary = 26;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId.Builder getTargetSummaryBuilder() {
        return getTargetSummaryFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetSummaryId target_summary = 26;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryIdOrBuilder getTargetSummaryOrBuilder() {
        if ((idCase_ == 26) && (targetSummaryBuilder_ != null)) {
          return targetSummaryBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 26) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.TargetSummaryId target_summary = 26;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryIdOrBuilder> 
          getTargetSummaryFieldBuilder() {
        if (targetSummaryBuilder_ == null) {
          if (!(idCase_ == 26)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId.getDefaultInstance();
          }
          targetSummaryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.TargetSummaryId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 26;
        onChanged();
        return targetSummaryBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedIdOrBuilder> buildFinishedBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.BuildFinishedId build_finished = 9;</code>
       * @return Whether the buildFinished field is set.
       */
      @java.lang.Override
      public boolean hasBuildFinished() {
        return idCase_ == 9;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildFinishedId build_finished = 9;</code>
       * @return The buildFinished.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId getBuildFinished() {
        if (buildFinishedBuilder_ == null) {
          if (idCase_ == 9) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId.getDefaultInstance();
        } else {
          if (idCase_ == 9) {
            return buildFinishedBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildFinishedId build_finished = 9;</code>
       */
      public Builder setBuildFinished(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId value) {
        if (buildFinishedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          buildFinishedBuilder_.setMessage(value);
        }
        idCase_ = 9;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildFinishedId build_finished = 9;</code>
       */
      public Builder setBuildFinished(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId.Builder builderForValue) {
        if (buildFinishedBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          buildFinishedBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 9;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildFinishedId build_finished = 9;</code>
       */
      public Builder mergeBuildFinished(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId value) {
        if (buildFinishedBuilder_ == null) {
          if (idCase_ == 9 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 9) {
            buildFinishedBuilder_.mergeFrom(value);
          } else {
            buildFinishedBuilder_.setMessage(value);
          }
        }
        idCase_ = 9;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildFinishedId build_finished = 9;</code>
       */
      public Builder clearBuildFinished() {
        if (buildFinishedBuilder_ == null) {
          if (idCase_ == 9) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 9) {
            idCase_ = 0;
            id_ = null;
          }
          buildFinishedBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildFinishedId build_finished = 9;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId.Builder getBuildFinishedBuilder() {
        return getBuildFinishedFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildFinishedId build_finished = 9;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedIdOrBuilder getBuildFinishedOrBuilder() {
        if ((idCase_ == 9) && (buildFinishedBuilder_ != null)) {
          return buildFinishedBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 9) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildFinishedId build_finished = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedIdOrBuilder> 
          getBuildFinishedFieldBuilder() {
        if (buildFinishedBuilder_ == null) {
          if (!(idCase_ == 9)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId.getDefaultInstance();
          }
          buildFinishedBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildFinishedId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 9;
        onChanged();
        return buildFinishedBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsIdOrBuilder> buildToolLogsBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.BuildToolLogsId build_tool_logs = 20;</code>
       * @return Whether the buildToolLogs field is set.
       */
      @java.lang.Override
      public boolean hasBuildToolLogs() {
        return idCase_ == 20;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildToolLogsId build_tool_logs = 20;</code>
       * @return The buildToolLogs.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId getBuildToolLogs() {
        if (buildToolLogsBuilder_ == null) {
          if (idCase_ == 20) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId.getDefaultInstance();
        } else {
          if (idCase_ == 20) {
            return buildToolLogsBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildToolLogsId build_tool_logs = 20;</code>
       */
      public Builder setBuildToolLogs(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId value) {
        if (buildToolLogsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          buildToolLogsBuilder_.setMessage(value);
        }
        idCase_ = 20;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildToolLogsId build_tool_logs = 20;</code>
       */
      public Builder setBuildToolLogs(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId.Builder builderForValue) {
        if (buildToolLogsBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          buildToolLogsBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 20;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildToolLogsId build_tool_logs = 20;</code>
       */
      public Builder mergeBuildToolLogs(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId value) {
        if (buildToolLogsBuilder_ == null) {
          if (idCase_ == 20 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 20) {
            buildToolLogsBuilder_.mergeFrom(value);
          } else {
            buildToolLogsBuilder_.setMessage(value);
          }
        }
        idCase_ = 20;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildToolLogsId build_tool_logs = 20;</code>
       */
      public Builder clearBuildToolLogs() {
        if (buildToolLogsBuilder_ == null) {
          if (idCase_ == 20) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 20) {
            idCase_ = 0;
            id_ = null;
          }
          buildToolLogsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildToolLogsId build_tool_logs = 20;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId.Builder getBuildToolLogsBuilder() {
        return getBuildToolLogsFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildToolLogsId build_tool_logs = 20;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsIdOrBuilder getBuildToolLogsOrBuilder() {
        if ((idCase_ == 20) && (buildToolLogsBuilder_ != null)) {
          return buildToolLogsBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 20) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildToolLogsId build_tool_logs = 20;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsIdOrBuilder> 
          getBuildToolLogsFieldBuilder() {
        if (buildToolLogsBuilder_ == null) {
          if (!(idCase_ == 20)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId.getDefaultInstance();
          }
          buildToolLogsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildToolLogsId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 20;
        onChanged();
        return buildToolLogsBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsIdOrBuilder> buildMetricsBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.BuildMetricsId build_metrics = 22;</code>
       * @return Whether the buildMetrics field is set.
       */
      @java.lang.Override
      public boolean hasBuildMetrics() {
        return idCase_ == 22;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildMetricsId build_metrics = 22;</code>
       * @return The buildMetrics.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId getBuildMetrics() {
        if (buildMetricsBuilder_ == null) {
          if (idCase_ == 22) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId.getDefaultInstance();
        } else {
          if (idCase_ == 22) {
            return buildMetricsBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildMetricsId build_metrics = 22;</code>
       */
      public Builder setBuildMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId value) {
        if (buildMetricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          buildMetricsBuilder_.setMessage(value);
        }
        idCase_ = 22;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildMetricsId build_metrics = 22;</code>
       */
      public Builder setBuildMetrics(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId.Builder builderForValue) {
        if (buildMetricsBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          buildMetricsBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 22;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildMetricsId build_metrics = 22;</code>
       */
      public Builder mergeBuildMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId value) {
        if (buildMetricsBuilder_ == null) {
          if (idCase_ == 22 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 22) {
            buildMetricsBuilder_.mergeFrom(value);
          } else {
            buildMetricsBuilder_.setMessage(value);
          }
        }
        idCase_ = 22;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildMetricsId build_metrics = 22;</code>
       */
      public Builder clearBuildMetrics() {
        if (buildMetricsBuilder_ == null) {
          if (idCase_ == 22) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 22) {
            idCase_ = 0;
            id_ = null;
          }
          buildMetricsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildMetricsId build_metrics = 22;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId.Builder getBuildMetricsBuilder() {
        return getBuildMetricsFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildMetricsId build_metrics = 22;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsIdOrBuilder getBuildMetricsOrBuilder() {
        if ((idCase_ == 22) && (buildMetricsBuilder_ != null)) {
          return buildMetricsBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 22) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildMetricsId build_metrics = 22;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsIdOrBuilder> 
          getBuildMetricsFieldBuilder() {
        if (buildMetricsBuilder_ == null) {
          if (!(idCase_ == 22)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId.getDefaultInstance();
          }
          buildMetricsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetricsId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 22;
        onChanged();
        return buildMetricsBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigIdOrBuilder> workspaceBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.WorkspaceConfigId workspace = 23;</code>
       * @return Whether the workspace field is set.
       */
      @java.lang.Override
      public boolean hasWorkspace() {
        return idCase_ == 23;
      }
      /**
       * <code>.build_event_stream.BuildEventId.WorkspaceConfigId workspace = 23;</code>
       * @return The workspace.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId getWorkspace() {
        if (workspaceBuilder_ == null) {
          if (idCase_ == 23) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId.getDefaultInstance();
        } else {
          if (idCase_ == 23) {
            return workspaceBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.WorkspaceConfigId workspace = 23;</code>
       */
      public Builder setWorkspace(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId value) {
        if (workspaceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          workspaceBuilder_.setMessage(value);
        }
        idCase_ = 23;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.WorkspaceConfigId workspace = 23;</code>
       */
      public Builder setWorkspace(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId.Builder builderForValue) {
        if (workspaceBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          workspaceBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 23;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.WorkspaceConfigId workspace = 23;</code>
       */
      public Builder mergeWorkspace(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId value) {
        if (workspaceBuilder_ == null) {
          if (idCase_ == 23 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 23) {
            workspaceBuilder_.mergeFrom(value);
          } else {
            workspaceBuilder_.setMessage(value);
          }
        }
        idCase_ = 23;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.WorkspaceConfigId workspace = 23;</code>
       */
      public Builder clearWorkspace() {
        if (workspaceBuilder_ == null) {
          if (idCase_ == 23) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 23) {
            idCase_ = 0;
            id_ = null;
          }
          workspaceBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.WorkspaceConfigId workspace = 23;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId.Builder getWorkspaceBuilder() {
        return getWorkspaceFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.WorkspaceConfigId workspace = 23;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigIdOrBuilder getWorkspaceOrBuilder() {
        if ((idCase_ == 23) && (workspaceBuilder_ != null)) {
          return workspaceBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 23) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.WorkspaceConfigId workspace = 23;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigIdOrBuilder> 
          getWorkspaceFieldBuilder() {
        if (workspaceBuilder_ == null) {
          if (!(idCase_ == 23)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId.getDefaultInstance();
          }
          workspaceBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.WorkspaceConfigId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 23;
        onChanged();
        return workspaceBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataIdOrBuilder> buildMetadataBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.BuildMetadataId build_metadata = 24;</code>
       * @return Whether the buildMetadata field is set.
       */
      @java.lang.Override
      public boolean hasBuildMetadata() {
        return idCase_ == 24;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildMetadataId build_metadata = 24;</code>
       * @return The buildMetadata.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId getBuildMetadata() {
        if (buildMetadataBuilder_ == null) {
          if (idCase_ == 24) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId.getDefaultInstance();
        } else {
          if (idCase_ == 24) {
            return buildMetadataBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildMetadataId build_metadata = 24;</code>
       */
      public Builder setBuildMetadata(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId value) {
        if (buildMetadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          buildMetadataBuilder_.setMessage(value);
        }
        idCase_ = 24;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildMetadataId build_metadata = 24;</code>
       */
      public Builder setBuildMetadata(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId.Builder builderForValue) {
        if (buildMetadataBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          buildMetadataBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 24;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildMetadataId build_metadata = 24;</code>
       */
      public Builder mergeBuildMetadata(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId value) {
        if (buildMetadataBuilder_ == null) {
          if (idCase_ == 24 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 24) {
            buildMetadataBuilder_.mergeFrom(value);
          } else {
            buildMetadataBuilder_.setMessage(value);
          }
        }
        idCase_ = 24;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildMetadataId build_metadata = 24;</code>
       */
      public Builder clearBuildMetadata() {
        if (buildMetadataBuilder_ == null) {
          if (idCase_ == 24) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 24) {
            idCase_ = 0;
            id_ = null;
          }
          buildMetadataBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildMetadataId build_metadata = 24;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId.Builder getBuildMetadataBuilder() {
        return getBuildMetadataFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildMetadataId build_metadata = 24;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataIdOrBuilder getBuildMetadataOrBuilder() {
        if ((idCase_ == 24) && (buildMetadataBuilder_ != null)) {
          return buildMetadataBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 24) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.BuildMetadataId build_metadata = 24;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataIdOrBuilder> 
          getBuildMetadataFieldBuilder() {
        if (buildMetadataBuilder_ == null) {
          if (!(idCase_ == 24)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId.getDefaultInstance();
          }
          buildMetadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.BuildMetadataId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 24;
        onChanged();
        return buildMetadataBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedIdOrBuilder> convenienceSymlinksIdentifiedBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId convenience_symlinks_identified = 25;</code>
       * @return Whether the convenienceSymlinksIdentified field is set.
       */
      @java.lang.Override
      public boolean hasConvenienceSymlinksIdentified() {
        return idCase_ == 25;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId convenience_symlinks_identified = 25;</code>
       * @return The convenienceSymlinksIdentified.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId getConvenienceSymlinksIdentified() {
        if (convenienceSymlinksIdentifiedBuilder_ == null) {
          if (idCase_ == 25) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId.getDefaultInstance();
        } else {
          if (idCase_ == 25) {
            return convenienceSymlinksIdentifiedBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId convenience_symlinks_identified = 25;</code>
       */
      public Builder setConvenienceSymlinksIdentified(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId value) {
        if (convenienceSymlinksIdentifiedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
          onChanged();
        } else {
          convenienceSymlinksIdentifiedBuilder_.setMessage(value);
        }
        idCase_ = 25;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId convenience_symlinks_identified = 25;</code>
       */
      public Builder setConvenienceSymlinksIdentified(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId.Builder builderForValue) {
        if (convenienceSymlinksIdentifiedBuilder_ == null) {
          id_ = builderForValue.build();
          onChanged();
        } else {
          convenienceSymlinksIdentifiedBuilder_.setMessage(builderForValue.build());
        }
        idCase_ = 25;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId convenience_symlinks_identified = 25;</code>
       */
      public Builder mergeConvenienceSymlinksIdentified(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId value) {
        if (convenienceSymlinksIdentifiedBuilder_ == null) {
          if (idCase_ == 25 &&
              id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId.getDefaultInstance()) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId) id_)
                .mergeFrom(value).buildPartial();
          } else {
            id_ = value;
          }
          onChanged();
        } else {
          if (idCase_ == 25) {
            convenienceSymlinksIdentifiedBuilder_.mergeFrom(value);
          } else {
            convenienceSymlinksIdentifiedBuilder_.setMessage(value);
          }
        }
        idCase_ = 25;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId convenience_symlinks_identified = 25;</code>
       */
      public Builder clearConvenienceSymlinksIdentified() {
        if (convenienceSymlinksIdentifiedBuilder_ == null) {
          if (idCase_ == 25) {
            idCase_ = 0;
            id_ = null;
            onChanged();
          }
        } else {
          if (idCase_ == 25) {
            idCase_ = 0;
            id_ = null;
          }
          convenienceSymlinksIdentifiedBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId convenience_symlinks_identified = 25;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId.Builder getConvenienceSymlinksIdentifiedBuilder() {
        return getConvenienceSymlinksIdentifiedFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId convenience_symlinks_identified = 25;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedIdOrBuilder getConvenienceSymlinksIdentifiedOrBuilder() {
        if ((idCase_ == 25) && (convenienceSymlinksIdentifiedBuilder_ != null)) {
          return convenienceSymlinksIdentifiedBuilder_.getMessageOrBuilder();
        } else {
          if (idCase_ == 25) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId) id_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId.ConvenienceSymlinksIdentifiedId convenience_symlinks_identified = 25;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedIdOrBuilder> 
          getConvenienceSymlinksIdentifiedFieldBuilder() {
        if (convenienceSymlinksIdentifiedBuilder_ == null) {
          if (!(idCase_ == 25)) {
            id_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId.getDefaultInstance();
          }
          convenienceSymlinksIdentifiedBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedIdOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConvenienceSymlinksIdentifiedId) id_,
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        idCase_ = 25;
        onChanged();
        return convenienceSymlinksIdentifiedBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEventId)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.BuildEventId)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ProgressOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.Progress)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The next chunk of stdout that bazel produced since the last progress event
     * or the beginning of the build.
     * </pre>
     *
     * <code>string stdout = 1;</code>
     * @return The stdout.
     */
    java.lang.String getStdout();
    /**
     * <pre>
     * The next chunk of stdout that bazel produced since the last progress event
     * or the beginning of the build.
     * </pre>
     *
     * <code>string stdout = 1;</code>
     * @return The bytes for stdout.
     */
    com.google.protobuf.ByteString
        getStdoutBytes();

    /**
     * <pre>
     * The next chunk of stderr that bazel produced since the last progress event
     * or the beginning of the build.
     * </pre>
     *
     * <code>string stderr = 2;</code>
     * @return The stderr.
     */
    java.lang.String getStderr();
    /**
     * <pre>
     * The next chunk of stderr that bazel produced since the last progress event
     * or the beginning of the build.
     * </pre>
     *
     * <code>string stderr = 2;</code>
     * @return The bytes for stderr.
     */
    com.google.protobuf.ByteString
        getStderrBytes();
  }
  /**
   * <pre>
   * Payload of an event summarizing the progress of the build so far. Those
   * events are also used to be parents of events where the more logical parent
   * event cannot be posted yet as the needed information is not yet complete.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.Progress}
   */
  public static final class Progress extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.Progress)
      ProgressOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Progress.newBuilder() to construct.
    private Progress(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Progress() {
      stdout_ = "";
      stderr_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Progress_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Progress_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress.Builder.class);
    }

    public static final int STDOUT_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object stdout_ = "";
    /**
     * <pre>
     * The next chunk of stdout that bazel produced since the last progress event
     * or the beginning of the build.
     * </pre>
     *
     * <code>string stdout = 1;</code>
     * @return The stdout.
     */
    @java.lang.Override
    public java.lang.String getStdout() {
      java.lang.Object ref = stdout_;
      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();
        stdout_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The next chunk of stdout that bazel produced since the last progress event
     * or the beginning of the build.
     * </pre>
     *
     * <code>string stdout = 1;</code>
     * @return The bytes for stdout.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStdoutBytes() {
      java.lang.Object ref = stdout_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        stdout_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STDERR_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object stderr_ = "";
    /**
     * <pre>
     * The next chunk of stderr that bazel produced since the last progress event
     * or the beginning of the build.
     * </pre>
     *
     * <code>string stderr = 2;</code>
     * @return The stderr.
     */
    @java.lang.Override
    public java.lang.String getStderr() {
      java.lang.Object ref = stderr_;
      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();
        stderr_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The next chunk of stderr that bazel produced since the last progress event
     * or the beginning of the build.
     * </pre>
     *
     * <code>string stderr = 2;</code>
     * @return The bytes for stderr.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStderrBytes() {
      java.lang.Object ref = stderr_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        stderr_ = 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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(stdout_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, stdout_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(stderr_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, stderr_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(stdout_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, stdout_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(stderr_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, stderr_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (!getStdout()
          .equals(other.getStdout())) return false;
      if (!getStderr()
          .equals(other.getStderr())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + STDOUT_FIELD_NUMBER;
      hash = (53 * hash) + getStdout().hashCode();
      hash = (37 * hash) + STDERR_FIELD_NUMBER;
      hash = (53 * hash) + getStderr().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress 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.buildeventstream.BuildEventStreamProtos.Progress parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress 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.buildeventstream.BuildEventStreamProtos.Progress parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress 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.buildeventstream.BuildEventStreamProtos.Progress parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress 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.buildeventstream.BuildEventStreamProtos.Progress parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress 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.buildeventstream.BuildEventStreamProtos.Progress 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.buildeventstream.BuildEventStreamProtos.Progress 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.buildeventstream.BuildEventStreamProtos.Progress 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>
     * Payload of an event summarizing the progress of the build so far. Those
     * events are also used to be parents of events where the more logical parent
     * event cannot be posted yet as the needed information is not yet complete.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.Progress}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.Progress)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ProgressOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Progress_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Progress_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        stdout_ = "";
        stderr_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Progress_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.stdout_ = stdout_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.stderr_ = stderr_;
        }
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress.getDefaultInstance()) return this;
        if (!other.getStdout().isEmpty()) {
          stdout_ = other.stdout_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getStderr().isEmpty()) {
          stderr_ = other.stderr_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                stdout_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                stderr_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object stdout_ = "";
      /**
       * <pre>
       * The next chunk of stdout that bazel produced since the last progress event
       * or the beginning of the build.
       * </pre>
       *
       * <code>string stdout = 1;</code>
       * @return The stdout.
       */
      public java.lang.String getStdout() {
        java.lang.Object ref = stdout_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          stdout_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The next chunk of stdout that bazel produced since the last progress event
       * or the beginning of the build.
       * </pre>
       *
       * <code>string stdout = 1;</code>
       * @return The bytes for stdout.
       */
      public com.google.protobuf.ByteString
          getStdoutBytes() {
        java.lang.Object ref = stdout_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          stdout_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The next chunk of stdout that bazel produced since the last progress event
       * or the beginning of the build.
       * </pre>
       *
       * <code>string stdout = 1;</code>
       * @param value The stdout to set.
       * @return This builder for chaining.
       */
      public Builder setStdout(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        stdout_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The next chunk of stdout that bazel produced since the last progress event
       * or the beginning of the build.
       * </pre>
       *
       * <code>string stdout = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearStdout() {
        stdout_ = getDefaultInstance().getStdout();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The next chunk of stdout that bazel produced since the last progress event
       * or the beginning of the build.
       * </pre>
       *
       * <code>string stdout = 1;</code>
       * @param value The bytes for stdout to set.
       * @return This builder for chaining.
       */
      public Builder setStdoutBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        stdout_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object stderr_ = "";
      /**
       * <pre>
       * The next chunk of stderr that bazel produced since the last progress event
       * or the beginning of the build.
       * </pre>
       *
       * <code>string stderr = 2;</code>
       * @return The stderr.
       */
      public java.lang.String getStderr() {
        java.lang.Object ref = stderr_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          stderr_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The next chunk of stderr that bazel produced since the last progress event
       * or the beginning of the build.
       * </pre>
       *
       * <code>string stderr = 2;</code>
       * @return The bytes for stderr.
       */
      public com.google.protobuf.ByteString
          getStderrBytes() {
        java.lang.Object ref = stderr_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          stderr_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The next chunk of stderr that bazel produced since the last progress event
       * or the beginning of the build.
       * </pre>
       *
       * <code>string stderr = 2;</code>
       * @param value The stderr to set.
       * @return This builder for chaining.
       */
      public Builder setStderr(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        stderr_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The next chunk of stderr that bazel produced since the last progress event
       * or the beginning of the build.
       * </pre>
       *
       * <code>string stderr = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearStderr() {
        stderr_ = getDefaultInstance().getStderr();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The next chunk of stderr that bazel produced since the last progress event
       * or the beginning of the build.
       * </pre>
       *
       * <code>string stderr = 2;</code>
       * @param value The bytes for stderr to set.
       * @return This builder for chaining.
       */
      public Builder setStderrBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        stderr_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:build_event_stream.Progress)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.Progress)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AbortedOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.Aborted)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.build_event_stream.Aborted.AbortReason reason = 1;</code>
     * @return The enum numeric value on the wire for reason.
     */
    int getReasonValue();
    /**
     * <code>.build_event_stream.Aborted.AbortReason reason = 1;</code>
     * @return The reason.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.AbortReason getReason();

    /**
     * <pre>
     * A human readable description with more details about there reason, where
     * available and useful.
     * </pre>
     *
     * <code>string description = 2;</code>
     * @return The description.
     */
    java.lang.String getDescription();
    /**
     * <pre>
     * A human readable description with more details about there reason, where
     * available and useful.
     * </pre>
     *
     * <code>string description = 2;</code>
     * @return The bytes for description.
     */
    com.google.protobuf.ByteString
        getDescriptionBytes();
  }
  /**
   * <pre>
   * Payload of an event indicating that an expected event will not come, as
   * the build is aborted prematurely for some reason.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.Aborted}
   */
  public static final class Aborted extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.Aborted)
      AbortedOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Aborted.newBuilder() to construct.
    private Aborted(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Aborted() {
      reason_ = 0;
      description_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Aborted_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Aborted_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.Builder.class);
    }

    /**
     * Protobuf enum {@code build_event_stream.Aborted.AbortReason}
     */
    public enum AbortReason
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <pre>
       * The user requested the build to be aborted (e.g., by hitting Ctl-C).
       * </pre>
       *
       * <code>USER_INTERRUPTED = 1;</code>
       */
      USER_INTERRUPTED(1),
      /**
       * <pre>
       * The user requested that no analysis be performed.
       * </pre>
       *
       * <code>NO_ANALYZE = 8;</code>
       */
      NO_ANALYZE(8),
      /**
       * <pre>
       * The user requested that no build be carried out.
       * </pre>
       *
       * <code>NO_BUILD = 9;</code>
       */
      NO_BUILD(9),
      /**
       * <pre>
       * The build or target was aborted as a timeout was exceeded.
       * </pre>
       *
       * <code>TIME_OUT = 2;</code>
       */
      TIME_OUT(2),
      /**
       * <pre>
       * The build or target was aborted as some remote environment (e.g., for
       * remote execution of actions) was not available in the expected way.
       * </pre>
       *
       * <code>REMOTE_ENVIRONMENT_FAILURE = 3;</code>
       */
      REMOTE_ENVIRONMENT_FAILURE(3),
      /**
       * <pre>
       * Failure due to reasons entirely internal to the build tool, i.e. an
       * unexpected crash due to programmer error.
       * </pre>
       *
       * <code>INTERNAL = 4;</code>
       */
      INTERNAL(4),
      /**
       * <pre>
       * A Failure occurred in the loading phase of a target.
       * </pre>
       *
       * <code>LOADING_FAILURE = 5;</code>
       */
      LOADING_FAILURE(5),
      /**
       * <pre>
       * A Failure occurred in the analysis phase of a target.
       * </pre>
       *
       * <code>ANALYSIS_FAILURE = 6;</code>
       */
      ANALYSIS_FAILURE(6),
      /**
       * <pre>
       * Target build was skipped (e.g. due to incompatible CPU constraints).
       * </pre>
       *
       * <code>SKIPPED = 7;</code>
       */
      SKIPPED(7),
      /**
       * <pre>
       * Build incomplete due to an earlier build failure (e.g. --keep_going was
       * set to false causing the build be ended upon failure).
       * </pre>
       *
       * <code>INCOMPLETE = 10;</code>
       */
      INCOMPLETE(10),
      /**
       * <pre>
       * The build tool ran out of memory and crashed.
       * </pre>
       *
       * <code>OUT_OF_MEMORY = 11;</code>
       */
      OUT_OF_MEMORY(11),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <pre>
       * The user requested the build to be aborted (e.g., by hitting Ctl-C).
       * </pre>
       *
       * <code>USER_INTERRUPTED = 1;</code>
       */
      public static final int USER_INTERRUPTED_VALUE = 1;
      /**
       * <pre>
       * The user requested that no analysis be performed.
       * </pre>
       *
       * <code>NO_ANALYZE = 8;</code>
       */
      public static final int NO_ANALYZE_VALUE = 8;
      /**
       * <pre>
       * The user requested that no build be carried out.
       * </pre>
       *
       * <code>NO_BUILD = 9;</code>
       */
      public static final int NO_BUILD_VALUE = 9;
      /**
       * <pre>
       * The build or target was aborted as a timeout was exceeded.
       * </pre>
       *
       * <code>TIME_OUT = 2;</code>
       */
      public static final int TIME_OUT_VALUE = 2;
      /**
       * <pre>
       * The build or target was aborted as some remote environment (e.g., for
       * remote execution of actions) was not available in the expected way.
       * </pre>
       *
       * <code>REMOTE_ENVIRONMENT_FAILURE = 3;</code>
       */
      public static final int REMOTE_ENVIRONMENT_FAILURE_VALUE = 3;
      /**
       * <pre>
       * Failure due to reasons entirely internal to the build tool, i.e. an
       * unexpected crash due to programmer error.
       * </pre>
       *
       * <code>INTERNAL = 4;</code>
       */
      public static final int INTERNAL_VALUE = 4;
      /**
       * <pre>
       * A Failure occurred in the loading phase of a target.
       * </pre>
       *
       * <code>LOADING_FAILURE = 5;</code>
       */
      public static final int LOADING_FAILURE_VALUE = 5;
      /**
       * <pre>
       * A Failure occurred in the analysis phase of a target.
       * </pre>
       *
       * <code>ANALYSIS_FAILURE = 6;</code>
       */
      public static final int ANALYSIS_FAILURE_VALUE = 6;
      /**
       * <pre>
       * Target build was skipped (e.g. due to incompatible CPU constraints).
       * </pre>
       *
       * <code>SKIPPED = 7;</code>
       */
      public static final int SKIPPED_VALUE = 7;
      /**
       * <pre>
       * Build incomplete due to an earlier build failure (e.g. --keep_going was
       * set to false causing the build be ended upon failure).
       * </pre>
       *
       * <code>INCOMPLETE = 10;</code>
       */
      public static final int INCOMPLETE_VALUE = 10;
      /**
       * <pre>
       * The build tool ran out of memory and crashed.
       * </pre>
       *
       * <code>OUT_OF_MEMORY = 11;</code>
       */
      public static final int OUT_OF_MEMORY_VALUE = 11;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static AbortReason valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static AbortReason forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 1: return USER_INTERRUPTED;
          case 8: return NO_ANALYZE;
          case 9: return NO_BUILD;
          case 2: return TIME_OUT;
          case 3: return REMOTE_ENVIRONMENT_FAILURE;
          case 4: return INTERNAL;
          case 5: return LOADING_FAILURE;
          case 6: return ANALYSIS_FAILURE;
          case 7: return SKIPPED;
          case 10: return INCOMPLETE;
          case 11: return OUT_OF_MEMORY;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:build_event_stream.Aborted.AbortReason)
    }

    public static final int REASON_FIELD_NUMBER = 1;
    private int reason_ = 0;
    /**
     * <code>.build_event_stream.Aborted.AbortReason reason = 1;</code>
     * @return The enum numeric value on the wire for reason.
     */
    @java.lang.Override public int getReasonValue() {
      return reason_;
    }
    /**
     * <code>.build_event_stream.Aborted.AbortReason reason = 1;</code>
     * @return The reason.
     */
    @java.lang.Override public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.AbortReason getReason() {
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.AbortReason result = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.AbortReason.forNumber(reason_);
      return result == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.AbortReason.UNRECOGNIZED : result;
    }

    public static final int DESCRIPTION_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object description_ = "";
    /**
     * <pre>
     * A human readable description with more details about there reason, where
     * available and useful.
     * </pre>
     *
     * <code>string description = 2;</code>
     * @return The description.
     */
    @java.lang.Override
    public java.lang.String getDescription() {
      java.lang.Object ref = description_;
      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();
        description_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * A human readable description with more details about there reason, where
     * available and useful.
     * </pre>
     *
     * <code>string description = 2;</code>
     * @return The bytes for description.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDescriptionBytes() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        description_ = 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 (reason_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.AbortReason.UNKNOWN.getNumber()) {
        output.writeEnum(1, reason_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, description_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (reason_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.AbortReason.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, reason_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, description_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (reason_ != other.reason_) return false;
      if (!getDescription()
          .equals(other.getDescription())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + REASON_FIELD_NUMBER;
      hash = (53 * hash) + reason_;
      hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
      hash = (53 * hash) + getDescription().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted 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.buildeventstream.BuildEventStreamProtos.Aborted parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted 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.buildeventstream.BuildEventStreamProtos.Aborted parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted 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.buildeventstream.BuildEventStreamProtos.Aborted parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted 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.buildeventstream.BuildEventStreamProtos.Aborted parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted 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.buildeventstream.BuildEventStreamProtos.Aborted 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.buildeventstream.BuildEventStreamProtos.Aborted 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.buildeventstream.BuildEventStreamProtos.Aborted 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>
     * Payload of an event indicating that an expected event will not come, as
     * the build is aborted prematurely for some reason.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.Aborted}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.Aborted)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.AbortedOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Aborted_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Aborted_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        reason_ = 0;
        description_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Aborted_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.reason_ = reason_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.description_ = description_;
        }
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.getDefaultInstance()) return this;
        if (other.reason_ != 0) {
          setReasonValue(other.getReasonValue());
        }
        if (!other.getDescription().isEmpty()) {
          description_ = other.description_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                reason_ = input.readEnum();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                description_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int reason_ = 0;
      /**
       * <code>.build_event_stream.Aborted.AbortReason reason = 1;</code>
       * @return The enum numeric value on the wire for reason.
       */
      @java.lang.Override public int getReasonValue() {
        return reason_;
      }
      /**
       * <code>.build_event_stream.Aborted.AbortReason reason = 1;</code>
       * @param value The enum numeric value on the wire for reason to set.
       * @return This builder for chaining.
       */
      public Builder setReasonValue(int value) {
        reason_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.Aborted.AbortReason reason = 1;</code>
       * @return The reason.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.AbortReason getReason() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.AbortReason result = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.AbortReason.forNumber(reason_);
        return result == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.AbortReason.UNRECOGNIZED : result;
      }
      /**
       * <code>.build_event_stream.Aborted.AbortReason reason = 1;</code>
       * @param value The reason to set.
       * @return This builder for chaining.
       */
      public Builder setReason(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.AbortReason value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        reason_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.Aborted.AbortReason reason = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearReason() {
        bitField0_ = (bitField0_ & ~0x00000001);
        reason_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object description_ = "";
      /**
       * <pre>
       * A human readable description with more details about there reason, where
       * available and useful.
       * </pre>
       *
       * <code>string description = 2;</code>
       * @return The description.
       */
      public java.lang.String getDescription() {
        java.lang.Object ref = description_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          description_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * A human readable description with more details about there reason, where
       * available and useful.
       * </pre>
       *
       * <code>string description = 2;</code>
       * @return The bytes for description.
       */
      public com.google.protobuf.ByteString
          getDescriptionBytes() {
        java.lang.Object ref = description_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          description_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * A human readable description with more details about there reason, where
       * available and useful.
       * </pre>
       *
       * <code>string description = 2;</code>
       * @param value The description to set.
       * @return This builder for chaining.
       */
      public Builder setDescription(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        description_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A human readable description with more details about there reason, where
       * available and useful.
       * </pre>
       *
       * <code>string description = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDescription() {
        description_ = getDefaultInstance().getDescription();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A human readable description with more details about there reason, where
       * available and useful.
       * </pre>
       *
       * <code>string description = 2;</code>
       * @param value The bytes for description to set.
       * @return This builder for chaining.
       */
      public Builder setDescriptionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        description_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:build_event_stream.Aborted)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.Aborted)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BuildStartedOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.BuildStarted)
      com.google.protobuf.MessageOrBuilder {

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

    /**
     * <pre>
     * Start of the build in ms since the epoch.
     * Deprecated, use `start_time` instead.
     * TODO(yannic): Remove.
     * </pre>
     *
     * <code>int64 start_time_millis = 2 [deprecated = true];</code>
     * @deprecated build_event_stream.BuildStarted.start_time_millis is deprecated.
     *     See bazel/build_event_stream.proto;l=329
     * @return The startTimeMillis.
     */
    @java.lang.Deprecated long getStartTimeMillis();

    /**
     * <pre>
     * Start of the build.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp start_time = 9;</code>
     * @return Whether the startTime field is set.
     */
    boolean hasStartTime();
    /**
     * <pre>
     * Start of the build.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp start_time = 9;</code>
     * @return The startTime.
     */
    com.google.protobuf.Timestamp getStartTime();
    /**
     * <pre>
     * Start of the build.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp start_time = 9;</code>
     */
    com.google.protobuf.TimestampOrBuilder getStartTimeOrBuilder();

    /**
     * <pre>
     * Version of the build tool that is running.
     * </pre>
     *
     * <code>string build_tool_version = 3;</code>
     * @return The buildToolVersion.
     */
    java.lang.String getBuildToolVersion();
    /**
     * <pre>
     * Version of the build tool that is running.
     * </pre>
     *
     * <code>string build_tool_version = 3;</code>
     * @return The bytes for buildToolVersion.
     */
    com.google.protobuf.ByteString
        getBuildToolVersionBytes();

    /**
     * <pre>
     * A human-readable description of all the non-default option settings
     * </pre>
     *
     * <code>string options_description = 4;</code>
     * @return The optionsDescription.
     */
    java.lang.String getOptionsDescription();
    /**
     * <pre>
     * A human-readable description of all the non-default option settings
     * </pre>
     *
     * <code>string options_description = 4;</code>
     * @return The bytes for optionsDescription.
     */
    com.google.protobuf.ByteString
        getOptionsDescriptionBytes();

    /**
     * <pre>
     * The name of the command that the user invoked.
     * </pre>
     *
     * <code>string command = 5;</code>
     * @return The command.
     */
    java.lang.String getCommand();
    /**
     * <pre>
     * The name of the command that the user invoked.
     * </pre>
     *
     * <code>string command = 5;</code>
     * @return The bytes for command.
     */
    com.google.protobuf.ByteString
        getCommandBytes();

    /**
     * <pre>
     * The working directory from which the build tool was invoked.
     * </pre>
     *
     * <code>string working_directory = 6;</code>
     * @return The workingDirectory.
     */
    java.lang.String getWorkingDirectory();
    /**
     * <pre>
     * The working directory from which the build tool was invoked.
     * </pre>
     *
     * <code>string working_directory = 6;</code>
     * @return The bytes for workingDirectory.
     */
    com.google.protobuf.ByteString
        getWorkingDirectoryBytes();

    /**
     * <pre>
     * The directory of the workspace.
     * </pre>
     *
     * <code>string workspace_directory = 7;</code>
     * @return The workspaceDirectory.
     */
    java.lang.String getWorkspaceDirectory();
    /**
     * <pre>
     * The directory of the workspace.
     * </pre>
     *
     * <code>string workspace_directory = 7;</code>
     * @return The bytes for workspaceDirectory.
     */
    com.google.protobuf.ByteString
        getWorkspaceDirectoryBytes();

    /**
     * <pre>
     * The process ID of the Bazel server.
     * </pre>
     *
     * <code>int64 server_pid = 8;</code>
     * @return The serverPid.
     */
    long getServerPid();
  }
  /**
   * <pre>
   * Payload of an event indicating the beginning of a new build. Usually, events
   * of those type start a new build-event stream. The target pattern requested
   * to be build is contained in one of the announced child events; it is an
   * invariant that precisely one of the announced child events has a non-empty
   * target pattern.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.BuildStarted}
   */
  public static final class BuildStarted extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.BuildStarted)
      BuildStartedOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BuildStarted.newBuilder() to construct.
    private BuildStarted(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BuildStarted() {
      uuid_ = "";
      buildToolVersion_ = "";
      optionsDescription_ = "";
      command_ = "";
      workingDirectory_ = "";
      workspaceDirectory_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildStarted_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildStarted_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted.Builder.class);
    }

    public static final int UUID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object uuid_ = "";
    /**
     * <code>string uuid = 1;</code>
     * @return The uuid.
     */
    @java.lang.Override
    public java.lang.String getUuid() {
      java.lang.Object ref = uuid_;
      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();
        uuid_ = s;
        return s;
      }
    }
    /**
     * <code>string uuid = 1;</code>
     * @return The bytes for uuid.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUuidBytes() {
      java.lang.Object ref = uuid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        uuid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int START_TIME_MILLIS_FIELD_NUMBER = 2;
    private long startTimeMillis_ = 0L;
    /**
     * <pre>
     * Start of the build in ms since the epoch.
     * Deprecated, use `start_time` instead.
     * TODO(yannic): Remove.
     * </pre>
     *
     * <code>int64 start_time_millis = 2 [deprecated = true];</code>
     * @deprecated build_event_stream.BuildStarted.start_time_millis is deprecated.
     *     See bazel/build_event_stream.proto;l=329
     * @return The startTimeMillis.
     */
    @java.lang.Override
    @java.lang.Deprecated public long getStartTimeMillis() {
      return startTimeMillis_;
    }

    public static final int START_TIME_FIELD_NUMBER = 9;
    private com.google.protobuf.Timestamp startTime_;
    /**
     * <pre>
     * Start of the build.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp start_time = 9;</code>
     * @return Whether the startTime field is set.
     */
    @java.lang.Override
    public boolean hasStartTime() {
      return startTime_ != null;
    }
    /**
     * <pre>
     * Start of the build.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp start_time = 9;</code>
     * @return The startTime.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getStartTime() {
      return startTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : startTime_;
    }
    /**
     * <pre>
     * Start of the build.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp start_time = 9;</code>
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getStartTimeOrBuilder() {
      return startTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : startTime_;
    }

    public static final int BUILD_TOOL_VERSION_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object buildToolVersion_ = "";
    /**
     * <pre>
     * Version of the build tool that is running.
     * </pre>
     *
     * <code>string build_tool_version = 3;</code>
     * @return The buildToolVersion.
     */
    @java.lang.Override
    public java.lang.String getBuildToolVersion() {
      java.lang.Object ref = buildToolVersion_;
      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();
        buildToolVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Version of the build tool that is running.
     * </pre>
     *
     * <code>string build_tool_version = 3;</code>
     * @return The bytes for buildToolVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getBuildToolVersionBytes() {
      java.lang.Object ref = buildToolVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        buildToolVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OPTIONS_DESCRIPTION_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object optionsDescription_ = "";
    /**
     * <pre>
     * A human-readable description of all the non-default option settings
     * </pre>
     *
     * <code>string options_description = 4;</code>
     * @return The optionsDescription.
     */
    @java.lang.Override
    public java.lang.String getOptionsDescription() {
      java.lang.Object ref = optionsDescription_;
      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();
        optionsDescription_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * A human-readable description of all the non-default option settings
     * </pre>
     *
     * <code>string options_description = 4;</code>
     * @return The bytes for optionsDescription.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getOptionsDescriptionBytes() {
      java.lang.Object ref = optionsDescription_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        optionsDescription_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COMMAND_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object command_ = "";
    /**
     * <pre>
     * The name of the command that the user invoked.
     * </pre>
     *
     * <code>string command = 5;</code>
     * @return The command.
     */
    @java.lang.Override
    public java.lang.String getCommand() {
      java.lang.Object ref = command_;
      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();
        command_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The name of the command that the user invoked.
     * </pre>
     *
     * <code>string command = 5;</code>
     * @return The bytes for command.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCommandBytes() {
      java.lang.Object ref = command_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        command_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int WORKING_DIRECTORY_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object workingDirectory_ = "";
    /**
     * <pre>
     * The working directory from which the build tool was invoked.
     * </pre>
     *
     * <code>string working_directory = 6;</code>
     * @return The workingDirectory.
     */
    @java.lang.Override
    public java.lang.String getWorkingDirectory() {
      java.lang.Object ref = workingDirectory_;
      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();
        workingDirectory_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The working directory from which the build tool was invoked.
     * </pre>
     *
     * <code>string working_directory = 6;</code>
     * @return The bytes for workingDirectory.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getWorkingDirectoryBytes() {
      java.lang.Object ref = workingDirectory_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        workingDirectory_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int WORKSPACE_DIRECTORY_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private volatile java.lang.Object workspaceDirectory_ = "";
    /**
     * <pre>
     * The directory of the workspace.
     * </pre>
     *
     * <code>string workspace_directory = 7;</code>
     * @return The workspaceDirectory.
     */
    @java.lang.Override
    public java.lang.String getWorkspaceDirectory() {
      java.lang.Object ref = workspaceDirectory_;
      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();
        workspaceDirectory_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The directory of the workspace.
     * </pre>
     *
     * <code>string workspace_directory = 7;</code>
     * @return The bytes for workspaceDirectory.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getWorkspaceDirectoryBytes() {
      java.lang.Object ref = workspaceDirectory_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        workspaceDirectory_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SERVER_PID_FIELD_NUMBER = 8;
    private long serverPid_ = 0L;
    /**
     * <pre>
     * The process ID of the Bazel server.
     * </pre>
     *
     * <code>int64 server_pid = 8;</code>
     * @return The serverPid.
     */
    @java.lang.Override
    public long getServerPid() {
      return serverPid_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uuid_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, uuid_);
      }
      if (startTimeMillis_ != 0L) {
        output.writeInt64(2, startTimeMillis_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(buildToolVersion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, buildToolVersion_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(optionsDescription_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, optionsDescription_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(command_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, command_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(workingDirectory_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, workingDirectory_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(workspaceDirectory_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, workspaceDirectory_);
      }
      if (serverPid_ != 0L) {
        output.writeInt64(8, serverPid_);
      }
      if (startTime_ != null) {
        output.writeMessage(9, getStartTime());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uuid_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, uuid_);
      }
      if (startTimeMillis_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, startTimeMillis_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(buildToolVersion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, buildToolVersion_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(optionsDescription_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, optionsDescription_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(command_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, command_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(workingDirectory_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, workingDirectory_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(workspaceDirectory_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, workspaceDirectory_);
      }
      if (serverPid_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(8, serverPid_);
      }
      if (startTime_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getStartTime());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (!getUuid()
          .equals(other.getUuid())) return false;
      if (getStartTimeMillis()
          != other.getStartTimeMillis()) return false;
      if (hasStartTime() != other.hasStartTime()) return false;
      if (hasStartTime()) {
        if (!getStartTime()
            .equals(other.getStartTime())) return false;
      }
      if (!getBuildToolVersion()
          .equals(other.getBuildToolVersion())) return false;
      if (!getOptionsDescription()
          .equals(other.getOptionsDescription())) return false;
      if (!getCommand()
          .equals(other.getCommand())) return false;
      if (!getWorkingDirectory()
          .equals(other.getWorkingDirectory())) return false;
      if (!getWorkspaceDirectory()
          .equals(other.getWorkspaceDirectory())) return false;
      if (getServerPid()
          != other.getServerPid()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + UUID_FIELD_NUMBER;
      hash = (53 * hash) + getUuid().hashCode();
      hash = (37 * hash) + START_TIME_MILLIS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getStartTimeMillis());
      if (hasStartTime()) {
        hash = (37 * hash) + START_TIME_FIELD_NUMBER;
        hash = (53 * hash) + getStartTime().hashCode();
      }
      hash = (37 * hash) + BUILD_TOOL_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getBuildToolVersion().hashCode();
      hash = (37 * hash) + OPTIONS_DESCRIPTION_FIELD_NUMBER;
      hash = (53 * hash) + getOptionsDescription().hashCode();
      hash = (37 * hash) + COMMAND_FIELD_NUMBER;
      hash = (53 * hash) + getCommand().hashCode();
      hash = (37 * hash) + WORKING_DIRECTORY_FIELD_NUMBER;
      hash = (53 * hash) + getWorkingDirectory().hashCode();
      hash = (37 * hash) + WORKSPACE_DIRECTORY_FIELD_NUMBER;
      hash = (53 * hash) + getWorkspaceDirectory().hashCode();
      hash = (37 * hash) + SERVER_PID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getServerPid());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted 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.buildeventstream.BuildEventStreamProtos.BuildStarted parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted 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.buildeventstream.BuildEventStreamProtos.BuildStarted parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted 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.buildeventstream.BuildEventStreamProtos.BuildStarted parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted 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.buildeventstream.BuildEventStreamProtos.BuildStarted parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted 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.buildeventstream.BuildEventStreamProtos.BuildStarted 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.buildeventstream.BuildEventStreamProtos.BuildStarted 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.buildeventstream.BuildEventStreamProtos.BuildStarted 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>
     * Payload of an event indicating the beginning of a new build. Usually, events
     * of those type start a new build-event stream. The target pattern requested
     * to be build is contained in one of the announced child events; it is an
     * invariant that precisely one of the announced child events has a non-empty
     * target pattern.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildStarted}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.BuildStarted)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStartedOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildStarted_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildStarted_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        uuid_ = "";
        startTimeMillis_ = 0L;
        startTime_ = null;
        if (startTimeBuilder_ != null) {
          startTimeBuilder_.dispose();
          startTimeBuilder_ = null;
        }
        buildToolVersion_ = "";
        optionsDescription_ = "";
        command_ = "";
        workingDirectory_ = "";
        workspaceDirectory_ = "";
        serverPid_ = 0L;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildStarted_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.uuid_ = uuid_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.startTimeMillis_ = startTimeMillis_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.startTime_ = startTimeBuilder_ == null
              ? startTime_
              : startTimeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.buildToolVersion_ = buildToolVersion_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.optionsDescription_ = optionsDescription_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.command_ = command_;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.workingDirectory_ = workingDirectory_;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.workspaceDirectory_ = workspaceDirectory_;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.serverPid_ = serverPid_;
        }
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted.getDefaultInstance()) return this;
        if (!other.getUuid().isEmpty()) {
          uuid_ = other.uuid_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.getStartTimeMillis() != 0L) {
          setStartTimeMillis(other.getStartTimeMillis());
        }
        if (other.hasStartTime()) {
          mergeStartTime(other.getStartTime());
        }
        if (!other.getBuildToolVersion().isEmpty()) {
          buildToolVersion_ = other.buildToolVersion_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (!other.getOptionsDescription().isEmpty()) {
          optionsDescription_ = other.optionsDescription_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (!other.getCommand().isEmpty()) {
          command_ = other.command_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (!other.getWorkingDirectory().isEmpty()) {
          workingDirectory_ = other.workingDirectory_;
          bitField0_ |= 0x00000040;
          onChanged();
        }
        if (!other.getWorkspaceDirectory().isEmpty()) {
          workspaceDirectory_ = other.workspaceDirectory_;
          bitField0_ |= 0x00000080;
          onChanged();
        }
        if (other.getServerPid() != 0L) {
          setServerPid(other.getServerPid());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                uuid_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                startTimeMillis_ = input.readInt64();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 26: {
                buildToolVersion_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000008;
                break;
              } // case 26
              case 34: {
                optionsDescription_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000010;
                break;
              } // case 34
              case 42: {
                command_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000020;
                break;
              } // case 42
              case 50: {
                workingDirectory_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000040;
                break;
              } // case 50
              case 58: {
                workspaceDirectory_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000080;
                break;
              } // case 58
              case 64: {
                serverPid_ = input.readInt64();
                bitField0_ |= 0x00000100;
                break;
              } // case 64
              case 74: {
                input.readMessage(
                    getStartTimeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 74
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object uuid_ = "";
      /**
       * <code>string uuid = 1;</code>
       * @return The uuid.
       */
      public java.lang.String getUuid() {
        java.lang.Object ref = uuid_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          uuid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string uuid = 1;</code>
       * @return The bytes for uuid.
       */
      public com.google.protobuf.ByteString
          getUuidBytes() {
        java.lang.Object ref = uuid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          uuid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string uuid = 1;</code>
       * @param value The uuid to set.
       * @return This builder for chaining.
       */
      public Builder setUuid(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        uuid_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>string uuid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearUuid() {
        uuid_ = getDefaultInstance().getUuid();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>string uuid = 1;</code>
       * @param value The bytes for uuid to set.
       * @return This builder for chaining.
       */
      public Builder setUuidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        uuid_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private long startTimeMillis_ ;
      /**
       * <pre>
       * Start of the build in ms since the epoch.
       * Deprecated, use `start_time` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 start_time_millis = 2 [deprecated = true];</code>
       * @deprecated build_event_stream.BuildStarted.start_time_millis is deprecated.
       *     See bazel/build_event_stream.proto;l=329
       * @return The startTimeMillis.
       */
      @java.lang.Override
      @java.lang.Deprecated public long getStartTimeMillis() {
        return startTimeMillis_;
      }
      /**
       * <pre>
       * Start of the build in ms since the epoch.
       * Deprecated, use `start_time` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 start_time_millis = 2 [deprecated = true];</code>
       * @deprecated build_event_stream.BuildStarted.start_time_millis is deprecated.
       *     See bazel/build_event_stream.proto;l=329
       * @param value The startTimeMillis to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setStartTimeMillis(long value) {
        
        startTimeMillis_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Start of the build in ms since the epoch.
       * Deprecated, use `start_time` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 start_time_millis = 2 [deprecated = true];</code>
       * @deprecated build_event_stream.BuildStarted.start_time_millis is deprecated.
       *     See bazel/build_event_stream.proto;l=329
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder clearStartTimeMillis() {
        bitField0_ = (bitField0_ & ~0x00000002);
        startTimeMillis_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.Timestamp startTime_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> startTimeBuilder_;
      /**
       * <pre>
       * Start of the build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp start_time = 9;</code>
       * @return Whether the startTime field is set.
       */
      public boolean hasStartTime() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Start of the build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp start_time = 9;</code>
       * @return The startTime.
       */
      public com.google.protobuf.Timestamp getStartTime() {
        if (startTimeBuilder_ == null) {
          return startTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : startTime_;
        } else {
          return startTimeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Start of the build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp start_time = 9;</code>
       */
      public Builder setStartTime(com.google.protobuf.Timestamp value) {
        if (startTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          startTime_ = value;
        } else {
          startTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Start of the build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp start_time = 9;</code>
       */
      public Builder setStartTime(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (startTimeBuilder_ == null) {
          startTime_ = builderForValue.build();
        } else {
          startTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Start of the build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp start_time = 9;</code>
       */
      public Builder mergeStartTime(com.google.protobuf.Timestamp value) {
        if (startTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            startTime_ != null &&
            startTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
            getStartTimeBuilder().mergeFrom(value);
          } else {
            startTime_ = value;
          }
        } else {
          startTimeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Start of the build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp start_time = 9;</code>
       */
      public Builder clearStartTime() {
        bitField0_ = (bitField0_ & ~0x00000004);
        startTime_ = null;
        if (startTimeBuilder_ != null) {
          startTimeBuilder_.dispose();
          startTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Start of the build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp start_time = 9;</code>
       */
      public com.google.protobuf.Timestamp.Builder getStartTimeBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getStartTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Start of the build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp start_time = 9;</code>
       */
      public com.google.protobuf.TimestampOrBuilder getStartTimeOrBuilder() {
        if (startTimeBuilder_ != null) {
          return startTimeBuilder_.getMessageOrBuilder();
        } else {
          return startTime_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : startTime_;
        }
      }
      /**
       * <pre>
       * Start of the build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp start_time = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getStartTimeFieldBuilder() {
        if (startTimeBuilder_ == null) {
          startTimeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getStartTime(),
                  getParentForChildren(),
                  isClean());
          startTime_ = null;
        }
        return startTimeBuilder_;
      }

      private java.lang.Object buildToolVersion_ = "";
      /**
       * <pre>
       * Version of the build tool that is running.
       * </pre>
       *
       * <code>string build_tool_version = 3;</code>
       * @return The buildToolVersion.
       */
      public java.lang.String getBuildToolVersion() {
        java.lang.Object ref = buildToolVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          buildToolVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Version of the build tool that is running.
       * </pre>
       *
       * <code>string build_tool_version = 3;</code>
       * @return The bytes for buildToolVersion.
       */
      public com.google.protobuf.ByteString
          getBuildToolVersionBytes() {
        java.lang.Object ref = buildToolVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          buildToolVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Version of the build tool that is running.
       * </pre>
       *
       * <code>string build_tool_version = 3;</code>
       * @param value The buildToolVersion to set.
       * @return This builder for chaining.
       */
      public Builder setBuildToolVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        buildToolVersion_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Version of the build tool that is running.
       * </pre>
       *
       * <code>string build_tool_version = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearBuildToolVersion() {
        buildToolVersion_ = getDefaultInstance().getBuildToolVersion();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Version of the build tool that is running.
       * </pre>
       *
       * <code>string build_tool_version = 3;</code>
       * @param value The bytes for buildToolVersion to set.
       * @return This builder for chaining.
       */
      public Builder setBuildToolVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        buildToolVersion_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object optionsDescription_ = "";
      /**
       * <pre>
       * A human-readable description of all the non-default option settings
       * </pre>
       *
       * <code>string options_description = 4;</code>
       * @return The optionsDescription.
       */
      public java.lang.String getOptionsDescription() {
        java.lang.Object ref = optionsDescription_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          optionsDescription_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * A human-readable description of all the non-default option settings
       * </pre>
       *
       * <code>string options_description = 4;</code>
       * @return The bytes for optionsDescription.
       */
      public com.google.protobuf.ByteString
          getOptionsDescriptionBytes() {
        java.lang.Object ref = optionsDescription_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          optionsDescription_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * A human-readable description of all the non-default option settings
       * </pre>
       *
       * <code>string options_description = 4;</code>
       * @param value The optionsDescription to set.
       * @return This builder for chaining.
       */
      public Builder setOptionsDescription(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        optionsDescription_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A human-readable description of all the non-default option settings
       * </pre>
       *
       * <code>string options_description = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearOptionsDescription() {
        optionsDescription_ = getDefaultInstance().getOptionsDescription();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A human-readable description of all the non-default option settings
       * </pre>
       *
       * <code>string options_description = 4;</code>
       * @param value The bytes for optionsDescription to set.
       * @return This builder for chaining.
       */
      public Builder setOptionsDescriptionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        optionsDescription_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object command_ = "";
      /**
       * <pre>
       * The name of the command that the user invoked.
       * </pre>
       *
       * <code>string command = 5;</code>
       * @return The command.
       */
      public java.lang.String getCommand() {
        java.lang.Object ref = command_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          command_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The name of the command that the user invoked.
       * </pre>
       *
       * <code>string command = 5;</code>
       * @return The bytes for command.
       */
      public com.google.protobuf.ByteString
          getCommandBytes() {
        java.lang.Object ref = command_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          command_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The name of the command that the user invoked.
       * </pre>
       *
       * <code>string command = 5;</code>
       * @param value The command to set.
       * @return This builder for chaining.
       */
      public Builder setCommand(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        command_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the command that the user invoked.
       * </pre>
       *
       * <code>string command = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearCommand() {
        command_ = getDefaultInstance().getCommand();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the command that the user invoked.
       * </pre>
       *
       * <code>string command = 5;</code>
       * @param value The bytes for command to set.
       * @return This builder for chaining.
       */
      public Builder setCommandBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        command_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private java.lang.Object workingDirectory_ = "";
      /**
       * <pre>
       * The working directory from which the build tool was invoked.
       * </pre>
       *
       * <code>string working_directory = 6;</code>
       * @return The workingDirectory.
       */
      public java.lang.String getWorkingDirectory() {
        java.lang.Object ref = workingDirectory_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          workingDirectory_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The working directory from which the build tool was invoked.
       * </pre>
       *
       * <code>string working_directory = 6;</code>
       * @return The bytes for workingDirectory.
       */
      public com.google.protobuf.ByteString
          getWorkingDirectoryBytes() {
        java.lang.Object ref = workingDirectory_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          workingDirectory_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The working directory from which the build tool was invoked.
       * </pre>
       *
       * <code>string working_directory = 6;</code>
       * @param value The workingDirectory to set.
       * @return This builder for chaining.
       */
      public Builder setWorkingDirectory(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        workingDirectory_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The working directory from which the build tool was invoked.
       * </pre>
       *
       * <code>string working_directory = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearWorkingDirectory() {
        workingDirectory_ = getDefaultInstance().getWorkingDirectory();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The working directory from which the build tool was invoked.
       * </pre>
       *
       * <code>string working_directory = 6;</code>
       * @param value The bytes for workingDirectory to set.
       * @return This builder for chaining.
       */
      public Builder setWorkingDirectoryBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        workingDirectory_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }

      private java.lang.Object workspaceDirectory_ = "";
      /**
       * <pre>
       * The directory of the workspace.
       * </pre>
       *
       * <code>string workspace_directory = 7;</code>
       * @return The workspaceDirectory.
       */
      public java.lang.String getWorkspaceDirectory() {
        java.lang.Object ref = workspaceDirectory_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          workspaceDirectory_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The directory of the workspace.
       * </pre>
       *
       * <code>string workspace_directory = 7;</code>
       * @return The bytes for workspaceDirectory.
       */
      public com.google.protobuf.ByteString
          getWorkspaceDirectoryBytes() {
        java.lang.Object ref = workspaceDirectory_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          workspaceDirectory_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The directory of the workspace.
       * </pre>
       *
       * <code>string workspace_directory = 7;</code>
       * @param value The workspaceDirectory to set.
       * @return This builder for chaining.
       */
      public Builder setWorkspaceDirectory(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        workspaceDirectory_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The directory of the workspace.
       * </pre>
       *
       * <code>string workspace_directory = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearWorkspaceDirectory() {
        workspaceDirectory_ = getDefaultInstance().getWorkspaceDirectory();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The directory of the workspace.
       * </pre>
       *
       * <code>string workspace_directory = 7;</code>
       * @param value The bytes for workspaceDirectory to set.
       * @return This builder for chaining.
       */
      public Builder setWorkspaceDirectoryBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        workspaceDirectory_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }

      private long serverPid_ ;
      /**
       * <pre>
       * The process ID of the Bazel server.
       * </pre>
       *
       * <code>int64 server_pid = 8;</code>
       * @return The serverPid.
       */
      @java.lang.Override
      public long getServerPid() {
        return serverPid_;
      }
      /**
       * <pre>
       * The process ID of the Bazel server.
       * </pre>
       *
       * <code>int64 server_pid = 8;</code>
       * @param value The serverPid to set.
       * @return This builder for chaining.
       */
      public Builder setServerPid(long value) {
        
        serverPid_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The process ID of the Bazel server.
       * </pre>
       *
       * <code>int64 server_pid = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearServerPid() {
        bitField0_ = (bitField0_ & ~0x00000100);
        serverPid_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:build_event_stream.BuildStarted)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.BuildStarted)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface WorkspaceConfigOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.WorkspaceConfig)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The root of the local blaze exec root. All output files live underneath
     * this at "blaze-out/".
     * </pre>
     *
     * <code>string local_exec_root = 1;</code>
     * @return The localExecRoot.
     */
    java.lang.String getLocalExecRoot();
    /**
     * <pre>
     * The root of the local blaze exec root. All output files live underneath
     * this at "blaze-out/".
     * </pre>
     *
     * <code>string local_exec_root = 1;</code>
     * @return The bytes for localExecRoot.
     */
    com.google.protobuf.ByteString
        getLocalExecRootBytes();
  }
  /**
   * <pre>
   * Configuration related to the blaze workspace and output tree.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.WorkspaceConfig}
   */
  public static final class WorkspaceConfig extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.WorkspaceConfig)
      WorkspaceConfigOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use WorkspaceConfig.newBuilder() to construct.
    private WorkspaceConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private WorkspaceConfig() {
      localExecRoot_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_WorkspaceConfig_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_WorkspaceConfig_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig.Builder.class);
    }

    public static final int LOCAL_EXEC_ROOT_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object localExecRoot_ = "";
    /**
     * <pre>
     * The root of the local blaze exec root. All output files live underneath
     * this at "blaze-out/".
     * </pre>
     *
     * <code>string local_exec_root = 1;</code>
     * @return The localExecRoot.
     */
    @java.lang.Override
    public java.lang.String getLocalExecRoot() {
      java.lang.Object ref = localExecRoot_;
      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();
        localExecRoot_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The root of the local blaze exec root. All output files live underneath
     * this at "blaze-out/".
     * </pre>
     *
     * <code>string local_exec_root = 1;</code>
     * @return The bytes for localExecRoot.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getLocalExecRootBytes() {
      java.lang.Object ref = localExecRoot_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        localExecRoot_ = 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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(localExecRoot_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, localExecRoot_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(localExecRoot_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, localExecRoot_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (!getLocalExecRoot()
          .equals(other.getLocalExecRoot())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + LOCAL_EXEC_ROOT_FIELD_NUMBER;
      hash = (53 * hash) + getLocalExecRoot().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig 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.buildeventstream.BuildEventStreamProtos.WorkspaceConfig parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig 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.buildeventstream.BuildEventStreamProtos.WorkspaceConfig parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig 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.buildeventstream.BuildEventStreamProtos.WorkspaceConfig parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig 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.buildeventstream.BuildEventStreamProtos.WorkspaceConfig parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig 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.buildeventstream.BuildEventStreamProtos.WorkspaceConfig 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.buildeventstream.BuildEventStreamProtos.WorkspaceConfig 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.buildeventstream.BuildEventStreamProtos.WorkspaceConfig 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>
     * Configuration related to the blaze workspace and output tree.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.WorkspaceConfig}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.WorkspaceConfig)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfigOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_WorkspaceConfig_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_WorkspaceConfig_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        localExecRoot_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_WorkspaceConfig_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.localExecRoot_ = localExecRoot_;
        }
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig.getDefaultInstance()) return this;
        if (!other.getLocalExecRoot().isEmpty()) {
          localExecRoot_ = other.localExecRoot_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                localExecRoot_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object localExecRoot_ = "";
      /**
       * <pre>
       * The root of the local blaze exec root. All output files live underneath
       * this at "blaze-out/".
       * </pre>
       *
       * <code>string local_exec_root = 1;</code>
       * @return The localExecRoot.
       */
      public java.lang.String getLocalExecRoot() {
        java.lang.Object ref = localExecRoot_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          localExecRoot_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The root of the local blaze exec root. All output files live underneath
       * this at "blaze-out/".
       * </pre>
       *
       * <code>string local_exec_root = 1;</code>
       * @return The bytes for localExecRoot.
       */
      public com.google.protobuf.ByteString
          getLocalExecRootBytes() {
        java.lang.Object ref = localExecRoot_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          localExecRoot_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The root of the local blaze exec root. All output files live underneath
       * this at "blaze-out/".
       * </pre>
       *
       * <code>string local_exec_root = 1;</code>
       * @param value The localExecRoot to set.
       * @return This builder for chaining.
       */
      public Builder setLocalExecRoot(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        localExecRoot_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The root of the local blaze exec root. All output files live underneath
       * this at "blaze-out/".
       * </pre>
       *
       * <code>string local_exec_root = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearLocalExecRoot() {
        localExecRoot_ = getDefaultInstance().getLocalExecRoot();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The root of the local blaze exec root. All output files live underneath
       * this at "blaze-out/".
       * </pre>
       *
       * <code>string local_exec_root = 1;</code>
       * @param value The bytes for localExecRoot to set.
       * @return This builder for chaining.
       */
      public Builder setLocalExecRootBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        localExecRoot_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:build_event_stream.WorkspaceConfig)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.WorkspaceConfig)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UnstructuredCommandLineOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.UnstructuredCommandLine)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated string args = 1;</code>
     * @return A list containing the args.
     */
    java.util.List<java.lang.String>
        getArgsList();
    /**
     * <code>repeated string args = 1;</code>
     * @return The count of args.
     */
    int getArgsCount();
    /**
     * <code>repeated string args = 1;</code>
     * @param index The index of the element to return.
     * @return The args at the given index.
     */
    java.lang.String getArgs(int index);
    /**
     * <code>repeated string args = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the args at the given index.
     */
    com.google.protobuf.ByteString
        getArgsBytes(int index);
  }
  /**
   * <pre>
   * Payload of an event reporting the command-line of the invocation as
   * originally received by the server. Note that this is not the command-line
   * given by the user, as the client adds information about the invocation,
   * like name and relevant entries of rc-files and client environment variables.
   * However, it does contain enough information to reproduce the build
   * invocation.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.UnstructuredCommandLine}
   */
  public static final class UnstructuredCommandLine extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.UnstructuredCommandLine)
      UnstructuredCommandLineOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UnstructuredCommandLine.newBuilder() to construct.
    private UnstructuredCommandLine(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UnstructuredCommandLine() {
      args_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_UnstructuredCommandLine_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_UnstructuredCommandLine_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine.Builder.class);
    }

    public static final int ARGS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringList args_;
    /**
     * <code>repeated string args = 1;</code>
     * @return A list containing the args.
     */
    public com.google.protobuf.ProtocolStringList
        getArgsList() {
      return args_;
    }
    /**
     * <code>repeated string args = 1;</code>
     * @return The count of args.
     */
    public int getArgsCount() {
      return args_.size();
    }
    /**
     * <code>repeated string args = 1;</code>
     * @param index The index of the element to return.
     * @return The args at the given index.
     */
    public java.lang.String getArgs(int index) {
      return args_.get(index);
    }
    /**
     * <code>repeated string args = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the args at the given index.
     */
    public com.google.protobuf.ByteString
        getArgsBytes(int index) {
      return args_.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 {
      for (int i = 0; i < args_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, args_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < args_.size(); i++) {
          dataSize += computeStringSizeNoTag(args_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getArgsList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (!getArgsList()
          .equals(other.getArgsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getArgsCount() > 0) {
        hash = (37 * hash) + ARGS_FIELD_NUMBER;
        hash = (53 * hash) + getArgsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine 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.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine 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.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine 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.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine 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.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine 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.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine 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.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine 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.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine 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>
     * Payload of an event reporting the command-line of the invocation as
     * originally received by the server. Note that this is not the command-line
     * given by the user, as the client adds information about the invocation,
     * like name and relevant entries of rc-files and client environment variables.
     * However, it does contain enough information to reproduce the build
     * invocation.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.UnstructuredCommandLine}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.UnstructuredCommandLine)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLineOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_UnstructuredCommandLine_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_UnstructuredCommandLine_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        args_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_UnstructuredCommandLine_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine result) {
        if (((bitField0_ & 0x00000001) != 0)) {
          args_ = args_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.args_ = args_;
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine result) {
        int from_bitField0_ = bitField0_;
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine.getDefaultInstance()) return this;
        if (!other.args_.isEmpty()) {
          if (args_.isEmpty()) {
            args_ = other.args_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureArgsIsMutable();
            args_.addAll(other.args_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureArgsIsMutable();
                args_.add(s);
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList args_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureArgsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          args_ = new com.google.protobuf.LazyStringArrayList(args_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string args = 1;</code>
       * @return A list containing the args.
       */
      public com.google.protobuf.ProtocolStringList
          getArgsList() {
        return args_.getUnmodifiableView();
      }
      /**
       * <code>repeated string args = 1;</code>
       * @return The count of args.
       */
      public int getArgsCount() {
        return args_.size();
      }
      /**
       * <code>repeated string args = 1;</code>
       * @param index The index of the element to return.
       * @return The args at the given index.
       */
      public java.lang.String getArgs(int index) {
        return args_.get(index);
      }
      /**
       * <code>repeated string args = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the args at the given index.
       */
      public com.google.protobuf.ByteString
          getArgsBytes(int index) {
        return args_.getByteString(index);
      }
      /**
       * <code>repeated string args = 1;</code>
       * @param index The index to set the value at.
       * @param value The args to set.
       * @return This builder for chaining.
       */
      public Builder setArgs(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureArgsIsMutable();
        args_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string args = 1;</code>
       * @param value The args to add.
       * @return This builder for chaining.
       */
      public Builder addArgs(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureArgsIsMutable();
        args_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string args = 1;</code>
       * @param values The args to add.
       * @return This builder for chaining.
       */
      public Builder addAllArgs(
          java.lang.Iterable<java.lang.String> values) {
        ensureArgsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, args_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string args = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearArgs() {
        args_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string args = 1;</code>
       * @param value The bytes of the args to add.
       * @return This builder for chaining.
       */
      public Builder addArgsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureArgsIsMutable();
        args_.add(value);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:build_event_stream.UnstructuredCommandLine)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.UnstructuredCommandLine)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface OptionsParsedOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.OptionsParsed)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated string startup_options = 1;</code>
     * @return A list containing the startupOptions.
     */
    java.util.List<java.lang.String>
        getStartupOptionsList();
    /**
     * <code>repeated string startup_options = 1;</code>
     * @return The count of startupOptions.
     */
    int getStartupOptionsCount();
    /**
     * <code>repeated string startup_options = 1;</code>
     * @param index The index of the element to return.
     * @return The startupOptions at the given index.
     */
    java.lang.String getStartupOptions(int index);
    /**
     * <code>repeated string startup_options = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the startupOptions at the given index.
     */
    com.google.protobuf.ByteString
        getStartupOptionsBytes(int index);

    /**
     * <code>repeated string explicit_startup_options = 2;</code>
     * @return A list containing the explicitStartupOptions.
     */
    java.util.List<java.lang.String>
        getExplicitStartupOptionsList();
    /**
     * <code>repeated string explicit_startup_options = 2;</code>
     * @return The count of explicitStartupOptions.
     */
    int getExplicitStartupOptionsCount();
    /**
     * <code>repeated string explicit_startup_options = 2;</code>
     * @param index The index of the element to return.
     * @return The explicitStartupOptions at the given index.
     */
    java.lang.String getExplicitStartupOptions(int index);
    /**
     * <code>repeated string explicit_startup_options = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the explicitStartupOptions at the given index.
     */
    com.google.protobuf.ByteString
        getExplicitStartupOptionsBytes(int index);

    /**
     * <code>repeated string cmd_line = 3;</code>
     * @return A list containing the cmdLine.
     */
    java.util.List<java.lang.String>
        getCmdLineList();
    /**
     * <code>repeated string cmd_line = 3;</code>
     * @return The count of cmdLine.
     */
    int getCmdLineCount();
    /**
     * <code>repeated string cmd_line = 3;</code>
     * @param index The index of the element to return.
     * @return The cmdLine at the given index.
     */
    java.lang.String getCmdLine(int index);
    /**
     * <code>repeated string cmd_line = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the cmdLine at the given index.
     */
    com.google.protobuf.ByteString
        getCmdLineBytes(int index);

    /**
     * <code>repeated string explicit_cmd_line = 4;</code>
     * @return A list containing the explicitCmdLine.
     */
    java.util.List<java.lang.String>
        getExplicitCmdLineList();
    /**
     * <code>repeated string explicit_cmd_line = 4;</code>
     * @return The count of explicitCmdLine.
     */
    int getExplicitCmdLineCount();
    /**
     * <code>repeated string explicit_cmd_line = 4;</code>
     * @param index The index of the element to return.
     * @return The explicitCmdLine at the given index.
     */
    java.lang.String getExplicitCmdLine(int index);
    /**
     * <code>repeated string explicit_cmd_line = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the explicitCmdLine at the given index.
     */
    com.google.protobuf.ByteString
        getExplicitCmdLineBytes(int index);

    /**
     * <code>.blaze.invocation_policy.InvocationPolicy invocation_policy = 5;</code>
     * @return Whether the invocationPolicy field is set.
     */
    boolean hasInvocationPolicy();
    /**
     * <code>.blaze.invocation_policy.InvocationPolicy invocation_policy = 5;</code>
     * @return The invocationPolicy.
     */
    com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy getInvocationPolicy();
    /**
     * <code>.blaze.invocation_policy.InvocationPolicy invocation_policy = 5;</code>
     */
    com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicyOrBuilder getInvocationPolicyOrBuilder();

    /**
     * <code>string tool_tag = 6;</code>
     * @return The toolTag.
     */
    java.lang.String getToolTag();
    /**
     * <code>string tool_tag = 6;</code>
     * @return The bytes for toolTag.
     */
    com.google.protobuf.ByteString
        getToolTagBytes();
  }
  /**
   * <pre>
   * Payload of an event reporting on the parsed options, grouped in various ways.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.OptionsParsed}
   */
  public static final class OptionsParsed extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.OptionsParsed)
      OptionsParsedOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use OptionsParsed.newBuilder() to construct.
    private OptionsParsed(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private OptionsParsed() {
      startupOptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      explicitStartupOptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      cmdLine_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      explicitCmdLine_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      toolTag_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_OptionsParsed_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_OptionsParsed_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed.Builder.class);
    }

    public static final int STARTUP_OPTIONS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringList startupOptions_;
    /**
     * <code>repeated string startup_options = 1;</code>
     * @return A list containing the startupOptions.
     */
    public com.google.protobuf.ProtocolStringList
        getStartupOptionsList() {
      return startupOptions_;
    }
    /**
     * <code>repeated string startup_options = 1;</code>
     * @return The count of startupOptions.
     */
    public int getStartupOptionsCount() {
      return startupOptions_.size();
    }
    /**
     * <code>repeated string startup_options = 1;</code>
     * @param index The index of the element to return.
     * @return The startupOptions at the given index.
     */
    public java.lang.String getStartupOptions(int index) {
      return startupOptions_.get(index);
    }
    /**
     * <code>repeated string startup_options = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the startupOptions at the given index.
     */
    public com.google.protobuf.ByteString
        getStartupOptionsBytes(int index) {
      return startupOptions_.getByteString(index);
    }

    public static final int EXPLICIT_STARTUP_OPTIONS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringList explicitStartupOptions_;
    /**
     * <code>repeated string explicit_startup_options = 2;</code>
     * @return A list containing the explicitStartupOptions.
     */
    public com.google.protobuf.ProtocolStringList
        getExplicitStartupOptionsList() {
      return explicitStartupOptions_;
    }
    /**
     * <code>repeated string explicit_startup_options = 2;</code>
     * @return The count of explicitStartupOptions.
     */
    public int getExplicitStartupOptionsCount() {
      return explicitStartupOptions_.size();
    }
    /**
     * <code>repeated string explicit_startup_options = 2;</code>
     * @param index The index of the element to return.
     * @return The explicitStartupOptions at the given index.
     */
    public java.lang.String getExplicitStartupOptions(int index) {
      return explicitStartupOptions_.get(index);
    }
    /**
     * <code>repeated string explicit_startup_options = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the explicitStartupOptions at the given index.
     */
    public com.google.protobuf.ByteString
        getExplicitStartupOptionsBytes(int index) {
      return explicitStartupOptions_.getByteString(index);
    }

    public static final int CMD_LINE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringList cmdLine_;
    /**
     * <code>repeated string cmd_line = 3;</code>
     * @return A list containing the cmdLine.
     */
    public com.google.protobuf.ProtocolStringList
        getCmdLineList() {
      return cmdLine_;
    }
    /**
     * <code>repeated string cmd_line = 3;</code>
     * @return The count of cmdLine.
     */
    public int getCmdLineCount() {
      return cmdLine_.size();
    }
    /**
     * <code>repeated string cmd_line = 3;</code>
     * @param index The index of the element to return.
     * @return The cmdLine at the given index.
     */
    public java.lang.String getCmdLine(int index) {
      return cmdLine_.get(index);
    }
    /**
     * <code>repeated string cmd_line = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the cmdLine at the given index.
     */
    public com.google.protobuf.ByteString
        getCmdLineBytes(int index) {
      return cmdLine_.getByteString(index);
    }

    public static final int EXPLICIT_CMD_LINE_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringList explicitCmdLine_;
    /**
     * <code>repeated string explicit_cmd_line = 4;</code>
     * @return A list containing the explicitCmdLine.
     */
    public com.google.protobuf.ProtocolStringList
        getExplicitCmdLineList() {
      return explicitCmdLine_;
    }
    /**
     * <code>repeated string explicit_cmd_line = 4;</code>
     * @return The count of explicitCmdLine.
     */
    public int getExplicitCmdLineCount() {
      return explicitCmdLine_.size();
    }
    /**
     * <code>repeated string explicit_cmd_line = 4;</code>
     * @param index The index of the element to return.
     * @return The explicitCmdLine at the given index.
     */
    public java.lang.String getExplicitCmdLine(int index) {
      return explicitCmdLine_.get(index);
    }
    /**
     * <code>repeated string explicit_cmd_line = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the explicitCmdLine at the given index.
     */
    public com.google.protobuf.ByteString
        getExplicitCmdLineBytes(int index) {
      return explicitCmdLine_.getByteString(index);
    }

    public static final int INVOCATION_POLICY_FIELD_NUMBER = 5;
    private com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy invocationPolicy_;
    /**
     * <code>.blaze.invocation_policy.InvocationPolicy invocation_policy = 5;</code>
     * @return Whether the invocationPolicy field is set.
     */
    @java.lang.Override
    public boolean hasInvocationPolicy() {
      return invocationPolicy_ != null;
    }
    /**
     * <code>.blaze.invocation_policy.InvocationPolicy invocation_policy = 5;</code>
     * @return The invocationPolicy.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy getInvocationPolicy() {
      return invocationPolicy_ == null ? com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy.getDefaultInstance() : invocationPolicy_;
    }
    /**
     * <code>.blaze.invocation_policy.InvocationPolicy invocation_policy = 5;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicyOrBuilder getInvocationPolicyOrBuilder() {
      return invocationPolicy_ == null ? com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy.getDefaultInstance() : invocationPolicy_;
    }

    public static final int TOOL_TAG_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object toolTag_ = "";
    /**
     * <code>string tool_tag = 6;</code>
     * @return The toolTag.
     */
    @java.lang.Override
    public java.lang.String getToolTag() {
      java.lang.Object ref = toolTag_;
      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();
        toolTag_ = s;
        return s;
      }
    }
    /**
     * <code>string tool_tag = 6;</code>
     * @return The bytes for toolTag.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getToolTagBytes() {
      java.lang.Object ref = toolTag_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        toolTag_ = 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 {
      for (int i = 0; i < startupOptions_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, startupOptions_.getRaw(i));
      }
      for (int i = 0; i < explicitStartupOptions_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, explicitStartupOptions_.getRaw(i));
      }
      for (int i = 0; i < cmdLine_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, cmdLine_.getRaw(i));
      }
      for (int i = 0; i < explicitCmdLine_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, explicitCmdLine_.getRaw(i));
      }
      if (invocationPolicy_ != null) {
        output.writeMessage(5, getInvocationPolicy());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(toolTag_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, toolTag_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < startupOptions_.size(); i++) {
          dataSize += computeStringSizeNoTag(startupOptions_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getStartupOptionsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < explicitStartupOptions_.size(); i++) {
          dataSize += computeStringSizeNoTag(explicitStartupOptions_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getExplicitStartupOptionsList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < cmdLine_.size(); i++) {
          dataSize += computeStringSizeNoTag(cmdLine_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getCmdLineList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < explicitCmdLine_.size(); i++) {
          dataSize += computeStringSizeNoTag(explicitCmdLine_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getExplicitCmdLineList().size();
      }
      if (invocationPolicy_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getInvocationPolicy());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(toolTag_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, toolTag_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (!getStartupOptionsList()
          .equals(other.getStartupOptionsList())) return false;
      if (!getExplicitStartupOptionsList()
          .equals(other.getExplicitStartupOptionsList())) return false;
      if (!getCmdLineList()
          .equals(other.getCmdLineList())) return false;
      if (!getExplicitCmdLineList()
          .equals(other.getExplicitCmdLineList())) return false;
      if (hasInvocationPolicy() != other.hasInvocationPolicy()) return false;
      if (hasInvocationPolicy()) {
        if (!getInvocationPolicy()
            .equals(other.getInvocationPolicy())) return false;
      }
      if (!getToolTag()
          .equals(other.getToolTag())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getStartupOptionsCount() > 0) {
        hash = (37 * hash) + STARTUP_OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getStartupOptionsList().hashCode();
      }
      if (getExplicitStartupOptionsCount() > 0) {
        hash = (37 * hash) + EXPLICIT_STARTUP_OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getExplicitStartupOptionsList().hashCode();
      }
      if (getCmdLineCount() > 0) {
        hash = (37 * hash) + CMD_LINE_FIELD_NUMBER;
        hash = (53 * hash) + getCmdLineList().hashCode();
      }
      if (getExplicitCmdLineCount() > 0) {
        hash = (37 * hash) + EXPLICIT_CMD_LINE_FIELD_NUMBER;
        hash = (53 * hash) + getExplicitCmdLineList().hashCode();
      }
      if (hasInvocationPolicy()) {
        hash = (37 * hash) + INVOCATION_POLICY_FIELD_NUMBER;
        hash = (53 * hash) + getInvocationPolicy().hashCode();
      }
      hash = (37 * hash) + TOOL_TAG_FIELD_NUMBER;
      hash = (53 * hash) + getToolTag().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed 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.buildeventstream.BuildEventStreamProtos.OptionsParsed parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed 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.buildeventstream.BuildEventStreamProtos.OptionsParsed parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed 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.buildeventstream.BuildEventStreamProtos.OptionsParsed parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed 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.buildeventstream.BuildEventStreamProtos.OptionsParsed parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed 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.buildeventstream.BuildEventStreamProtos.OptionsParsed 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.buildeventstream.BuildEventStreamProtos.OptionsParsed 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.buildeventstream.BuildEventStreamProtos.OptionsParsed 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>
     * Payload of an event reporting on the parsed options, grouped in various ways.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.OptionsParsed}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.OptionsParsed)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsedOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_OptionsParsed_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_OptionsParsed_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        startupOptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        explicitStartupOptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        cmdLine_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        explicitCmdLine_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        invocationPolicy_ = null;
        if (invocationPolicyBuilder_ != null) {
          invocationPolicyBuilder_.dispose();
          invocationPolicyBuilder_ = null;
        }
        toolTag_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_OptionsParsed_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed result) {
        if (((bitField0_ & 0x00000001) != 0)) {
          startupOptions_ = startupOptions_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.startupOptions_ = startupOptions_;
        if (((bitField0_ & 0x00000002) != 0)) {
          explicitStartupOptions_ = explicitStartupOptions_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.explicitStartupOptions_ = explicitStartupOptions_;
        if (((bitField0_ & 0x00000004) != 0)) {
          cmdLine_ = cmdLine_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.cmdLine_ = cmdLine_;
        if (((bitField0_ & 0x00000008) != 0)) {
          explicitCmdLine_ = explicitCmdLine_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.explicitCmdLine_ = explicitCmdLine_;
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.invocationPolicy_ = invocationPolicyBuilder_ == null
              ? invocationPolicy_
              : invocationPolicyBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.toolTag_ = toolTag_;
        }
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed.getDefaultInstance()) return this;
        if (!other.startupOptions_.isEmpty()) {
          if (startupOptions_.isEmpty()) {
            startupOptions_ = other.startupOptions_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureStartupOptionsIsMutable();
            startupOptions_.addAll(other.startupOptions_);
          }
          onChanged();
        }
        if (!other.explicitStartupOptions_.isEmpty()) {
          if (explicitStartupOptions_.isEmpty()) {
            explicitStartupOptions_ = other.explicitStartupOptions_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureExplicitStartupOptionsIsMutable();
            explicitStartupOptions_.addAll(other.explicitStartupOptions_);
          }
          onChanged();
        }
        if (!other.cmdLine_.isEmpty()) {
          if (cmdLine_.isEmpty()) {
            cmdLine_ = other.cmdLine_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureCmdLineIsMutable();
            cmdLine_.addAll(other.cmdLine_);
          }
          onChanged();
        }
        if (!other.explicitCmdLine_.isEmpty()) {
          if (explicitCmdLine_.isEmpty()) {
            explicitCmdLine_ = other.explicitCmdLine_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureExplicitCmdLineIsMutable();
            explicitCmdLine_.addAll(other.explicitCmdLine_);
          }
          onChanged();
        }
        if (other.hasInvocationPolicy()) {
          mergeInvocationPolicy(other.getInvocationPolicy());
        }
        if (!other.getToolTag().isEmpty()) {
          toolTag_ = other.toolTag_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureStartupOptionsIsMutable();
                startupOptions_.add(s);
                break;
              } // case 10
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureExplicitStartupOptionsIsMutable();
                explicitStartupOptions_.add(s);
                break;
              } // case 18
              case 26: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureCmdLineIsMutable();
                cmdLine_.add(s);
                break;
              } // case 26
              case 34: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureExplicitCmdLineIsMutable();
                explicitCmdLine_.add(s);
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getInvocationPolicyFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                toolTag_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList startupOptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureStartupOptionsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          startupOptions_ = new com.google.protobuf.LazyStringArrayList(startupOptions_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string startup_options = 1;</code>
       * @return A list containing the startupOptions.
       */
      public com.google.protobuf.ProtocolStringList
          getStartupOptionsList() {
        return startupOptions_.getUnmodifiableView();
      }
      /**
       * <code>repeated string startup_options = 1;</code>
       * @return The count of startupOptions.
       */
      public int getStartupOptionsCount() {
        return startupOptions_.size();
      }
      /**
       * <code>repeated string startup_options = 1;</code>
       * @param index The index of the element to return.
       * @return The startupOptions at the given index.
       */
      public java.lang.String getStartupOptions(int index) {
        return startupOptions_.get(index);
      }
      /**
       * <code>repeated string startup_options = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the startupOptions at the given index.
       */
      public com.google.protobuf.ByteString
          getStartupOptionsBytes(int index) {
        return startupOptions_.getByteString(index);
      }
      /**
       * <code>repeated string startup_options = 1;</code>
       * @param index The index to set the value at.
       * @param value The startupOptions to set.
       * @return This builder for chaining.
       */
      public Builder setStartupOptions(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureStartupOptionsIsMutable();
        startupOptions_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string startup_options = 1;</code>
       * @param value The startupOptions to add.
       * @return This builder for chaining.
       */
      public Builder addStartupOptions(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureStartupOptionsIsMutable();
        startupOptions_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string startup_options = 1;</code>
       * @param values The startupOptions to add.
       * @return This builder for chaining.
       */
      public Builder addAllStartupOptions(
          java.lang.Iterable<java.lang.String> values) {
        ensureStartupOptionsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, startupOptions_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string startup_options = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearStartupOptions() {
        startupOptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string startup_options = 1;</code>
       * @param value The bytes of the startupOptions to add.
       * @return This builder for chaining.
       */
      public Builder addStartupOptionsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureStartupOptionsIsMutable();
        startupOptions_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList explicitStartupOptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureExplicitStartupOptionsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          explicitStartupOptions_ = new com.google.protobuf.LazyStringArrayList(explicitStartupOptions_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated string explicit_startup_options = 2;</code>
       * @return A list containing the explicitStartupOptions.
       */
      public com.google.protobuf.ProtocolStringList
          getExplicitStartupOptionsList() {
        return explicitStartupOptions_.getUnmodifiableView();
      }
      /**
       * <code>repeated string explicit_startup_options = 2;</code>
       * @return The count of explicitStartupOptions.
       */
      public int getExplicitStartupOptionsCount() {
        return explicitStartupOptions_.size();
      }
      /**
       * <code>repeated string explicit_startup_options = 2;</code>
       * @param index The index of the element to return.
       * @return The explicitStartupOptions at the given index.
       */
      public java.lang.String getExplicitStartupOptions(int index) {
        return explicitStartupOptions_.get(index);
      }
      /**
       * <code>repeated string explicit_startup_options = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the explicitStartupOptions at the given index.
       */
      public com.google.protobuf.ByteString
          getExplicitStartupOptionsBytes(int index) {
        return explicitStartupOptions_.getByteString(index);
      }
      /**
       * <code>repeated string explicit_startup_options = 2;</code>
       * @param index The index to set the value at.
       * @param value The explicitStartupOptions to set.
       * @return This builder for chaining.
       */
      public Builder setExplicitStartupOptions(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureExplicitStartupOptionsIsMutable();
        explicitStartupOptions_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string explicit_startup_options = 2;</code>
       * @param value The explicitStartupOptions to add.
       * @return This builder for chaining.
       */
      public Builder addExplicitStartupOptions(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureExplicitStartupOptionsIsMutable();
        explicitStartupOptions_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string explicit_startup_options = 2;</code>
       * @param values The explicitStartupOptions to add.
       * @return This builder for chaining.
       */
      public Builder addAllExplicitStartupOptions(
          java.lang.Iterable<java.lang.String> values) {
        ensureExplicitStartupOptionsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, explicitStartupOptions_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string explicit_startup_options = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearExplicitStartupOptions() {
        explicitStartupOptions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string explicit_startup_options = 2;</code>
       * @param value The bytes of the explicitStartupOptions to add.
       * @return This builder for chaining.
       */
      public Builder addExplicitStartupOptionsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureExplicitStartupOptionsIsMutable();
        explicitStartupOptions_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList cmdLine_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureCmdLineIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          cmdLine_ = new com.google.protobuf.LazyStringArrayList(cmdLine_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated string cmd_line = 3;</code>
       * @return A list containing the cmdLine.
       */
      public com.google.protobuf.ProtocolStringList
          getCmdLineList() {
        return cmdLine_.getUnmodifiableView();
      }
      /**
       * <code>repeated string cmd_line = 3;</code>
       * @return The count of cmdLine.
       */
      public int getCmdLineCount() {
        return cmdLine_.size();
      }
      /**
       * <code>repeated string cmd_line = 3;</code>
       * @param index The index of the element to return.
       * @return The cmdLine at the given index.
       */
      public java.lang.String getCmdLine(int index) {
        return cmdLine_.get(index);
      }
      /**
       * <code>repeated string cmd_line = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the cmdLine at the given index.
       */
      public com.google.protobuf.ByteString
          getCmdLineBytes(int index) {
        return cmdLine_.getByteString(index);
      }
      /**
       * <code>repeated string cmd_line = 3;</code>
       * @param index The index to set the value at.
       * @param value The cmdLine to set.
       * @return This builder for chaining.
       */
      public Builder setCmdLine(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCmdLineIsMutable();
        cmdLine_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string cmd_line = 3;</code>
       * @param value The cmdLine to add.
       * @return This builder for chaining.
       */
      public Builder addCmdLine(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCmdLineIsMutable();
        cmdLine_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string cmd_line = 3;</code>
       * @param values The cmdLine to add.
       * @return This builder for chaining.
       */
      public Builder addAllCmdLine(
          java.lang.Iterable<java.lang.String> values) {
        ensureCmdLineIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, cmdLine_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string cmd_line = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearCmdLine() {
        cmdLine_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string cmd_line = 3;</code>
       * @param value The bytes of the cmdLine to add.
       * @return This builder for chaining.
       */
      public Builder addCmdLineBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureCmdLineIsMutable();
        cmdLine_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList explicitCmdLine_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureExplicitCmdLineIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          explicitCmdLine_ = new com.google.protobuf.LazyStringArrayList(explicitCmdLine_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <code>repeated string explicit_cmd_line = 4;</code>
       * @return A list containing the explicitCmdLine.
       */
      public com.google.protobuf.ProtocolStringList
          getExplicitCmdLineList() {
        return explicitCmdLine_.getUnmodifiableView();
      }
      /**
       * <code>repeated string explicit_cmd_line = 4;</code>
       * @return The count of explicitCmdLine.
       */
      public int getExplicitCmdLineCount() {
        return explicitCmdLine_.size();
      }
      /**
       * <code>repeated string explicit_cmd_line = 4;</code>
       * @param index The index of the element to return.
       * @return The explicitCmdLine at the given index.
       */
      public java.lang.String getExplicitCmdLine(int index) {
        return explicitCmdLine_.get(index);
      }
      /**
       * <code>repeated string explicit_cmd_line = 4;</code>
       * @param index The index of the value to return.
       * @return The bytes of the explicitCmdLine at the given index.
       */
      public com.google.protobuf.ByteString
          getExplicitCmdLineBytes(int index) {
        return explicitCmdLine_.getByteString(index);
      }
      /**
       * <code>repeated string explicit_cmd_line = 4;</code>
       * @param index The index to set the value at.
       * @param value The explicitCmdLine to set.
       * @return This builder for chaining.
       */
      public Builder setExplicitCmdLine(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureExplicitCmdLineIsMutable();
        explicitCmdLine_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string explicit_cmd_line = 4;</code>
       * @param value The explicitCmdLine to add.
       * @return This builder for chaining.
       */
      public Builder addExplicitCmdLine(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureExplicitCmdLineIsMutable();
        explicitCmdLine_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string explicit_cmd_line = 4;</code>
       * @param values The explicitCmdLine to add.
       * @return This builder for chaining.
       */
      public Builder addAllExplicitCmdLine(
          java.lang.Iterable<java.lang.String> values) {
        ensureExplicitCmdLineIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, explicitCmdLine_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string explicit_cmd_line = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearExplicitCmdLine() {
        explicitCmdLine_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string explicit_cmd_line = 4;</code>
       * @param value The bytes of the explicitCmdLine to add.
       * @return This builder for chaining.
       */
      public Builder addExplicitCmdLineBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureExplicitCmdLineIsMutable();
        explicitCmdLine_.add(value);
        onChanged();
        return this;
      }

      private com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy invocationPolicy_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy, com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy.Builder, com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicyOrBuilder> invocationPolicyBuilder_;
      /**
       * <code>.blaze.invocation_policy.InvocationPolicy invocation_policy = 5;</code>
       * @return Whether the invocationPolicy field is set.
       */
      public boolean hasInvocationPolicy() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>.blaze.invocation_policy.InvocationPolicy invocation_policy = 5;</code>
       * @return The invocationPolicy.
       */
      public com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy getInvocationPolicy() {
        if (invocationPolicyBuilder_ == null) {
          return invocationPolicy_ == null ? com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy.getDefaultInstance() : invocationPolicy_;
        } else {
          return invocationPolicyBuilder_.getMessage();
        }
      }
      /**
       * <code>.blaze.invocation_policy.InvocationPolicy invocation_policy = 5;</code>
       */
      public Builder setInvocationPolicy(com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy value) {
        if (invocationPolicyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          invocationPolicy_ = value;
        } else {
          invocationPolicyBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>.blaze.invocation_policy.InvocationPolicy invocation_policy = 5;</code>
       */
      public Builder setInvocationPolicy(
          com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy.Builder builderForValue) {
        if (invocationPolicyBuilder_ == null) {
          invocationPolicy_ = builderForValue.build();
        } else {
          invocationPolicyBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>.blaze.invocation_policy.InvocationPolicy invocation_policy = 5;</code>
       */
      public Builder mergeInvocationPolicy(com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy value) {
        if (invocationPolicyBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            invocationPolicy_ != null &&
            invocationPolicy_ != com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy.getDefaultInstance()) {
            getInvocationPolicyBuilder().mergeFrom(value);
          } else {
            invocationPolicy_ = value;
          }
        } else {
          invocationPolicyBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>.blaze.invocation_policy.InvocationPolicy invocation_policy = 5;</code>
       */
      public Builder clearInvocationPolicy() {
        bitField0_ = (bitField0_ & ~0x00000010);
        invocationPolicy_ = null;
        if (invocationPolicyBuilder_ != null) {
          invocationPolicyBuilder_.dispose();
          invocationPolicyBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.blaze.invocation_policy.InvocationPolicy invocation_policy = 5;</code>
       */
      public com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy.Builder getInvocationPolicyBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getInvocationPolicyFieldBuilder().getBuilder();
      }
      /**
       * <code>.blaze.invocation_policy.InvocationPolicy invocation_policy = 5;</code>
       */
      public com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicyOrBuilder getInvocationPolicyOrBuilder() {
        if (invocationPolicyBuilder_ != null) {
          return invocationPolicyBuilder_.getMessageOrBuilder();
        } else {
          return invocationPolicy_ == null ?
              com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy.getDefaultInstance() : invocationPolicy_;
        }
      }
      /**
       * <code>.blaze.invocation_policy.InvocationPolicy invocation_policy = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy, com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy.Builder, com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicyOrBuilder> 
          getInvocationPolicyFieldBuilder() {
        if (invocationPolicyBuilder_ == null) {
          invocationPolicyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy, com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy.Builder, com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicyOrBuilder>(
                  getInvocationPolicy(),
                  getParentForChildren(),
                  isClean());
          invocationPolicy_ = null;
        }
        return invocationPolicyBuilder_;
      }

      private java.lang.Object toolTag_ = "";
      /**
       * <code>string tool_tag = 6;</code>
       * @return The toolTag.
       */
      public java.lang.String getToolTag() {
        java.lang.Object ref = toolTag_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          toolTag_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string tool_tag = 6;</code>
       * @return The bytes for toolTag.
       */
      public com.google.protobuf.ByteString
          getToolTagBytes() {
        java.lang.Object ref = toolTag_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          toolTag_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string tool_tag = 6;</code>
       * @param value The toolTag to set.
       * @return This builder for chaining.
       */
      public Builder setToolTag(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        toolTag_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>string tool_tag = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearToolTag() {
        toolTag_ = getDefaultInstance().getToolTag();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <code>string tool_tag = 6;</code>
       * @param value The bytes for toolTag to set.
       * @return This builder for chaining.
       */
      public Builder setToolTagBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        toolTag_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:build_event_stream.OptionsParsed)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.OptionsParsed)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FetchOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.Fetch)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>bool success = 1;</code>
     * @return The success.
     */
    boolean getSuccess();
  }
  /**
   * <pre>
   * Payload of an event indicating that an external resource was fetched. This
   * event will only occur in streams where an actual fetch happened, not in ones
   * where a cached copy of the entity to be fetched was used.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.Fetch}
   */
  public static final class Fetch extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.Fetch)
      FetchOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Fetch.newBuilder() to construct.
    private Fetch(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Fetch() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Fetch_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Fetch_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch.Builder.class);
    }

    public static final int SUCCESS_FIELD_NUMBER = 1;
    private boolean success_ = false;
    /**
     * <code>bool success = 1;</code>
     * @return The success.
     */
    @java.lang.Override
    public boolean getSuccess() {
      return success_;
    }

    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 (success_ != false) {
        output.writeBool(1, success_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (success_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, success_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

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

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch 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.buildeventstream.BuildEventStreamProtos.Fetch parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch 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.buildeventstream.BuildEventStreamProtos.Fetch parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch 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.buildeventstream.BuildEventStreamProtos.Fetch parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch 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.buildeventstream.BuildEventStreamProtos.Fetch parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch 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.buildeventstream.BuildEventStreamProtos.Fetch 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.buildeventstream.BuildEventStreamProtos.Fetch 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.buildeventstream.BuildEventStreamProtos.Fetch 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>
     * Payload of an event indicating that an external resource was fetched. This
     * event will only occur in streams where an actual fetch happened, not in ones
     * where a cached copy of the entity to be fetched was used.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.Fetch}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.Fetch)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FetchOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Fetch_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Fetch_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        success_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Fetch_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.success_ = success_;
        }
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch.getDefaultInstance()) return this;
        if (other.getSuccess() != false) {
          setSuccess(other.getSuccess());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                success_ = input.readBool();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private boolean success_ ;
      /**
       * <code>bool success = 1;</code>
       * @return The success.
       */
      @java.lang.Override
      public boolean getSuccess() {
        return success_;
      }
      /**
       * <code>bool success = 1;</code>
       * @param value The success to set.
       * @return This builder for chaining.
       */
      public Builder setSuccess(boolean value) {
        
        success_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>bool success = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSuccess() {
        bitField0_ = (bitField0_ & ~0x00000001);
        success_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:build_event_stream.Fetch)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.Fetch)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface WorkspaceStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.WorkspaceStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
     */
    java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item> 
        getItemList();
    /**
     * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item getItem(int index);
    /**
     * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
     */
    int getItemCount();
    /**
     * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.ItemOrBuilder> 
        getItemOrBuilderList();
    /**
     * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.ItemOrBuilder getItemOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Payload of an event reporting the workspace status. Key-value pairs can be
   * provided by specifying the workspace_status_command to an executable that
   * returns one key-value pair per line of output (key and value separated by a
   * space).
   * </pre>
   *
   * Protobuf type {@code build_event_stream.WorkspaceStatus}
   */
  public static final class WorkspaceStatus extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.WorkspaceStatus)
      WorkspaceStatusOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use WorkspaceStatus.newBuilder() to construct.
    private WorkspaceStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private WorkspaceStatus() {
      item_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_WorkspaceStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_WorkspaceStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Builder.class);
    }

    public interface ItemOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.WorkspaceStatus.Item)
        com.google.protobuf.MessageOrBuilder {

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

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

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_WorkspaceStatus_Item_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_WorkspaceStatus_Item_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item.Builder.class);
      }

      public static final int KEY_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object key_ = "";
      /**
       * <code>string key = 1;</code>
       * @return The key.
       */
      @java.lang.Override
      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;
        }
      }
      /**
       * <code>string key = 1;</code>
       * @return The bytes for key.
       */
      @java.lang.Override
      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;
      @SuppressWarnings("serial")
      private volatile java.lang.Object value_ = "";
      /**
       * <code>string value = 2;</code>
       * @return The value.
       */
      @java.lang.Override
      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;
        }
      }
      /**
       * <code>string value = 2;</code>
       * @return The bytes for value.
       */
      @java.lang.Override
      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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(key_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, key_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(value_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, value_);
        }
        getUnknownFields().writeTo(output);
      }

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

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

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

        if (!getKey()
            .equals(other.getKey())) return false;
        if (!getValue()
            .equals(other.getValue())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

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

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item 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.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item 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.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item 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.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item 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.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item 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.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item 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.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item 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.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item 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 build_event_stream.WorkspaceStatus.Item}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.WorkspaceStatus.Item)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.ItemOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_WorkspaceStatus_Item_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_WorkspaceStatus_Item_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          key_ = "";
          value_ = "";
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_WorkspaceStatus_Item_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.key_ = key_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.value_ = value_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item.getDefaultInstance()) return this;
          if (!other.getKey().isEmpty()) {
            key_ = other.key_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (!other.getValue().isEmpty()) {
            value_ = other.value_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  key_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  value_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object key_ = "";
        /**
         * <code>string key = 1;</code>
         * @return The key.
         */
        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;
          }
        }
        /**
         * <code>string key = 1;</code>
         * @return The bytes for key.
         */
        public com.google.protobuf.ByteString
            getKeyBytes() {
          java.lang.Object ref = key_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            key_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>string key = 1;</code>
         * @param value The key to set.
         * @return This builder for chaining.
         */
        public Builder setKey(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          key_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>string key = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearKey() {
          key_ = getDefaultInstance().getKey();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>string key = 1;</code>
         * @param value The bytes for key to set.
         * @return This builder for chaining.
         */
        public Builder setKeyBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          key_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }

        private java.lang.Object value_ = "";
        /**
         * <code>string value = 2;</code>
         * @return The value.
         */
        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;
          }
        }
        /**
         * <code>string value = 2;</code>
         * @return The bytes for value.
         */
        public com.google.protobuf.ByteString
            getValueBytes() {
          java.lang.Object ref = value_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            value_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>string value = 2;</code>
         * @param value The value to set.
         * @return This builder for chaining.
         */
        public Builder setValue(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          value_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <code>string value = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearValue() {
          value_ = getDefaultInstance().getValue();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <code>string value = 2;</code>
         * @param value The bytes for value to set.
         * @return This builder for chaining.
         */
        public Builder setValueBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          value_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.WorkspaceStatus.Item)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.WorkspaceStatus.Item)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int ITEM_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item> item_;
    /**
     * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item> getItemList() {
      return item_;
    }
    /**
     * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.ItemOrBuilder> 
        getItemOrBuilderList() {
      return item_;
    }
    /**
     * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
     */
    @java.lang.Override
    public int getItemCount() {
      return item_.size();
    }
    /**
     * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item getItem(int index) {
      return item_.get(index);
    }
    /**
     * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.ItemOrBuilder getItemOrBuilder(
        int index) {
      return item_.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 < item_.size(); i++) {
        output.writeMessage(1, item_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

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

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

      if (!getItemList()
          .equals(other.getItemList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getItemCount() > 0) {
        hash = (37 * hash) + ITEM_FIELD_NUMBER;
        hash = (53 * hash) + getItemList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus 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.buildeventstream.BuildEventStreamProtos.WorkspaceStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus 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.buildeventstream.BuildEventStreamProtos.WorkspaceStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus 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.buildeventstream.BuildEventStreamProtos.WorkspaceStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus 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.buildeventstream.BuildEventStreamProtos.WorkspaceStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus 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.buildeventstream.BuildEventStreamProtos.WorkspaceStatus 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.buildeventstream.BuildEventStreamProtos.WorkspaceStatus 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.buildeventstream.BuildEventStreamProtos.WorkspaceStatus 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>
     * Payload of an event reporting the workspace status. Key-value pairs can be
     * provided by specifying the workspace_status_command to an executable that
     * returns one key-value pair per line of output (key and value separated by a
     * space).
     * </pre>
     *
     * Protobuf type {@code build_event_stream.WorkspaceStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.WorkspaceStatus)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_WorkspaceStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_WorkspaceStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (itemBuilder_ == null) {
          item_ = java.util.Collections.emptyList();
        } else {
          item_ = null;
          itemBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_WorkspaceStatus_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus result) {
        if (itemBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            item_ = java.util.Collections.unmodifiableList(item_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.item_ = item_;
        } else {
          result.item_ = itemBuilder_.build();
        }
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus result) {
        int from_bitField0_ = bitField0_;
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.getDefaultInstance()) return this;
        if (itemBuilder_ == null) {
          if (!other.item_.isEmpty()) {
            if (item_.isEmpty()) {
              item_ = other.item_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureItemIsMutable();
              item_.addAll(other.item_);
            }
            onChanged();
          }
        } else {
          if (!other.item_.isEmpty()) {
            if (itemBuilder_.isEmpty()) {
              itemBuilder_.dispose();
              itemBuilder_ = null;
              item_ = other.item_;
              bitField0_ = (bitField0_ & ~0x00000001);
              itemBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getItemFieldBuilder() : null;
            } else {
              itemBuilder_.addAllMessages(other.item_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item m =
                    input.readMessage(
                        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item.parser(),
                        extensionRegistry);
                if (itemBuilder_ == null) {
                  ensureItemIsMutable();
                  item_.add(m);
                } else {
                  itemBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item> item_ =
        java.util.Collections.emptyList();
      private void ensureItemIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          item_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item>(item_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.ItemOrBuilder> itemBuilder_;

      /**
       * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item> getItemList() {
        if (itemBuilder_ == null) {
          return java.util.Collections.unmodifiableList(item_);
        } else {
          return itemBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
       */
      public int getItemCount() {
        if (itemBuilder_ == null) {
          return item_.size();
        } else {
          return itemBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item getItem(int index) {
        if (itemBuilder_ == null) {
          return item_.get(index);
        } else {
          return itemBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
       */
      public Builder setItem(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item value) {
        if (itemBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemIsMutable();
          item_.set(index, value);
          onChanged();
        } else {
          itemBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
       */
      public Builder setItem(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item.Builder builderForValue) {
        if (itemBuilder_ == null) {
          ensureItemIsMutable();
          item_.set(index, builderForValue.build());
          onChanged();
        } else {
          itemBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
       */
      public Builder addItem(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item value) {
        if (itemBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemIsMutable();
          item_.add(value);
          onChanged();
        } else {
          itemBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
       */
      public Builder addItem(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item value) {
        if (itemBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureItemIsMutable();
          item_.add(index, value);
          onChanged();
        } else {
          itemBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
       */
      public Builder addItem(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item.Builder builderForValue) {
        if (itemBuilder_ == null) {
          ensureItemIsMutable();
          item_.add(builderForValue.build());
          onChanged();
        } else {
          itemBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
       */
      public Builder addItem(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item.Builder builderForValue) {
        if (itemBuilder_ == null) {
          ensureItemIsMutable();
          item_.add(index, builderForValue.build());
          onChanged();
        } else {
          itemBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
       */
      public Builder addAllItem(
          java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item> values) {
        if (itemBuilder_ == null) {
          ensureItemIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, item_);
          onChanged();
        } else {
          itemBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
       */
      public Builder clearItem() {
        if (itemBuilder_ == null) {
          item_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          itemBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
       */
      public Builder removeItem(int index) {
        if (itemBuilder_ == null) {
          ensureItemIsMutable();
          item_.remove(index);
          onChanged();
        } else {
          itemBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item.Builder getItemBuilder(
          int index) {
        return getItemFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.ItemOrBuilder getItemOrBuilder(
          int index) {
        if (itemBuilder_ == null) {
          return item_.get(index);  } else {
          return itemBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.ItemOrBuilder> 
           getItemOrBuilderList() {
        if (itemBuilder_ != null) {
          return itemBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(item_);
        }
      }
      /**
       * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item.Builder addItemBuilder() {
        return getItemFieldBuilder().addBuilder(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item.getDefaultInstance());
      }
      /**
       * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item.Builder addItemBuilder(
          int index) {
        return getItemFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item.getDefaultInstance());
      }
      /**
       * <code>repeated .build_event_stream.WorkspaceStatus.Item item = 1;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item.Builder> 
           getItemBuilderList() {
        return getItemFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.ItemOrBuilder> 
          getItemFieldBuilder() {
        if (itemBuilder_ == null) {
          itemBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Item.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.ItemOrBuilder>(
                  item_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          item_ = null;
        }
        return itemBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:build_event_stream.WorkspaceStatus)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.WorkspaceStatus)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BuildMetadataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.BuildMetadata)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Custom metadata for the build.
     * </pre>
     *
     * <code>map&lt;string, string&gt; metadata = 1;</code>
     */
    int getMetadataCount();
    /**
     * <pre>
     * Custom metadata for the build.
     * </pre>
     *
     * <code>map&lt;string, string&gt; metadata = 1;</code>
     */
    boolean containsMetadata(
        java.lang.String key);
    /**
     * Use {@link #getMetadataMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getMetadata();
    /**
     * <pre>
     * Custom metadata for the build.
     * </pre>
     *
     * <code>map&lt;string, string&gt; metadata = 1;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getMetadataMap();
    /**
     * <pre>
     * Custom metadata for the build.
     * </pre>
     *
     * <code>map&lt;string, string&gt; metadata = 1;</code>
     */
    /* nullable */
java.lang.String getMetadataOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue);
    /**
     * <pre>
     * Custom metadata for the build.
     * </pre>
     *
     * <code>map&lt;string, string&gt; metadata = 1;</code>
     */
    java.lang.String getMetadataOrThrow(
        java.lang.String key);
  }
  /**
   * <pre>
   * Payload of an event reporting custom key-value metadata associated with the
   * build.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.BuildMetadata}
   */
  public static final class BuildMetadata extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.BuildMetadata)
      BuildMetadataOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BuildMetadata.newBuilder() to construct.
    private BuildMetadata(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BuildMetadata() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetadata_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 1:
          return internalGetMetadata();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetadata_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata.Builder.class);
    }

    public static final int METADATA_FIELD_NUMBER = 1;
    private static final class MetadataDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetadata_MetadataEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> metadata_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetMetadata() {
      if (metadata_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MetadataDefaultEntryHolder.defaultEntry);
      }
      return metadata_;
    }
    public int getMetadataCount() {
      return internalGetMetadata().getMap().size();
    }
    /**
     * <pre>
     * Custom metadata for the build.
     * </pre>
     *
     * <code>map&lt;string, string&gt; metadata = 1;</code>
     */
    @java.lang.Override
    public boolean containsMetadata(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetMetadata().getMap().containsKey(key);
    }
    /**
     * Use {@link #getMetadataMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getMetadata() {
      return getMetadataMap();
    }
    /**
     * <pre>
     * Custom metadata for the build.
     * </pre>
     *
     * <code>map&lt;string, string&gt; metadata = 1;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.String> getMetadataMap() {
      return internalGetMetadata().getMap();
    }
    /**
     * <pre>
     * Custom metadata for the build.
     * </pre>
     *
     * <code>map&lt;string, string&gt; metadata = 1;</code>
     */
    @java.lang.Override
    public /* nullable */
java.lang.String getMetadataOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetMetadata().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Custom metadata for the build.
     * </pre>
     *
     * <code>map&lt;string, string&gt; metadata = 1;</code>
     */
    @java.lang.Override
    public java.lang.String getMetadataOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetMetadata().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    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 {
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetMetadata(),
          MetadataDefaultEntryHolder.defaultEntry,
          1);
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetMetadata().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        metadata__ = MetadataDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, metadata__);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (!internalGetMetadata().equals(
          other.internalGetMetadata())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (!internalGetMetadata().getMap().isEmpty()) {
        hash = (37 * hash) + METADATA_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMetadata().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata 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.buildeventstream.BuildEventStreamProtos.BuildMetadata parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata 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.buildeventstream.BuildEventStreamProtos.BuildMetadata parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata 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.buildeventstream.BuildEventStreamProtos.BuildMetadata parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata 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.buildeventstream.BuildEventStreamProtos.BuildMetadata parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata 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.buildeventstream.BuildEventStreamProtos.BuildMetadata 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.buildeventstream.BuildEventStreamProtos.BuildMetadata 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.buildeventstream.BuildEventStreamProtos.BuildMetadata 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>
     * Payload of an event reporting custom key-value metadata associated with the
     * build.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildMetadata}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.BuildMetadata)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetadata_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetMetadata();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableMetadata();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetadata_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        internalGetMutableMetadata().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetadata_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.metadata_ = internalGetMetadata();
          result.metadata_.makeImmutable();
        }
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata.getDefaultInstance()) return this;
        internalGetMutableMetadata().mergeFrom(
            other.internalGetMetadata());
        bitField0_ |= 0x00000001;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                metadata__ = input.readMessage(
                    MetadataDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableMetadata().getMutableMap().put(
                    metadata__.getKey(), metadata__.getValue());
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> metadata_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMetadata() {
        if (metadata_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MetadataDefaultEntryHolder.defaultEntry);
        }
        return metadata_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMutableMetadata() {
        if (metadata_ == null) {
          metadata_ = com.google.protobuf.MapField.newMapField(
              MetadataDefaultEntryHolder.defaultEntry);
        }
        if (!metadata_.isMutable()) {
          metadata_ = metadata_.copy();
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return metadata_;
      }
      public int getMetadataCount() {
        return internalGetMetadata().getMap().size();
      }
      /**
       * <pre>
       * Custom metadata for the build.
       * </pre>
       *
       * <code>map&lt;string, string&gt; metadata = 1;</code>
       */
      @java.lang.Override
      public boolean containsMetadata(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetMetadata().getMap().containsKey(key);
      }
      /**
       * Use {@link #getMetadataMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getMetadata() {
        return getMetadataMap();
      }
      /**
       * <pre>
       * Custom metadata for the build.
       * </pre>
       *
       * <code>map&lt;string, string&gt; metadata = 1;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.String> getMetadataMap() {
        return internalGetMetadata().getMap();
      }
      /**
       * <pre>
       * Custom metadata for the build.
       * </pre>
       *
       * <code>map&lt;string, string&gt; metadata = 1;</code>
       */
      @java.lang.Override
      public /* nullable */
java.lang.String getMetadataOrDefault(
          java.lang.String key,
          /* nullable */
java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetMetadata().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * Custom metadata for the build.
       * </pre>
       *
       * <code>map&lt;string, string&gt; metadata = 1;</code>
       */
      @java.lang.Override
      public java.lang.String getMetadataOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetMetadata().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearMetadata() {
        bitField0_ = (bitField0_ & ~0x00000001);
        internalGetMutableMetadata().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * Custom metadata for the build.
       * </pre>
       *
       * <code>map&lt;string, string&gt; metadata = 1;</code>
       */
      public Builder removeMetadata(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableMetadata().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
          getMutableMetadata() {
        bitField0_ |= 0x00000001;
        return internalGetMutableMetadata().getMutableMap();
      }
      /**
       * <pre>
       * Custom metadata for the build.
       * </pre>
       *
       * <code>map&lt;string, string&gt; metadata = 1;</code>
       */
      public Builder putMetadata(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableMetadata().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <pre>
       * Custom metadata for the build.
       * </pre>
       *
       * <code>map&lt;string, string&gt; metadata = 1;</code>
       */
      public Builder putAllMetadata(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableMetadata().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000001;
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:build_event_stream.BuildMetadata)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.BuildMetadata)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

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

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

    /**
     * <code>string platform_name = 2;</code>
     * @return The platformName.
     */
    java.lang.String getPlatformName();
    /**
     * <code>string platform_name = 2;</code>
     * @return The bytes for platformName.
     */
    com.google.protobuf.ByteString
        getPlatformNameBytes();

    /**
     * <code>string cpu = 3;</code>
     * @return The cpu.
     */
    java.lang.String getCpu();
    /**
     * <code>string cpu = 3;</code>
     * @return The bytes for cpu.
     */
    com.google.protobuf.ByteString
        getCpuBytes();

    /**
     * <code>map&lt;string, string&gt; make_variable = 4;</code>
     */
    int getMakeVariableCount();
    /**
     * <code>map&lt;string, string&gt; make_variable = 4;</code>
     */
    boolean containsMakeVariable(
        java.lang.String key);
    /**
     * Use {@link #getMakeVariableMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getMakeVariable();
    /**
     * <code>map&lt;string, string&gt; make_variable = 4;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getMakeVariableMap();
    /**
     * <code>map&lt;string, string&gt; make_variable = 4;</code>
     */
    /* nullable */
java.lang.String getMakeVariableOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue);
    /**
     * <code>map&lt;string, string&gt; make_variable = 4;</code>
     */
    java.lang.String getMakeVariableOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * Whether this configuration is used for building tools.
     * </pre>
     *
     * <code>bool is_tool = 5;</code>
     * @return The isTool.
     */
    boolean getIsTool();
  }
  /**
   * <pre>
   * Payload of an event reporting details of a given configuration.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.Configuration}
   */
  public static final class Configuration extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.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() {
      mnemonic_ = "";
      platformName_ = "";
      cpu_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Configuration_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 4:
          return internalGetMakeVariable();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Configuration_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration.Builder.class);
    }

    public static final int MNEMONIC_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object mnemonic_ = "";
    /**
     * <code>string mnemonic = 1;</code>
     * @return The mnemonic.
     */
    @java.lang.Override
    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;
      }
    }
    /**
     * <code>string mnemonic = 1;</code>
     * @return The bytes for mnemonic.
     */
    @java.lang.Override
    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 = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object platformName_ = "";
    /**
     * <code>string platform_name = 2;</code>
     * @return The platformName.
     */
    @java.lang.Override
    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;
      }
    }
    /**
     * <code>string platform_name = 2;</code>
     * @return The bytes for platformName.
     */
    @java.lang.Override
    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 CPU_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object cpu_ = "";
    /**
     * <code>string cpu = 3;</code>
     * @return The cpu.
     */
    @java.lang.Override
    public java.lang.String getCpu() {
      java.lang.Object ref = cpu_;
      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();
        cpu_ = s;
        return s;
      }
    }
    /**
     * <code>string cpu = 3;</code>
     * @return The bytes for cpu.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCpuBytes() {
      java.lang.Object ref = cpu_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        cpu_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MAKE_VARIABLE_FIELD_NUMBER = 4;
    private static final class MakeVariableDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Configuration_MakeVariableEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> makeVariable_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetMakeVariable() {
      if (makeVariable_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MakeVariableDefaultEntryHolder.defaultEntry);
      }
      return makeVariable_;
    }
    public int getMakeVariableCount() {
      return internalGetMakeVariable().getMap().size();
    }
    /**
     * <code>map&lt;string, string&gt; make_variable = 4;</code>
     */
    @java.lang.Override
    public boolean containsMakeVariable(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetMakeVariable().getMap().containsKey(key);
    }
    /**
     * Use {@link #getMakeVariableMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getMakeVariable() {
      return getMakeVariableMap();
    }
    /**
     * <code>map&lt;string, string&gt; make_variable = 4;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.String> getMakeVariableMap() {
      return internalGetMakeVariable().getMap();
    }
    /**
     * <code>map&lt;string, string&gt; make_variable = 4;</code>
     */
    @java.lang.Override
    public /* nullable */
java.lang.String getMakeVariableOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetMakeVariable().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <code>map&lt;string, string&gt; make_variable = 4;</code>
     */
    @java.lang.Override
    public java.lang.String getMakeVariableOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetMakeVariable().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int IS_TOOL_FIELD_NUMBER = 5;
    private boolean isTool_ = false;
    /**
     * <pre>
     * Whether this configuration is used for building tools.
     * </pre>
     *
     * <code>bool is_tool = 5;</code>
     * @return The isTool.
     */
    @java.lang.Override
    public boolean getIsTool() {
      return isTool_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(mnemonic_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, mnemonic_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(platformName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, platformName_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cpu_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, cpu_);
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetMakeVariable(),
          MakeVariableDefaultEntryHolder.defaultEntry,
          4);
      if (isTool_ != false) {
        output.writeBool(5, isTool_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(mnemonic_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, mnemonic_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(platformName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, platformName_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cpu_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, cpu_);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetMakeVariable().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        makeVariable__ = MakeVariableDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, makeVariable__);
      }
      if (isTool_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, isTool_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (!getMnemonic()
          .equals(other.getMnemonic())) return false;
      if (!getPlatformName()
          .equals(other.getPlatformName())) return false;
      if (!getCpu()
          .equals(other.getCpu())) return false;
      if (!internalGetMakeVariable().equals(
          other.internalGetMakeVariable())) return false;
      if (getIsTool()
          != other.getIsTool()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MNEMONIC_FIELD_NUMBER;
      hash = (53 * hash) + getMnemonic().hashCode();
      hash = (37 * hash) + PLATFORM_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getPlatformName().hashCode();
      hash = (37 * hash) + CPU_FIELD_NUMBER;
      hash = (53 * hash) + getCpu().hashCode();
      if (!internalGetMakeVariable().getMap().isEmpty()) {
        hash = (37 * hash) + MAKE_VARIABLE_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMakeVariable().hashCode();
      }
      hash = (37 * hash) + IS_TOOL_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsTool());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.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.buildeventstream.BuildEventStreamProtos.Configuration parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.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.buildeventstream.BuildEventStreamProtos.Configuration parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.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.buildeventstream.BuildEventStreamProtos.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.buildeventstream.BuildEventStreamProtos.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.buildeventstream.BuildEventStreamProtos.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.buildeventstream.BuildEventStreamProtos.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.buildeventstream.BuildEventStreamProtos.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.buildeventstream.BuildEventStreamProtos.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.buildeventstream.BuildEventStreamProtos.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;
    }
    /**
     * <pre>
     * Payload of an event reporting details of a given configuration.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.Configuration}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.Configuration)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConfigurationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Configuration_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 4:
            return internalGetMakeVariable();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 4:
            return internalGetMutableMakeVariable();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Configuration_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        mnemonic_ = "";
        platformName_ = "";
        cpu_ = "";
        internalGetMutableMakeVariable().clear();
        isTool_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_Configuration_descriptor;
      }

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.mnemonic_ = mnemonic_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.platformName_ = platformName_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.cpu_ = cpu_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.makeVariable_ = internalGetMakeVariable();
          result.makeVariable_.makeImmutable();
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.isTool_ = isTool_;
        }
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration.getDefaultInstance()) return this;
        if (!other.getMnemonic().isEmpty()) {
          mnemonic_ = other.mnemonic_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getPlatformName().isEmpty()) {
          platformName_ = other.platformName_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.getCpu().isEmpty()) {
          cpu_ = other.cpu_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        internalGetMutableMakeVariable().mergeFrom(
            other.internalGetMakeVariable());
        bitField0_ |= 0x00000008;
        if (other.getIsTool() != false) {
          setIsTool(other.getIsTool());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                mnemonic_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                platformName_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                cpu_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                makeVariable__ = input.readMessage(
                    MakeVariableDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableMakeVariable().getMutableMap().put(
                    makeVariable__.getKey(), makeVariable__.getValue());
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 40: {
                isTool_ = input.readBool();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object mnemonic_ = "";
      /**
       * <code>string mnemonic = 1;</code>
       * @return The mnemonic.
       */
      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;
        }
      }
      /**
       * <code>string mnemonic = 1;</code>
       * @return The bytes for mnemonic.
       */
      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;
        }
      }
      /**
       * <code>string mnemonic = 1;</code>
       * @param value The mnemonic to set.
       * @return This builder for chaining.
       */
      public Builder setMnemonic(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        mnemonic_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>string mnemonic = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearMnemonic() {
        mnemonic_ = getDefaultInstance().getMnemonic();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>string mnemonic = 1;</code>
       * @param value The bytes for mnemonic to set.
       * @return This builder for chaining.
       */
      public Builder setMnemonicBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        mnemonic_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object platformName_ = "";
      /**
       * <code>string platform_name = 2;</code>
       * @return The platformName.
       */
      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;
        }
      }
      /**
       * <code>string platform_name = 2;</code>
       * @return The bytes for platformName.
       */
      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;
        }
      }
      /**
       * <code>string platform_name = 2;</code>
       * @param value The platformName to set.
       * @return This builder for chaining.
       */
      public Builder setPlatformName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        platformName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>string platform_name = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearPlatformName() {
        platformName_ = getDefaultInstance().getPlatformName();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>string platform_name = 2;</code>
       * @param value The bytes for platformName to set.
       * @return This builder for chaining.
       */
      public Builder setPlatformNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        platformName_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object cpu_ = "";
      /**
       * <code>string cpu = 3;</code>
       * @return The cpu.
       */
      public java.lang.String getCpu() {
        java.lang.Object ref = cpu_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          cpu_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string cpu = 3;</code>
       * @return The bytes for cpu.
       */
      public com.google.protobuf.ByteString
          getCpuBytes() {
        java.lang.Object ref = cpu_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          cpu_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string cpu = 3;</code>
       * @param value The cpu to set.
       * @return This builder for chaining.
       */
      public Builder setCpu(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        cpu_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>string cpu = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearCpu() {
        cpu_ = getDefaultInstance().getCpu();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <code>string cpu = 3;</code>
       * @param value The bytes for cpu to set.
       * @return This builder for chaining.
       */
      public Builder setCpuBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        cpu_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> makeVariable_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMakeVariable() {
        if (makeVariable_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MakeVariableDefaultEntryHolder.defaultEntry);
        }
        return makeVariable_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMutableMakeVariable() {
        if (makeVariable_ == null) {
          makeVariable_ = com.google.protobuf.MapField.newMapField(
              MakeVariableDefaultEntryHolder.defaultEntry);
        }
        if (!makeVariable_.isMutable()) {
          makeVariable_ = makeVariable_.copy();
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return makeVariable_;
      }
      public int getMakeVariableCount() {
        return internalGetMakeVariable().getMap().size();
      }
      /**
       * <code>map&lt;string, string&gt; make_variable = 4;</code>
       */
      @java.lang.Override
      public boolean containsMakeVariable(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetMakeVariable().getMap().containsKey(key);
      }
      /**
       * Use {@link #getMakeVariableMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getMakeVariable() {
        return getMakeVariableMap();
      }
      /**
       * <code>map&lt;string, string&gt; make_variable = 4;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.String> getMakeVariableMap() {
        return internalGetMakeVariable().getMap();
      }
      /**
       * <code>map&lt;string, string&gt; make_variable = 4;</code>
       */
      @java.lang.Override
      public /* nullable */
java.lang.String getMakeVariableOrDefault(
          java.lang.String key,
          /* nullable */
java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetMakeVariable().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <code>map&lt;string, string&gt; make_variable = 4;</code>
       */
      @java.lang.Override
      public java.lang.String getMakeVariableOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetMakeVariable().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearMakeVariable() {
        bitField0_ = (bitField0_ & ~0x00000008);
        internalGetMutableMakeVariable().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <code>map&lt;string, string&gt; make_variable = 4;</code>
       */
      public Builder removeMakeVariable(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableMakeVariable().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
          getMutableMakeVariable() {
        bitField0_ |= 0x00000008;
        return internalGetMutableMakeVariable().getMutableMap();
      }
      /**
       * <code>map&lt;string, string&gt; make_variable = 4;</code>
       */
      public Builder putMakeVariable(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableMakeVariable().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>map&lt;string, string&gt; make_variable = 4;</code>
       */
      public Builder putAllMakeVariable(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableMakeVariable().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000008;
        return this;
      }

      private boolean isTool_ ;
      /**
       * <pre>
       * Whether this configuration is used for building tools.
       * </pre>
       *
       * <code>bool is_tool = 5;</code>
       * @return The isTool.
       */
      @java.lang.Override
      public boolean getIsTool() {
        return isTool_;
      }
      /**
       * <pre>
       * Whether this configuration is used for building tools.
       * </pre>
       *
       * <code>bool is_tool = 5;</code>
       * @param value The isTool to set.
       * @return This builder for chaining.
       */
      public Builder setIsTool(boolean value) {
        
        isTool_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether this configuration is used for building tools.
       * </pre>
       *
       * <code>bool is_tool = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsTool() {
        bitField0_ = (bitField0_ & ~0x00000010);
        isTool_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


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

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

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.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 {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<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.buildeventstream.BuildEventStreamProtos.Configuration getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PatternExpandedOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.PatternExpanded)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * All test suites requested via top-level target patterns. Does not include
     * test suites whose label matched a negative pattern.
     * </pre>
     *
     * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
     */
    java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion> 
        getTestSuiteExpansionsList();
    /**
     * <pre>
     * All test suites requested via top-level target patterns. Does not include
     * test suites whose label matched a negative pattern.
     * </pre>
     *
     * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion getTestSuiteExpansions(int index);
    /**
     * <pre>
     * All test suites requested via top-level target patterns. Does not include
     * test suites whose label matched a negative pattern.
     * </pre>
     *
     * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
     */
    int getTestSuiteExpansionsCount();
    /**
     * <pre>
     * All test suites requested via top-level target patterns. Does not include
     * test suites whose label matched a negative pattern.
     * </pre>
     *
     * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansionOrBuilder> 
        getTestSuiteExpansionsOrBuilderList();
    /**
     * <pre>
     * All test suites requested via top-level target patterns. Does not include
     * test suites whose label matched a negative pattern.
     * </pre>
     *
     * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansionOrBuilder getTestSuiteExpansionsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Payload of the event indicating the expansion of a target pattern.
   * The main information is in the chaining part: the id will contain the
   * target pattern that was expanded and the children id will contain the
   * target or target pattern it was expanded to.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.PatternExpanded}
   */
  public static final class PatternExpanded extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.PatternExpanded)
      PatternExpandedOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PatternExpanded.newBuilder() to construct.
    private PatternExpanded(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PatternExpanded() {
      testSuiteExpansions_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_PatternExpanded_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_PatternExpanded_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.Builder.class);
    }

    public interface TestSuiteExpansionOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.PatternExpanded.TestSuiteExpansion)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * The label of the test_suite rule.
       * </pre>
       *
       * <code>string suite_label = 1;</code>
       * @return The suiteLabel.
       */
      java.lang.String getSuiteLabel();
      /**
       * <pre>
       * The label of the test_suite rule.
       * </pre>
       *
       * <code>string suite_label = 1;</code>
       * @return The bytes for suiteLabel.
       */
      com.google.protobuf.ByteString
          getSuiteLabelBytes();

      /**
       * <pre>
       * Labels of the test targets included in the suite. Includes all tests in
       * the suite regardless of any filters or negative patterns which may result
       * in the test not actually being run.
       * </pre>
       *
       * <code>repeated string test_labels = 2;</code>
       * @return A list containing the testLabels.
       */
      java.util.List<java.lang.String>
          getTestLabelsList();
      /**
       * <pre>
       * Labels of the test targets included in the suite. Includes all tests in
       * the suite regardless of any filters or negative patterns which may result
       * in the test not actually being run.
       * </pre>
       *
       * <code>repeated string test_labels = 2;</code>
       * @return The count of testLabels.
       */
      int getTestLabelsCount();
      /**
       * <pre>
       * Labels of the test targets included in the suite. Includes all tests in
       * the suite regardless of any filters or negative patterns which may result
       * in the test not actually being run.
       * </pre>
       *
       * <code>repeated string test_labels = 2;</code>
       * @param index The index of the element to return.
       * @return The testLabels at the given index.
       */
      java.lang.String getTestLabels(int index);
      /**
       * <pre>
       * Labels of the test targets included in the suite. Includes all tests in
       * the suite regardless of any filters or negative patterns which may result
       * in the test not actually being run.
       * </pre>
       *
       * <code>repeated string test_labels = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the testLabels at the given index.
       */
      com.google.protobuf.ByteString
          getTestLabelsBytes(int index);
    }
    /**
     * <pre>
     * Represents a test_suite target and the tests that it expanded to. Nested
     * test suites are recursively expanded. The test labels only contain the
     * final test targets, not any nested suites.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.PatternExpanded.TestSuiteExpansion}
     */
    public static final class TestSuiteExpansion extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.PatternExpanded.TestSuiteExpansion)
        TestSuiteExpansionOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use TestSuiteExpansion.newBuilder() to construct.
      private TestSuiteExpansion(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private TestSuiteExpansion() {
        suiteLabel_ = "";
        testLabels_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_PatternExpanded_TestSuiteExpansion_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_PatternExpanded_TestSuiteExpansion_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion.Builder.class);
      }

      public static final int SUITE_LABEL_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object suiteLabel_ = "";
      /**
       * <pre>
       * The label of the test_suite rule.
       * </pre>
       *
       * <code>string suite_label = 1;</code>
       * @return The suiteLabel.
       */
      @java.lang.Override
      public java.lang.String getSuiteLabel() {
        java.lang.Object ref = suiteLabel_;
        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();
          suiteLabel_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * The label of the test_suite rule.
       * </pre>
       *
       * <code>string suite_label = 1;</code>
       * @return The bytes for suiteLabel.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getSuiteLabelBytes() {
        java.lang.Object ref = suiteLabel_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          suiteLabel_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int TEST_LABELS_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private com.google.protobuf.LazyStringList testLabels_;
      /**
       * <pre>
       * Labels of the test targets included in the suite. Includes all tests in
       * the suite regardless of any filters or negative patterns which may result
       * in the test not actually being run.
       * </pre>
       *
       * <code>repeated string test_labels = 2;</code>
       * @return A list containing the testLabels.
       */
      public com.google.protobuf.ProtocolStringList
          getTestLabelsList() {
        return testLabels_;
      }
      /**
       * <pre>
       * Labels of the test targets included in the suite. Includes all tests in
       * the suite regardless of any filters or negative patterns which may result
       * in the test not actually being run.
       * </pre>
       *
       * <code>repeated string test_labels = 2;</code>
       * @return The count of testLabels.
       */
      public int getTestLabelsCount() {
        return testLabels_.size();
      }
      /**
       * <pre>
       * Labels of the test targets included in the suite. Includes all tests in
       * the suite regardless of any filters or negative patterns which may result
       * in the test not actually being run.
       * </pre>
       *
       * <code>repeated string test_labels = 2;</code>
       * @param index The index of the element to return.
       * @return The testLabels at the given index.
       */
      public java.lang.String getTestLabels(int index) {
        return testLabels_.get(index);
      }
      /**
       * <pre>
       * Labels of the test targets included in the suite. Includes all tests in
       * the suite regardless of any filters or negative patterns which may result
       * in the test not actually being run.
       * </pre>
       *
       * <code>repeated string test_labels = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the testLabels at the given index.
       */
      public com.google.protobuf.ByteString
          getTestLabelsBytes(int index) {
        return testLabels_.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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(suiteLabel_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, suiteLabel_);
        }
        for (int i = 0; i < testLabels_.size(); i++) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, testLabels_.getRaw(i));
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(suiteLabel_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, suiteLabel_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < testLabels_.size(); i++) {
            dataSize += computeStringSizeNoTag(testLabels_.getRaw(i));
          }
          size += dataSize;
          size += 1 * getTestLabelsList().size();
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (!getSuiteLabel()
            .equals(other.getSuiteLabel())) return false;
        if (!getTestLabelsList()
            .equals(other.getTestLabelsList())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + SUITE_LABEL_FIELD_NUMBER;
        hash = (53 * hash) + getSuiteLabel().hashCode();
        if (getTestLabelsCount() > 0) {
          hash = (37 * hash) + TEST_LABELS_FIELD_NUMBER;
          hash = (53 * hash) + getTestLabelsList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion 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.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion 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.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion 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.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion 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.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion 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.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion 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.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion 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.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion 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 test_suite target and the tests that it expanded to. Nested
       * test suites are recursively expanded. The test labels only contain the
       * final test targets, not any nested suites.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.PatternExpanded.TestSuiteExpansion}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.PatternExpanded.TestSuiteExpansion)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansionOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_PatternExpanded_TestSuiteExpansion_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_PatternExpanded_TestSuiteExpansion_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          suiteLabel_ = "";
          testLabels_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_PatternExpanded_TestSuiteExpansion_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion(this);
          buildPartialRepeatedFields(result);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion result) {
          if (((bitField0_ & 0x00000002) != 0)) {
            testLabels_ = testLabels_.getUnmodifiableView();
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.testLabels_ = testLabels_;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.suiteLabel_ = suiteLabel_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion.getDefaultInstance()) return this;
          if (!other.getSuiteLabel().isEmpty()) {
            suiteLabel_ = other.suiteLabel_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (!other.testLabels_.isEmpty()) {
            if (testLabels_.isEmpty()) {
              testLabels_ = other.testLabels_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureTestLabelsIsMutable();
              testLabels_.addAll(other.testLabels_);
            }
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  suiteLabel_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  java.lang.String s = input.readStringRequireUtf8();
                  ensureTestLabelsIsMutable();
                  testLabels_.add(s);
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object suiteLabel_ = "";
        /**
         * <pre>
         * The label of the test_suite rule.
         * </pre>
         *
         * <code>string suite_label = 1;</code>
         * @return The suiteLabel.
         */
        public java.lang.String getSuiteLabel() {
          java.lang.Object ref = suiteLabel_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            suiteLabel_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * The label of the test_suite rule.
         * </pre>
         *
         * <code>string suite_label = 1;</code>
         * @return The bytes for suiteLabel.
         */
        public com.google.protobuf.ByteString
            getSuiteLabelBytes() {
          java.lang.Object ref = suiteLabel_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            suiteLabel_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * The label of the test_suite rule.
         * </pre>
         *
         * <code>string suite_label = 1;</code>
         * @param value The suiteLabel to set.
         * @return This builder for chaining.
         */
        public Builder setSuiteLabel(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          suiteLabel_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The label of the test_suite rule.
         * </pre>
         *
         * <code>string suite_label = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearSuiteLabel() {
          suiteLabel_ = getDefaultInstance().getSuiteLabel();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The label of the test_suite rule.
         * </pre>
         *
         * <code>string suite_label = 1;</code>
         * @param value The bytes for suiteLabel to set.
         * @return This builder for chaining.
         */
        public Builder setSuiteLabelBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          suiteLabel_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }

        private com.google.protobuf.LazyStringList testLabels_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        private void ensureTestLabelsIsMutable() {
          if (!((bitField0_ & 0x00000002) != 0)) {
            testLabels_ = new com.google.protobuf.LazyStringArrayList(testLabels_);
            bitField0_ |= 0x00000002;
           }
        }
        /**
         * <pre>
         * Labels of the test targets included in the suite. Includes all tests in
         * the suite regardless of any filters or negative patterns which may result
         * in the test not actually being run.
         * </pre>
         *
         * <code>repeated string test_labels = 2;</code>
         * @return A list containing the testLabels.
         */
        public com.google.protobuf.ProtocolStringList
            getTestLabelsList() {
          return testLabels_.getUnmodifiableView();
        }
        /**
         * <pre>
         * Labels of the test targets included in the suite. Includes all tests in
         * the suite regardless of any filters or negative patterns which may result
         * in the test not actually being run.
         * </pre>
         *
         * <code>repeated string test_labels = 2;</code>
         * @return The count of testLabels.
         */
        public int getTestLabelsCount() {
          return testLabels_.size();
        }
        /**
         * <pre>
         * Labels of the test targets included in the suite. Includes all tests in
         * the suite regardless of any filters or negative patterns which may result
         * in the test not actually being run.
         * </pre>
         *
         * <code>repeated string test_labels = 2;</code>
         * @param index The index of the element to return.
         * @return The testLabels at the given index.
         */
        public java.lang.String getTestLabels(int index) {
          return testLabels_.get(index);
        }
        /**
         * <pre>
         * Labels of the test targets included in the suite. Includes all tests in
         * the suite regardless of any filters or negative patterns which may result
         * in the test not actually being run.
         * </pre>
         *
         * <code>repeated string test_labels = 2;</code>
         * @param index The index of the value to return.
         * @return The bytes of the testLabels at the given index.
         */
        public com.google.protobuf.ByteString
            getTestLabelsBytes(int index) {
          return testLabels_.getByteString(index);
        }
        /**
         * <pre>
         * Labels of the test targets included in the suite. Includes all tests in
         * the suite regardless of any filters or negative patterns which may result
         * in the test not actually being run.
         * </pre>
         *
         * <code>repeated string test_labels = 2;</code>
         * @param index The index to set the value at.
         * @param value The testLabels to set.
         * @return This builder for chaining.
         */
        public Builder setTestLabels(
            int index, java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          ensureTestLabelsIsMutable();
          testLabels_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Labels of the test targets included in the suite. Includes all tests in
         * the suite regardless of any filters or negative patterns which may result
         * in the test not actually being run.
         * </pre>
         *
         * <code>repeated string test_labels = 2;</code>
         * @param value The testLabels to add.
         * @return This builder for chaining.
         */
        public Builder addTestLabels(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          ensureTestLabelsIsMutable();
          testLabels_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Labels of the test targets included in the suite. Includes all tests in
         * the suite regardless of any filters or negative patterns which may result
         * in the test not actually being run.
         * </pre>
         *
         * <code>repeated string test_labels = 2;</code>
         * @param values The testLabels to add.
         * @return This builder for chaining.
         */
        public Builder addAllTestLabels(
            java.lang.Iterable<java.lang.String> values) {
          ensureTestLabelsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, testLabels_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Labels of the test targets included in the suite. Includes all tests in
         * the suite regardless of any filters or negative patterns which may result
         * in the test not actually being run.
         * </pre>
         *
         * <code>repeated string test_labels = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearTestLabels() {
          testLabels_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Labels of the test targets included in the suite. Includes all tests in
         * the suite regardless of any filters or negative patterns which may result
         * in the test not actually being run.
         * </pre>
         *
         * <code>repeated string test_labels = 2;</code>
         * @param value The bytes of the testLabels to add.
         * @return This builder for chaining.
         */
        public Builder addTestLabelsBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          ensureTestLabelsIsMutable();
          testLabels_.add(value);
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.PatternExpanded.TestSuiteExpansion)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.PatternExpanded.TestSuiteExpansion)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int TEST_SUITE_EXPANSIONS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion> testSuiteExpansions_;
    /**
     * <pre>
     * All test suites requested via top-level target patterns. Does not include
     * test suites whose label matched a negative pattern.
     * </pre>
     *
     * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion> getTestSuiteExpansionsList() {
      return testSuiteExpansions_;
    }
    /**
     * <pre>
     * All test suites requested via top-level target patterns. Does not include
     * test suites whose label matched a negative pattern.
     * </pre>
     *
     * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansionOrBuilder> 
        getTestSuiteExpansionsOrBuilderList() {
      return testSuiteExpansions_;
    }
    /**
     * <pre>
     * All test suites requested via top-level target patterns. Does not include
     * test suites whose label matched a negative pattern.
     * </pre>
     *
     * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
     */
    @java.lang.Override
    public int getTestSuiteExpansionsCount() {
      return testSuiteExpansions_.size();
    }
    /**
     * <pre>
     * All test suites requested via top-level target patterns. Does not include
     * test suites whose label matched a negative pattern.
     * </pre>
     *
     * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion getTestSuiteExpansions(int index) {
      return testSuiteExpansions_.get(index);
    }
    /**
     * <pre>
     * All test suites requested via top-level target patterns. Does not include
     * test suites whose label matched a negative pattern.
     * </pre>
     *
     * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansionOrBuilder getTestSuiteExpansionsOrBuilder(
        int index) {
      return testSuiteExpansions_.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 < testSuiteExpansions_.size(); i++) {
        output.writeMessage(1, testSuiteExpansions_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

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

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

      if (!getTestSuiteExpansionsList()
          .equals(other.getTestSuiteExpansionsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getTestSuiteExpansionsCount() > 0) {
        hash = (37 * hash) + TEST_SUITE_EXPANSIONS_FIELD_NUMBER;
        hash = (53 * hash) + getTestSuiteExpansionsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded 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.buildeventstream.BuildEventStreamProtos.PatternExpanded parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded 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.buildeventstream.BuildEventStreamProtos.PatternExpanded parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded 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.buildeventstream.BuildEventStreamProtos.PatternExpanded parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded 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.buildeventstream.BuildEventStreamProtos.PatternExpanded parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded 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.buildeventstream.BuildEventStreamProtos.PatternExpanded 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.buildeventstream.BuildEventStreamProtos.PatternExpanded 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.buildeventstream.BuildEventStreamProtos.PatternExpanded 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>
     * Payload of the event indicating the expansion of a target pattern.
     * The main information is in the chaining part: the id will contain the
     * target pattern that was expanded and the children id will contain the
     * target or target pattern it was expanded to.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.PatternExpanded}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.PatternExpanded)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpandedOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_PatternExpanded_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_PatternExpanded_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (testSuiteExpansionsBuilder_ == null) {
          testSuiteExpansions_ = java.util.Collections.emptyList();
        } else {
          testSuiteExpansions_ = null;
          testSuiteExpansionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_PatternExpanded_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded result) {
        if (testSuiteExpansionsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            testSuiteExpansions_ = java.util.Collections.unmodifiableList(testSuiteExpansions_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.testSuiteExpansions_ = testSuiteExpansions_;
        } else {
          result.testSuiteExpansions_ = testSuiteExpansionsBuilder_.build();
        }
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded result) {
        int from_bitField0_ = bitField0_;
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.getDefaultInstance()) return this;
        if (testSuiteExpansionsBuilder_ == null) {
          if (!other.testSuiteExpansions_.isEmpty()) {
            if (testSuiteExpansions_.isEmpty()) {
              testSuiteExpansions_ = other.testSuiteExpansions_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTestSuiteExpansionsIsMutable();
              testSuiteExpansions_.addAll(other.testSuiteExpansions_);
            }
            onChanged();
          }
        } else {
          if (!other.testSuiteExpansions_.isEmpty()) {
            if (testSuiteExpansionsBuilder_.isEmpty()) {
              testSuiteExpansionsBuilder_.dispose();
              testSuiteExpansionsBuilder_ = null;
              testSuiteExpansions_ = other.testSuiteExpansions_;
              bitField0_ = (bitField0_ & ~0x00000001);
              testSuiteExpansionsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTestSuiteExpansionsFieldBuilder() : null;
            } else {
              testSuiteExpansionsBuilder_.addAllMessages(other.testSuiteExpansions_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion m =
                    input.readMessage(
                        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion.parser(),
                        extensionRegistry);
                if (testSuiteExpansionsBuilder_ == null) {
                  ensureTestSuiteExpansionsIsMutable();
                  testSuiteExpansions_.add(m);
                } else {
                  testSuiteExpansionsBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion> testSuiteExpansions_ =
        java.util.Collections.emptyList();
      private void ensureTestSuiteExpansionsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          testSuiteExpansions_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion>(testSuiteExpansions_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansionOrBuilder> testSuiteExpansionsBuilder_;

      /**
       * <pre>
       * All test suites requested via top-level target patterns. Does not include
       * test suites whose label matched a negative pattern.
       * </pre>
       *
       * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion> getTestSuiteExpansionsList() {
        if (testSuiteExpansionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(testSuiteExpansions_);
        } else {
          return testSuiteExpansionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * All test suites requested via top-level target patterns. Does not include
       * test suites whose label matched a negative pattern.
       * </pre>
       *
       * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
       */
      public int getTestSuiteExpansionsCount() {
        if (testSuiteExpansionsBuilder_ == null) {
          return testSuiteExpansions_.size();
        } else {
          return testSuiteExpansionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * All test suites requested via top-level target patterns. Does not include
       * test suites whose label matched a negative pattern.
       * </pre>
       *
       * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion getTestSuiteExpansions(int index) {
        if (testSuiteExpansionsBuilder_ == null) {
          return testSuiteExpansions_.get(index);
        } else {
          return testSuiteExpansionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * All test suites requested via top-level target patterns. Does not include
       * test suites whose label matched a negative pattern.
       * </pre>
       *
       * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
       */
      public Builder setTestSuiteExpansions(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion value) {
        if (testSuiteExpansionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTestSuiteExpansionsIsMutable();
          testSuiteExpansions_.set(index, value);
          onChanged();
        } else {
          testSuiteExpansionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * All test suites requested via top-level target patterns. Does not include
       * test suites whose label matched a negative pattern.
       * </pre>
       *
       * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
       */
      public Builder setTestSuiteExpansions(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion.Builder builderForValue) {
        if (testSuiteExpansionsBuilder_ == null) {
          ensureTestSuiteExpansionsIsMutable();
          testSuiteExpansions_.set(index, builderForValue.build());
          onChanged();
        } else {
          testSuiteExpansionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * All test suites requested via top-level target patterns. Does not include
       * test suites whose label matched a negative pattern.
       * </pre>
       *
       * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
       */
      public Builder addTestSuiteExpansions(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion value) {
        if (testSuiteExpansionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTestSuiteExpansionsIsMutable();
          testSuiteExpansions_.add(value);
          onChanged();
        } else {
          testSuiteExpansionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * All test suites requested via top-level target patterns. Does not include
       * test suites whose label matched a negative pattern.
       * </pre>
       *
       * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
       */
      public Builder addTestSuiteExpansions(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion value) {
        if (testSuiteExpansionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTestSuiteExpansionsIsMutable();
          testSuiteExpansions_.add(index, value);
          onChanged();
        } else {
          testSuiteExpansionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * All test suites requested via top-level target patterns. Does not include
       * test suites whose label matched a negative pattern.
       * </pre>
       *
       * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
       */
      public Builder addTestSuiteExpansions(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion.Builder builderForValue) {
        if (testSuiteExpansionsBuilder_ == null) {
          ensureTestSuiteExpansionsIsMutable();
          testSuiteExpansions_.add(builderForValue.build());
          onChanged();
        } else {
          testSuiteExpansionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * All test suites requested via top-level target patterns. Does not include
       * test suites whose label matched a negative pattern.
       * </pre>
       *
       * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
       */
      public Builder addTestSuiteExpansions(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion.Builder builderForValue) {
        if (testSuiteExpansionsBuilder_ == null) {
          ensureTestSuiteExpansionsIsMutable();
          testSuiteExpansions_.add(index, builderForValue.build());
          onChanged();
        } else {
          testSuiteExpansionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * All test suites requested via top-level target patterns. Does not include
       * test suites whose label matched a negative pattern.
       * </pre>
       *
       * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
       */
      public Builder addAllTestSuiteExpansions(
          java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion> values) {
        if (testSuiteExpansionsBuilder_ == null) {
          ensureTestSuiteExpansionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, testSuiteExpansions_);
          onChanged();
        } else {
          testSuiteExpansionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * All test suites requested via top-level target patterns. Does not include
       * test suites whose label matched a negative pattern.
       * </pre>
       *
       * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
       */
      public Builder clearTestSuiteExpansions() {
        if (testSuiteExpansionsBuilder_ == null) {
          testSuiteExpansions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          testSuiteExpansionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * All test suites requested via top-level target patterns. Does not include
       * test suites whose label matched a negative pattern.
       * </pre>
       *
       * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
       */
      public Builder removeTestSuiteExpansions(int index) {
        if (testSuiteExpansionsBuilder_ == null) {
          ensureTestSuiteExpansionsIsMutable();
          testSuiteExpansions_.remove(index);
          onChanged();
        } else {
          testSuiteExpansionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * All test suites requested via top-level target patterns. Does not include
       * test suites whose label matched a negative pattern.
       * </pre>
       *
       * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion.Builder getTestSuiteExpansionsBuilder(
          int index) {
        return getTestSuiteExpansionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * All test suites requested via top-level target patterns. Does not include
       * test suites whose label matched a negative pattern.
       * </pre>
       *
       * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansionOrBuilder getTestSuiteExpansionsOrBuilder(
          int index) {
        if (testSuiteExpansionsBuilder_ == null) {
          return testSuiteExpansions_.get(index);  } else {
          return testSuiteExpansionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * All test suites requested via top-level target patterns. Does not include
       * test suites whose label matched a negative pattern.
       * </pre>
       *
       * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansionOrBuilder> 
           getTestSuiteExpansionsOrBuilderList() {
        if (testSuiteExpansionsBuilder_ != null) {
          return testSuiteExpansionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(testSuiteExpansions_);
        }
      }
      /**
       * <pre>
       * All test suites requested via top-level target patterns. Does not include
       * test suites whose label matched a negative pattern.
       * </pre>
       *
       * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion.Builder addTestSuiteExpansionsBuilder() {
        return getTestSuiteExpansionsFieldBuilder().addBuilder(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion.getDefaultInstance());
      }
      /**
       * <pre>
       * All test suites requested via top-level target patterns. Does not include
       * test suites whose label matched a negative pattern.
       * </pre>
       *
       * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion.Builder addTestSuiteExpansionsBuilder(
          int index) {
        return getTestSuiteExpansionsFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion.getDefaultInstance());
      }
      /**
       * <pre>
       * All test suites requested via top-level target patterns. Does not include
       * test suites whose label matched a negative pattern.
       * </pre>
       *
       * <code>repeated .build_event_stream.PatternExpanded.TestSuiteExpansion test_suite_expansions = 1;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion.Builder> 
           getTestSuiteExpansionsBuilderList() {
        return getTestSuiteExpansionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansionOrBuilder> 
          getTestSuiteExpansionsFieldBuilder() {
        if (testSuiteExpansionsBuilder_ == null) {
          testSuiteExpansionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansion.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.TestSuiteExpansionOrBuilder>(
                  testSuiteExpansions_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          testSuiteExpansions_ = null;
        }
        return testSuiteExpansionsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:build_event_stream.PatternExpanded)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.PatternExpanded)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TargetConfiguredOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.TargetConfigured)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The kind of target (e.g.,  e.g. "cc_library rule", "source file",
     * "generated file") where the completion is reported.
     * </pre>
     *
     * <code>string target_kind = 1;</code>
     * @return The targetKind.
     */
    java.lang.String getTargetKind();
    /**
     * <pre>
     * The kind of target (e.g.,  e.g. "cc_library rule", "source file",
     * "generated file") where the completion is reported.
     * </pre>
     *
     * <code>string target_kind = 1;</code>
     * @return The bytes for targetKind.
     */
    com.google.protobuf.ByteString
        getTargetKindBytes();

    /**
     * <pre>
     * The size of the test, if the target is a test target. Unset otherwise.
     * </pre>
     *
     * <code>.build_event_stream.TestSize test_size = 2;</code>
     * @return The enum numeric value on the wire for testSize.
     */
    int getTestSizeValue();
    /**
     * <pre>
     * The size of the test, if the target is a test target. Unset otherwise.
     * </pre>
     *
     * <code>.build_event_stream.TestSize test_size = 2;</code>
     * @return The testSize.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize getTestSize();

    /**
     * <pre>
     * List of all tags associated with this target (for all possible
     * configurations).
     * </pre>
     *
     * <code>repeated string tag = 3;</code>
     * @return A list containing the tag.
     */
    java.util.List<java.lang.String>
        getTagList();
    /**
     * <pre>
     * List of all tags associated with this target (for all possible
     * configurations).
     * </pre>
     *
     * <code>repeated string tag = 3;</code>
     * @return The count of tag.
     */
    int getTagCount();
    /**
     * <pre>
     * List of all tags associated with this target (for all possible
     * configurations).
     * </pre>
     *
     * <code>repeated string tag = 3;</code>
     * @param index The index of the element to return.
     * @return The tag at the given index.
     */
    java.lang.String getTag(int index);
    /**
     * <pre>
     * List of all tags associated with this target (for all possible
     * configurations).
     * </pre>
     *
     * <code>repeated string tag = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the tag at the given index.
     */
    com.google.protobuf.ByteString
        getTagBytes(int index);
  }
  /**
   * <pre>
   * Payload of the event indicating that the configurations for a target have
   * been identified. As with pattern expansion the main information is in the
   * chaining part: the id will contain the target that was configured and the
   * children id will contain the configured targets it was configured to.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.TargetConfigured}
   */
  public static final class TargetConfigured extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.TargetConfigured)
      TargetConfiguredOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TargetConfigured.newBuilder() to construct.
    private TargetConfigured(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TargetConfigured() {
      targetKind_ = "";
      testSize_ = 0;
      tag_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TargetConfigured_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TargetConfigured_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured.Builder.class);
    }

    public static final int TARGET_KIND_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object targetKind_ = "";
    /**
     * <pre>
     * The kind of target (e.g.,  e.g. "cc_library rule", "source file",
     * "generated file") where the completion is reported.
     * </pre>
     *
     * <code>string target_kind = 1;</code>
     * @return The targetKind.
     */
    @java.lang.Override
    public java.lang.String getTargetKind() {
      java.lang.Object ref = targetKind_;
      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();
        targetKind_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The kind of target (e.g.,  e.g. "cc_library rule", "source file",
     * "generated file") where the completion is reported.
     * </pre>
     *
     * <code>string target_kind = 1;</code>
     * @return The bytes for targetKind.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTargetKindBytes() {
      java.lang.Object ref = targetKind_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        targetKind_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TEST_SIZE_FIELD_NUMBER = 2;
    private int testSize_ = 0;
    /**
     * <pre>
     * The size of the test, if the target is a test target. Unset otherwise.
     * </pre>
     *
     * <code>.build_event_stream.TestSize test_size = 2;</code>
     * @return The enum numeric value on the wire for testSize.
     */
    @java.lang.Override public int getTestSizeValue() {
      return testSize_;
    }
    /**
     * <pre>
     * The size of the test, if the target is a test target. Unset otherwise.
     * </pre>
     *
     * <code>.build_event_stream.TestSize test_size = 2;</code>
     * @return The testSize.
     */
    @java.lang.Override public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize getTestSize() {
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize result = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize.forNumber(testSize_);
      return result == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize.UNRECOGNIZED : result;
    }

    public static final int TAG_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringList tag_;
    /**
     * <pre>
     * List of all tags associated with this target (for all possible
     * configurations).
     * </pre>
     *
     * <code>repeated string tag = 3;</code>
     * @return A list containing the tag.
     */
    public com.google.protobuf.ProtocolStringList
        getTagList() {
      return tag_;
    }
    /**
     * <pre>
     * List of all tags associated with this target (for all possible
     * configurations).
     * </pre>
     *
     * <code>repeated string tag = 3;</code>
     * @return The count of tag.
     */
    public int getTagCount() {
      return tag_.size();
    }
    /**
     * <pre>
     * List of all tags associated with this target (for all possible
     * configurations).
     * </pre>
     *
     * <code>repeated string tag = 3;</code>
     * @param index The index of the element to return.
     * @return The tag at the given index.
     */
    public java.lang.String getTag(int index) {
      return tag_.get(index);
    }
    /**
     * <pre>
     * List of all tags associated with this target (for all possible
     * configurations).
     * </pre>
     *
     * <code>repeated string tag = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the tag at the given index.
     */
    public com.google.protobuf.ByteString
        getTagBytes(int index) {
      return tag_.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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(targetKind_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, targetKind_);
      }
      if (testSize_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize.UNKNOWN.getNumber()) {
        output.writeEnum(2, testSize_);
      }
      for (int i = 0; i < tag_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, tag_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(targetKind_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, targetKind_);
      }
      if (testSize_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, testSize_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < tag_.size(); i++) {
          dataSize += computeStringSizeNoTag(tag_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getTagList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (!getTargetKind()
          .equals(other.getTargetKind())) return false;
      if (testSize_ != other.testSize_) return false;
      if (!getTagList()
          .equals(other.getTagList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TARGET_KIND_FIELD_NUMBER;
      hash = (53 * hash) + getTargetKind().hashCode();
      hash = (37 * hash) + TEST_SIZE_FIELD_NUMBER;
      hash = (53 * hash) + testSize_;
      if (getTagCount() > 0) {
        hash = (37 * hash) + TAG_FIELD_NUMBER;
        hash = (53 * hash) + getTagList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured 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.buildeventstream.BuildEventStreamProtos.TargetConfigured parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured 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.buildeventstream.BuildEventStreamProtos.TargetConfigured parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured 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.buildeventstream.BuildEventStreamProtos.TargetConfigured parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured 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.buildeventstream.BuildEventStreamProtos.TargetConfigured parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured 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.buildeventstream.BuildEventStreamProtos.TargetConfigured 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.buildeventstream.BuildEventStreamProtos.TargetConfigured 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.buildeventstream.BuildEventStreamProtos.TargetConfigured 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>
     * Payload of the event indicating that the configurations for a target have
     * been identified. As with pattern expansion the main information is in the
     * chaining part: the id will contain the target that was configured and the
     * children id will contain the configured targets it was configured to.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.TargetConfigured}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.TargetConfigured)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfiguredOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TargetConfigured_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TargetConfigured_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        targetKind_ = "";
        testSize_ = 0;
        tag_ = 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.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TargetConfigured_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured result) {
        if (((bitField0_ & 0x00000004) != 0)) {
          tag_ = tag_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.tag_ = tag_;
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.targetKind_ = targetKind_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.testSize_ = testSize_;
        }
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured.getDefaultInstance()) return this;
        if (!other.getTargetKind().isEmpty()) {
          targetKind_ = other.targetKind_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.testSize_ != 0) {
          setTestSizeValue(other.getTestSizeValue());
        }
        if (!other.tag_.isEmpty()) {
          if (tag_.isEmpty()) {
            tag_ = other.tag_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureTagIsMutable();
            tag_.addAll(other.tag_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                targetKind_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                testSize_ = input.readEnum();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 26: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureTagIsMutable();
                tag_.add(s);
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object targetKind_ = "";
      /**
       * <pre>
       * The kind of target (e.g.,  e.g. "cc_library rule", "source file",
       * "generated file") where the completion is reported.
       * </pre>
       *
       * <code>string target_kind = 1;</code>
       * @return The targetKind.
       */
      public java.lang.String getTargetKind() {
        java.lang.Object ref = targetKind_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          targetKind_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The kind of target (e.g.,  e.g. "cc_library rule", "source file",
       * "generated file") where the completion is reported.
       * </pre>
       *
       * <code>string target_kind = 1;</code>
       * @return The bytes for targetKind.
       */
      public com.google.protobuf.ByteString
          getTargetKindBytes() {
        java.lang.Object ref = targetKind_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          targetKind_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The kind of target (e.g.,  e.g. "cc_library rule", "source file",
       * "generated file") where the completion is reported.
       * </pre>
       *
       * <code>string target_kind = 1;</code>
       * @param value The targetKind to set.
       * @return This builder for chaining.
       */
      public Builder setTargetKind(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        targetKind_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The kind of target (e.g.,  e.g. "cc_library rule", "source file",
       * "generated file") where the completion is reported.
       * </pre>
       *
       * <code>string target_kind = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTargetKind() {
        targetKind_ = getDefaultInstance().getTargetKind();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The kind of target (e.g.,  e.g. "cc_library rule", "source file",
       * "generated file") where the completion is reported.
       * </pre>
       *
       * <code>string target_kind = 1;</code>
       * @param value The bytes for targetKind to set.
       * @return This builder for chaining.
       */
      public Builder setTargetKindBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        targetKind_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private int testSize_ = 0;
      /**
       * <pre>
       * The size of the test, if the target is a test target. Unset otherwise.
       * </pre>
       *
       * <code>.build_event_stream.TestSize test_size = 2;</code>
       * @return The enum numeric value on the wire for testSize.
       */
      @java.lang.Override public int getTestSizeValue() {
        return testSize_;
      }
      /**
       * <pre>
       * The size of the test, if the target is a test target. Unset otherwise.
       * </pre>
       *
       * <code>.build_event_stream.TestSize test_size = 2;</code>
       * @param value The enum numeric value on the wire for testSize to set.
       * @return This builder for chaining.
       */
      public Builder setTestSizeValue(int value) {
        testSize_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The size of the test, if the target is a test target. Unset otherwise.
       * </pre>
       *
       * <code>.build_event_stream.TestSize test_size = 2;</code>
       * @return The testSize.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize getTestSize() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize result = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize.forNumber(testSize_);
        return result == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * The size of the test, if the target is a test target. Unset otherwise.
       * </pre>
       *
       * <code>.build_event_stream.TestSize test_size = 2;</code>
       * @param value The testSize to set.
       * @return This builder for chaining.
       */
      public Builder setTestSize(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        testSize_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The size of the test, if the target is a test target. Unset otherwise.
       * </pre>
       *
       * <code>.build_event_stream.TestSize test_size = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTestSize() {
        bitField0_ = (bitField0_ & ~0x00000002);
        testSize_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList tag_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureTagIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          tag_ = new com.google.protobuf.LazyStringArrayList(tag_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <pre>
       * List of all tags associated with this target (for all possible
       * configurations).
       * </pre>
       *
       * <code>repeated string tag = 3;</code>
       * @return A list containing the tag.
       */
      public com.google.protobuf.ProtocolStringList
          getTagList() {
        return tag_.getUnmodifiableView();
      }
      /**
       * <pre>
       * List of all tags associated with this target (for all possible
       * configurations).
       * </pre>
       *
       * <code>repeated string tag = 3;</code>
       * @return The count of tag.
       */
      public int getTagCount() {
        return tag_.size();
      }
      /**
       * <pre>
       * List of all tags associated with this target (for all possible
       * configurations).
       * </pre>
       *
       * <code>repeated string tag = 3;</code>
       * @param index The index of the element to return.
       * @return The tag at the given index.
       */
      public java.lang.String getTag(int index) {
        return tag_.get(index);
      }
      /**
       * <pre>
       * List of all tags associated with this target (for all possible
       * configurations).
       * </pre>
       *
       * <code>repeated string tag = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the tag at the given index.
       */
      public com.google.protobuf.ByteString
          getTagBytes(int index) {
        return tag_.getByteString(index);
      }
      /**
       * <pre>
       * List of all tags associated with this target (for all possible
       * configurations).
       * </pre>
       *
       * <code>repeated string tag = 3;</code>
       * @param index The index to set the value at.
       * @param value The tag to set.
       * @return This builder for chaining.
       */
      public Builder setTag(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureTagIsMutable();
        tag_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of all tags associated with this target (for all possible
       * configurations).
       * </pre>
       *
       * <code>repeated string tag = 3;</code>
       * @param value The tag to add.
       * @return This builder for chaining.
       */
      public Builder addTag(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureTagIsMutable();
        tag_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of all tags associated with this target (for all possible
       * configurations).
       * </pre>
       *
       * <code>repeated string tag = 3;</code>
       * @param values The tag to add.
       * @return This builder for chaining.
       */
      public Builder addAllTag(
          java.lang.Iterable<java.lang.String> values) {
        ensureTagIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, tag_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of all tags associated with this target (for all possible
       * configurations).
       * </pre>
       *
       * <code>repeated string tag = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTag() {
        tag_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of all tags associated with this target (for all possible
       * configurations).
       * </pre>
       *
       * <code>repeated string tag = 3;</code>
       * @param value The bytes of the tag to add.
       * @return This builder for chaining.
       */
      public Builder addTagBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureTagIsMutable();
        tag_.add(value);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:build_event_stream.TargetConfigured)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.TargetConfigured)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FileOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.File)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * A sequence of prefixes to apply to the file name to construct a full path.
     * In most but not all cases, there will be 3 entries:
     *  1. A root output directory, eg "bazel-out"
     *  2. A configuration mnemonic, eg "k8-fastbuild"
     *  3. An output category, eg "genfiles"
     * </pre>
     *
     * <code>repeated string path_prefix = 4;</code>
     * @return A list containing the pathPrefix.
     */
    java.util.List<java.lang.String>
        getPathPrefixList();
    /**
     * <pre>
     * A sequence of prefixes to apply to the file name to construct a full path.
     * In most but not all cases, there will be 3 entries:
     *  1. A root output directory, eg "bazel-out"
     *  2. A configuration mnemonic, eg "k8-fastbuild"
     *  3. An output category, eg "genfiles"
     * </pre>
     *
     * <code>repeated string path_prefix = 4;</code>
     * @return The count of pathPrefix.
     */
    int getPathPrefixCount();
    /**
     * <pre>
     * A sequence of prefixes to apply to the file name to construct a full path.
     * In most but not all cases, there will be 3 entries:
     *  1. A root output directory, eg "bazel-out"
     *  2. A configuration mnemonic, eg "k8-fastbuild"
     *  3. An output category, eg "genfiles"
     * </pre>
     *
     * <code>repeated string path_prefix = 4;</code>
     * @param index The index of the element to return.
     * @return The pathPrefix at the given index.
     */
    java.lang.String getPathPrefix(int index);
    /**
     * <pre>
     * A sequence of prefixes to apply to the file name to construct a full path.
     * In most but not all cases, there will be 3 entries:
     *  1. A root output directory, eg "bazel-out"
     *  2. A configuration mnemonic, eg "k8-fastbuild"
     *  3. An output category, eg "genfiles"
     * </pre>
     *
     * <code>repeated string path_prefix = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the pathPrefix at the given index.
     */
    com.google.protobuf.ByteString
        getPathPrefixBytes(int index);

    /**
     * <pre>
     * identifier indicating the nature of the file (e.g., "stdout", "stderr")
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * identifier indicating the nature of the file (e.g., "stdout", "stderr")
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * A location where the contents of the file can be found. The string is
     * encoded according to RFC2396.
     * </pre>
     *
     * <code>string uri = 2;</code>
     * @return Whether the uri field is set.
     */
    boolean hasUri();
    /**
     * <pre>
     * A location where the contents of the file can be found. The string is
     * encoded according to RFC2396.
     * </pre>
     *
     * <code>string uri = 2;</code>
     * @return The uri.
     */
    java.lang.String getUri();
    /**
     * <pre>
     * A location where the contents of the file can be found. The string is
     * encoded according to RFC2396.
     * </pre>
     *
     * <code>string uri = 2;</code>
     * @return The bytes for uri.
     */
    com.google.protobuf.ByteString
        getUriBytes();

    /**
     * <pre>
     * The contents of the file, if they are guaranteed to be short.
     * </pre>
     *
     * <code>bytes contents = 3;</code>
     * @return Whether the contents field is set.
     */
    boolean hasContents();
    /**
     * <pre>
     * The contents of the file, if they are guaranteed to be short.
     * </pre>
     *
     * <code>bytes contents = 3;</code>
     * @return The contents.
     */
    com.google.protobuf.ByteString getContents();

    /**
     * <pre>
     * Digest of the file, using the build tool's configured digest algorithm,
     * hex-encoded.
     * </pre>
     *
     * <code>string digest = 5;</code>
     * @return The digest.
     */
    java.lang.String getDigest();
    /**
     * <pre>
     * Digest of the file, using the build tool's configured digest algorithm,
     * hex-encoded.
     * </pre>
     *
     * <code>string digest = 5;</code>
     * @return The bytes for digest.
     */
    com.google.protobuf.ByteString
        getDigestBytes();

    /**
     * <pre>
     * Length of the file in bytes.
     * </pre>
     *
     * <code>int64 length = 6;</code>
     * @return The length.
     */
    long getLength();

    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.FileCase getFileCase();
  }
  /**
   * Protobuf type {@code build_event_stream.File}
   */
  public static final class File extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.File)
      FileOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use File.newBuilder() to construct.
    private File(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private File() {
      pathPrefix_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      name_ = "";
      digest_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_File_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_File_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder.class);
    }

    private int fileCase_ = 0;
    private java.lang.Object file_;
    public enum FileCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      URI(2),
      CONTENTS(3),
      FILE_NOT_SET(0);
      private final int value;
      private FileCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static FileCase valueOf(int value) {
        return forNumber(value);
      }

      public static FileCase forNumber(int value) {
        switch (value) {
          case 2: return URI;
          case 3: return CONTENTS;
          case 0: return FILE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public FileCase
    getFileCase() {
      return FileCase.forNumber(
          fileCase_);
    }

    public static final int PATH_PREFIX_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringList pathPrefix_;
    /**
     * <pre>
     * A sequence of prefixes to apply to the file name to construct a full path.
     * In most but not all cases, there will be 3 entries:
     *  1. A root output directory, eg "bazel-out"
     *  2. A configuration mnemonic, eg "k8-fastbuild"
     *  3. An output category, eg "genfiles"
     * </pre>
     *
     * <code>repeated string path_prefix = 4;</code>
     * @return A list containing the pathPrefix.
     */
    public com.google.protobuf.ProtocolStringList
        getPathPrefixList() {
      return pathPrefix_;
    }
    /**
     * <pre>
     * A sequence of prefixes to apply to the file name to construct a full path.
     * In most but not all cases, there will be 3 entries:
     *  1. A root output directory, eg "bazel-out"
     *  2. A configuration mnemonic, eg "k8-fastbuild"
     *  3. An output category, eg "genfiles"
     * </pre>
     *
     * <code>repeated string path_prefix = 4;</code>
     * @return The count of pathPrefix.
     */
    public int getPathPrefixCount() {
      return pathPrefix_.size();
    }
    /**
     * <pre>
     * A sequence of prefixes to apply to the file name to construct a full path.
     * In most but not all cases, there will be 3 entries:
     *  1. A root output directory, eg "bazel-out"
     *  2. A configuration mnemonic, eg "k8-fastbuild"
     *  3. An output category, eg "genfiles"
     * </pre>
     *
     * <code>repeated string path_prefix = 4;</code>
     * @param index The index of the element to return.
     * @return The pathPrefix at the given index.
     */
    public java.lang.String getPathPrefix(int index) {
      return pathPrefix_.get(index);
    }
    /**
     * <pre>
     * A sequence of prefixes to apply to the file name to construct a full path.
     * In most but not all cases, there will be 3 entries:
     *  1. A root output directory, eg "bazel-out"
     *  2. A configuration mnemonic, eg "k8-fastbuild"
     *  3. An output category, eg "genfiles"
     * </pre>
     *
     * <code>repeated string path_prefix = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the pathPrefix at the given index.
     */
    public com.google.protobuf.ByteString
        getPathPrefixBytes(int index) {
      return pathPrefix_.getByteString(index);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object name_ = "";
    /**
     * <pre>
     * identifier indicating the nature of the file (e.g., "stdout", "stderr")
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * identifier indicating the nature of the file (e.g., "stdout", "stderr")
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int URI_FIELD_NUMBER = 2;
    /**
     * <pre>
     * A location where the contents of the file can be found. The string is
     * encoded according to RFC2396.
     * </pre>
     *
     * <code>string uri = 2;</code>
     * @return Whether the uri field is set.
     */
    public boolean hasUri() {
      return fileCase_ == 2;
    }
    /**
     * <pre>
     * A location where the contents of the file can be found. The string is
     * encoded according to RFC2396.
     * </pre>
     *
     * <code>string uri = 2;</code>
     * @return The uri.
     */
    public java.lang.String getUri() {
      java.lang.Object ref = "";
      if (fileCase_ == 2) {
        ref = file_;
      }
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (fileCase_ == 2) {
          file_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * A location where the contents of the file can be found. The string is
     * encoded according to RFC2396.
     * </pre>
     *
     * <code>string uri = 2;</code>
     * @return The bytes for uri.
     */
    public com.google.protobuf.ByteString
        getUriBytes() {
      java.lang.Object ref = "";
      if (fileCase_ == 2) {
        ref = file_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (fileCase_ == 2) {
          file_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONTENTS_FIELD_NUMBER = 3;
    /**
     * <pre>
     * The contents of the file, if they are guaranteed to be short.
     * </pre>
     *
     * <code>bytes contents = 3;</code>
     * @return Whether the contents field is set.
     */
    @java.lang.Override
    public boolean hasContents() {
      return fileCase_ == 3;
    }
    /**
     * <pre>
     * The contents of the file, if they are guaranteed to be short.
     * </pre>
     *
     * <code>bytes contents = 3;</code>
     * @return The contents.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getContents() {
      if (fileCase_ == 3) {
        return (com.google.protobuf.ByteString) file_;
      }
      return com.google.protobuf.ByteString.EMPTY;
    }

    public static final int DIGEST_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object digest_ = "";
    /**
     * <pre>
     * Digest of the file, using the build tool's configured digest algorithm,
     * hex-encoded.
     * </pre>
     *
     * <code>string digest = 5;</code>
     * @return The digest.
     */
    @java.lang.Override
    public java.lang.String getDigest() {
      java.lang.Object ref = digest_;
      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();
        digest_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Digest of the file, using the build tool's configured digest algorithm,
     * hex-encoded.
     * </pre>
     *
     * <code>string digest = 5;</code>
     * @return The bytes for digest.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDigestBytes() {
      java.lang.Object ref = digest_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        digest_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LENGTH_FIELD_NUMBER = 6;
    private long length_ = 0L;
    /**
     * <pre>
     * Length of the file in bytes.
     * </pre>
     *
     * <code>int64 length = 6;</code>
     * @return The length.
     */
    @java.lang.Override
    public long getLength() {
      return length_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (fileCase_ == 2) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, file_);
      }
      if (fileCase_ == 3) {
        output.writeBytes(
            3, (com.google.protobuf.ByteString) file_);
      }
      for (int i = 0; i < pathPrefix_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, pathPrefix_.getRaw(i));
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(digest_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, digest_);
      }
      if (length_ != 0L) {
        output.writeInt64(6, length_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (fileCase_ == 2) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, file_);
      }
      if (fileCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(
              3, (com.google.protobuf.ByteString) file_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < pathPrefix_.size(); i++) {
          dataSize += computeStringSizeNoTag(pathPrefix_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getPathPrefixList().size();
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(digest_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, digest_);
      }
      if (length_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(6, length_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (!getPathPrefixList()
          .equals(other.getPathPrefixList())) return false;
      if (!getName()
          .equals(other.getName())) return false;
      if (!getDigest()
          .equals(other.getDigest())) return false;
      if (getLength()
          != other.getLength()) return false;
      if (!getFileCase().equals(other.getFileCase())) return false;
      switch (fileCase_) {
        case 2:
          if (!getUri()
              .equals(other.getUri())) return false;
          break;
        case 3:
          if (!getContents()
              .equals(other.getContents())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getPathPrefixCount() > 0) {
        hash = (37 * hash) + PATH_PREFIX_FIELD_NUMBER;
        hash = (53 * hash) + getPathPrefixList().hashCode();
      }
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + DIGEST_FIELD_NUMBER;
      hash = (53 * hash) + getDigest().hashCode();
      hash = (37 * hash) + LENGTH_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getLength());
      switch (fileCase_) {
        case 2:
          hash = (37 * hash) + URI_FIELD_NUMBER;
          hash = (53 * hash) + getUri().hashCode();
          break;
        case 3:
          hash = (37 * hash) + CONTENTS_FIELD_NUMBER;
          hash = (53 * hash) + getContents().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

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

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

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_File_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        pathPrefix_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = "";
        digest_ = "";
        length_ = 0L;
        fileCase_ = 0;
        file_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_File_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File result) {
        if (((bitField0_ & 0x00000001) != 0)) {
          pathPrefix_ = pathPrefix_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.pathPrefix_ = pathPrefix_;
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.name_ = name_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.digest_ = digest_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.length_ = length_;
        }
      }

      private void buildPartialOneofs(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File result) {
        result.fileCase_ = fileCase_;
        result.file_ = this.file_;
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance()) return this;
        if (!other.pathPrefix_.isEmpty()) {
          if (pathPrefix_.isEmpty()) {
            pathPrefix_ = other.pathPrefix_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensurePathPrefixIsMutable();
            pathPrefix_.addAll(other.pathPrefix_);
          }
          onChanged();
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.getDigest().isEmpty()) {
          digest_ = other.digest_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (other.getLength() != 0L) {
          setLength(other.getLength());
        }
        switch (other.getFileCase()) {
          case URI: {
            fileCase_ = 2;
            file_ = other.file_;
            onChanged();
            break;
          }
          case CONTENTS: {
            setContents(other.getContents());
            break;
          }
          case FILE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 10
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();
                fileCase_ = 2;
                file_ = s;
                break;
              } // case 18
              case 26: {
                file_ = input.readBytes();
                fileCase_ = 3;
                break;
              } // case 26
              case 34: {
                java.lang.String s = input.readStringRequireUtf8();
                ensurePathPrefixIsMutable();
                pathPrefix_.add(s);
                break;
              } // case 34
              case 42: {
                digest_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 48: {
                length_ = input.readInt64();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int fileCase_ = 0;
      private java.lang.Object file_;
      public FileCase
          getFileCase() {
        return FileCase.forNumber(
            fileCase_);
      }

      public Builder clearFile() {
        fileCase_ = 0;
        file_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      private com.google.protobuf.LazyStringList pathPrefix_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensurePathPrefixIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          pathPrefix_ = new com.google.protobuf.LazyStringArrayList(pathPrefix_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * A sequence of prefixes to apply to the file name to construct a full path.
       * In most but not all cases, there will be 3 entries:
       *  1. A root output directory, eg "bazel-out"
       *  2. A configuration mnemonic, eg "k8-fastbuild"
       *  3. An output category, eg "genfiles"
       * </pre>
       *
       * <code>repeated string path_prefix = 4;</code>
       * @return A list containing the pathPrefix.
       */
      public com.google.protobuf.ProtocolStringList
          getPathPrefixList() {
        return pathPrefix_.getUnmodifiableView();
      }
      /**
       * <pre>
       * A sequence of prefixes to apply to the file name to construct a full path.
       * In most but not all cases, there will be 3 entries:
       *  1. A root output directory, eg "bazel-out"
       *  2. A configuration mnemonic, eg "k8-fastbuild"
       *  3. An output category, eg "genfiles"
       * </pre>
       *
       * <code>repeated string path_prefix = 4;</code>
       * @return The count of pathPrefix.
       */
      public int getPathPrefixCount() {
        return pathPrefix_.size();
      }
      /**
       * <pre>
       * A sequence of prefixes to apply to the file name to construct a full path.
       * In most but not all cases, there will be 3 entries:
       *  1. A root output directory, eg "bazel-out"
       *  2. A configuration mnemonic, eg "k8-fastbuild"
       *  3. An output category, eg "genfiles"
       * </pre>
       *
       * <code>repeated string path_prefix = 4;</code>
       * @param index The index of the element to return.
       * @return The pathPrefix at the given index.
       */
      public java.lang.String getPathPrefix(int index) {
        return pathPrefix_.get(index);
      }
      /**
       * <pre>
       * A sequence of prefixes to apply to the file name to construct a full path.
       * In most but not all cases, there will be 3 entries:
       *  1. A root output directory, eg "bazel-out"
       *  2. A configuration mnemonic, eg "k8-fastbuild"
       *  3. An output category, eg "genfiles"
       * </pre>
       *
       * <code>repeated string path_prefix = 4;</code>
       * @param index The index of the value to return.
       * @return The bytes of the pathPrefix at the given index.
       */
      public com.google.protobuf.ByteString
          getPathPrefixBytes(int index) {
        return pathPrefix_.getByteString(index);
      }
      /**
       * <pre>
       * A sequence of prefixes to apply to the file name to construct a full path.
       * In most but not all cases, there will be 3 entries:
       *  1. A root output directory, eg "bazel-out"
       *  2. A configuration mnemonic, eg "k8-fastbuild"
       *  3. An output category, eg "genfiles"
       * </pre>
       *
       * <code>repeated string path_prefix = 4;</code>
       * @param index The index to set the value at.
       * @param value The pathPrefix to set.
       * @return This builder for chaining.
       */
      public Builder setPathPrefix(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePathPrefixIsMutable();
        pathPrefix_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A sequence of prefixes to apply to the file name to construct a full path.
       * In most but not all cases, there will be 3 entries:
       *  1. A root output directory, eg "bazel-out"
       *  2. A configuration mnemonic, eg "k8-fastbuild"
       *  3. An output category, eg "genfiles"
       * </pre>
       *
       * <code>repeated string path_prefix = 4;</code>
       * @param value The pathPrefix to add.
       * @return This builder for chaining.
       */
      public Builder addPathPrefix(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePathPrefixIsMutable();
        pathPrefix_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A sequence of prefixes to apply to the file name to construct a full path.
       * In most but not all cases, there will be 3 entries:
       *  1. A root output directory, eg "bazel-out"
       *  2. A configuration mnemonic, eg "k8-fastbuild"
       *  3. An output category, eg "genfiles"
       * </pre>
       *
       * <code>repeated string path_prefix = 4;</code>
       * @param values The pathPrefix to add.
       * @return This builder for chaining.
       */
      public Builder addAllPathPrefix(
          java.lang.Iterable<java.lang.String> values) {
        ensurePathPrefixIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, pathPrefix_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A sequence of prefixes to apply to the file name to construct a full path.
       * In most but not all cases, there will be 3 entries:
       *  1. A root output directory, eg "bazel-out"
       *  2. A configuration mnemonic, eg "k8-fastbuild"
       *  3. An output category, eg "genfiles"
       * </pre>
       *
       * <code>repeated string path_prefix = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearPathPrefix() {
        pathPrefix_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A sequence of prefixes to apply to the file name to construct a full path.
       * In most but not all cases, there will be 3 entries:
       *  1. A root output directory, eg "bazel-out"
       *  2. A configuration mnemonic, eg "k8-fastbuild"
       *  3. An output category, eg "genfiles"
       * </pre>
       *
       * <code>repeated string path_prefix = 4;</code>
       * @param value The bytes of the pathPrefix to add.
       * @return This builder for chaining.
       */
      public Builder addPathPrefixBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensurePathPrefixIsMutable();
        pathPrefix_.add(value);
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * identifier indicating the nature of the file (e.g., "stdout", "stderr")
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * identifier indicating the nature of the file (e.g., "stdout", "stderr")
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * identifier indicating the nature of the file (e.g., "stdout", "stderr")
       * </pre>
       *
       * <code>string name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        name_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * identifier indicating the nature of the file (e.g., "stdout", "stderr")
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        name_ = getDefaultInstance().getName();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * identifier indicating the nature of the file (e.g., "stdout", "stderr")
       * </pre>
       *
       * <code>string name = 1;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        name_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      /**
       * <pre>
       * A location where the contents of the file can be found. The string is
       * encoded according to RFC2396.
       * </pre>
       *
       * <code>string uri = 2;</code>
       * @return Whether the uri field is set.
       */
      @java.lang.Override
      public boolean hasUri() {
        return fileCase_ == 2;
      }
      /**
       * <pre>
       * A location where the contents of the file can be found. The string is
       * encoded according to RFC2396.
       * </pre>
       *
       * <code>string uri = 2;</code>
       * @return The uri.
       */
      @java.lang.Override
      public java.lang.String getUri() {
        java.lang.Object ref = "";
        if (fileCase_ == 2) {
          ref = file_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (fileCase_ == 2) {
            file_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * A location where the contents of the file can be found. The string is
       * encoded according to RFC2396.
       * </pre>
       *
       * <code>string uri = 2;</code>
       * @return The bytes for uri.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getUriBytes() {
        java.lang.Object ref = "";
        if (fileCase_ == 2) {
          ref = file_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (fileCase_ == 2) {
            file_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * A location where the contents of the file can be found. The string is
       * encoded according to RFC2396.
       * </pre>
       *
       * <code>string uri = 2;</code>
       * @param value The uri to set.
       * @return This builder for chaining.
       */
      public Builder setUri(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        fileCase_ = 2;
        file_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A location where the contents of the file can be found. The string is
       * encoded according to RFC2396.
       * </pre>
       *
       * <code>string uri = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearUri() {
        if (fileCase_ == 2) {
          fileCase_ = 0;
          file_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * A location where the contents of the file can be found. The string is
       * encoded according to RFC2396.
       * </pre>
       *
       * <code>string uri = 2;</code>
       * @param value The bytes for uri to set.
       * @return This builder for chaining.
       */
      public Builder setUriBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        fileCase_ = 2;
        file_ = value;
        onChanged();
        return this;
      }

      /**
       * <pre>
       * The contents of the file, if they are guaranteed to be short.
       * </pre>
       *
       * <code>bytes contents = 3;</code>
       * @return Whether the contents field is set.
       */
      public boolean hasContents() {
        return fileCase_ == 3;
      }
      /**
       * <pre>
       * The contents of the file, if they are guaranteed to be short.
       * </pre>
       *
       * <code>bytes contents = 3;</code>
       * @return The contents.
       */
      public com.google.protobuf.ByteString getContents() {
        if (fileCase_ == 3) {
          return (com.google.protobuf.ByteString) file_;
        }
        return com.google.protobuf.ByteString.EMPTY;
      }
      /**
       * <pre>
       * The contents of the file, if they are guaranteed to be short.
       * </pre>
       *
       * <code>bytes contents = 3;</code>
       * @param value The contents to set.
       * @return This builder for chaining.
       */
      public Builder setContents(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        fileCase_ = 3;
        file_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The contents of the file, if they are guaranteed to be short.
       * </pre>
       *
       * <code>bytes contents = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearContents() {
        if (fileCase_ == 3) {
          fileCase_ = 0;
          file_ = null;
          onChanged();
        }
        return this;
      }

      private java.lang.Object digest_ = "";
      /**
       * <pre>
       * Digest of the file, using the build tool's configured digest algorithm,
       * hex-encoded.
       * </pre>
       *
       * <code>string digest = 5;</code>
       * @return The digest.
       */
      public java.lang.String getDigest() {
        java.lang.Object ref = digest_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          digest_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Digest of the file, using the build tool's configured digest algorithm,
       * hex-encoded.
       * </pre>
       *
       * <code>string digest = 5;</code>
       * @return The bytes for digest.
       */
      public com.google.protobuf.ByteString
          getDigestBytes() {
        java.lang.Object ref = digest_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          digest_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Digest of the file, using the build tool's configured digest algorithm,
       * hex-encoded.
       * </pre>
       *
       * <code>string digest = 5;</code>
       * @param value The digest to set.
       * @return This builder for chaining.
       */
      public Builder setDigest(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        digest_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Digest of the file, using the build tool's configured digest algorithm,
       * hex-encoded.
       * </pre>
       *
       * <code>string digest = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearDigest() {
        digest_ = getDefaultInstance().getDigest();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Digest of the file, using the build tool's configured digest algorithm,
       * hex-encoded.
       * </pre>
       *
       * <code>string digest = 5;</code>
       * @param value The bytes for digest to set.
       * @return This builder for chaining.
       */
      public Builder setDigestBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        digest_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private long length_ ;
      /**
       * <pre>
       * Length of the file in bytes.
       * </pre>
       *
       * <code>int64 length = 6;</code>
       * @return The length.
       */
      @java.lang.Override
      public long getLength() {
        return length_;
      }
      /**
       * <pre>
       * Length of the file in bytes.
       * </pre>
       *
       * <code>int64 length = 6;</code>
       * @param value The length to set.
       * @return This builder for chaining.
       */
      public Builder setLength(long value) {
        
        length_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Length of the file in bytes.
       * </pre>
       *
       * <code>int64 length = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearLength() {
        bitField0_ = (bitField0_ & ~0x00000020);
        length_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


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

    // @@protoc_insertion_point(class_scope:build_event_stream.File)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NamedSetOfFilesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.NamedSetOfFiles)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Files that belong to this named set of files.
     * </pre>
     *
     * <code>repeated .build_event_stream.File files = 1;</code>
     */
    java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> 
        getFilesList();
    /**
     * <pre>
     * Files that belong to this named set of files.
     * </pre>
     *
     * <code>repeated .build_event_stream.File files = 1;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getFiles(int index);
    /**
     * <pre>
     * Files that belong to this named set of files.
     * </pre>
     *
     * <code>repeated .build_event_stream.File files = 1;</code>
     */
    int getFilesCount();
    /**
     * <pre>
     * Files that belong to this named set of files.
     * </pre>
     *
     * <code>repeated .build_event_stream.File files = 1;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
        getFilesOrBuilderList();
    /**
     * <pre>
     * Files that belong to this named set of files.
     * </pre>
     *
     * <code>repeated .build_event_stream.File files = 1;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getFilesOrBuilder(
        int index);

    /**
     * <pre>
     * Other named sets whose members also belong to this set.
     * </pre>
     *
     * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
     */
    java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId> 
        getFileSetsList();
    /**
     * <pre>
     * Other named sets whose members also belong to this set.
     * </pre>
     *
     * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId getFileSets(int index);
    /**
     * <pre>
     * Other named sets whose members also belong to this set.
     * </pre>
     *
     * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
     */
    int getFileSetsCount();
    /**
     * <pre>
     * Other named sets whose members also belong to this set.
     * </pre>
     *
     * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder> 
        getFileSetsOrBuilderList();
    /**
     * <pre>
     * Other named sets whose members also belong to this set.
     * </pre>
     *
     * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder getFileSetsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Payload of a message to describe a set of files, usually build artifacts, to
   * be referred to later by their name. In this way, files that occur identically
   * as outputs of several targets have to be named only once.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.NamedSetOfFiles}
   */
  public static final class NamedSetOfFiles extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.NamedSetOfFiles)
      NamedSetOfFilesOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use NamedSetOfFiles.newBuilder() to construct.
    private NamedSetOfFiles(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private NamedSetOfFiles() {
      files_ = java.util.Collections.emptyList();
      fileSets_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_NamedSetOfFiles_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_NamedSetOfFiles_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles.Builder.class);
    }

    public static final int FILES_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> files_;
    /**
     * <pre>
     * Files that belong to this named set of files.
     * </pre>
     *
     * <code>repeated .build_event_stream.File files = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> getFilesList() {
      return files_;
    }
    /**
     * <pre>
     * Files that belong to this named set of files.
     * </pre>
     *
     * <code>repeated .build_event_stream.File files = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
        getFilesOrBuilderList() {
      return files_;
    }
    /**
     * <pre>
     * Files that belong to this named set of files.
     * </pre>
     *
     * <code>repeated .build_event_stream.File files = 1;</code>
     */
    @java.lang.Override
    public int getFilesCount() {
      return files_.size();
    }
    /**
     * <pre>
     * Files that belong to this named set of files.
     * </pre>
     *
     * <code>repeated .build_event_stream.File files = 1;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getFiles(int index) {
      return files_.get(index);
    }
    /**
     * <pre>
     * Files that belong to this named set of files.
     * </pre>
     *
     * <code>repeated .build_event_stream.File files = 1;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getFilesOrBuilder(
        int index) {
      return files_.get(index);
    }

    public static final int FILE_SETS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId> fileSets_;
    /**
     * <pre>
     * Other named sets whose members also belong to this set.
     * </pre>
     *
     * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId> getFileSetsList() {
      return fileSets_;
    }
    /**
     * <pre>
     * Other named sets whose members also belong to this set.
     * </pre>
     *
     * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder> 
        getFileSetsOrBuilderList() {
      return fileSets_;
    }
    /**
     * <pre>
     * Other named sets whose members also belong to this set.
     * </pre>
     *
     * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
     */
    @java.lang.Override
    public int getFileSetsCount() {
      return fileSets_.size();
    }
    /**
     * <pre>
     * Other named sets whose members also belong to this set.
     * </pre>
     *
     * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId getFileSets(int index) {
      return fileSets_.get(index);
    }
    /**
     * <pre>
     * Other named sets whose members also belong to this set.
     * </pre>
     *
     * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder getFileSetsOrBuilder(
        int index) {
      return fileSets_.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 < files_.size(); i++) {
        output.writeMessage(1, files_.get(i));
      }
      for (int i = 0; i < fileSets_.size(); i++) {
        output.writeMessage(2, fileSets_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

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

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

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

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

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles 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.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles 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.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles 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.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles 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.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles 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.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles 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.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles 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.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles 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>
     * Payload of a message to describe a set of files, usually build artifacts, to
     * be referred to later by their name. In this way, files that occur identically
     * as outputs of several targets have to be named only once.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.NamedSetOfFiles}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.NamedSetOfFiles)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFilesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_NamedSetOfFiles_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_NamedSetOfFiles_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (filesBuilder_ == null) {
          files_ = java.util.Collections.emptyList();
        } else {
          files_ = null;
          filesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (fileSetsBuilder_ == null) {
          fileSets_ = java.util.Collections.emptyList();
        } else {
          fileSets_ = null;
          fileSetsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_NamedSetOfFiles_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles result) {
        if (filesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            files_ = java.util.Collections.unmodifiableList(files_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.files_ = files_;
        } else {
          result.files_ = filesBuilder_.build();
        }
        if (fileSetsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            fileSets_ = java.util.Collections.unmodifiableList(fileSets_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.fileSets_ = fileSets_;
        } else {
          result.fileSets_ = fileSetsBuilder_.build();
        }
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles result) {
        int from_bitField0_ = bitField0_;
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles.getDefaultInstance()) return this;
        if (filesBuilder_ == null) {
          if (!other.files_.isEmpty()) {
            if (files_.isEmpty()) {
              files_ = other.files_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureFilesIsMutable();
              files_.addAll(other.files_);
            }
            onChanged();
          }
        } else {
          if (!other.files_.isEmpty()) {
            if (filesBuilder_.isEmpty()) {
              filesBuilder_.dispose();
              filesBuilder_ = null;
              files_ = other.files_;
              bitField0_ = (bitField0_ & ~0x00000001);
              filesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getFilesFieldBuilder() : null;
            } else {
              filesBuilder_.addAllMessages(other.files_);
            }
          }
        }
        if (fileSetsBuilder_ == null) {
          if (!other.fileSets_.isEmpty()) {
            if (fileSets_.isEmpty()) {
              fileSets_ = other.fileSets_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureFileSetsIsMutable();
              fileSets_.addAll(other.fileSets_);
            }
            onChanged();
          }
        } else {
          if (!other.fileSets_.isEmpty()) {
            if (fileSetsBuilder_.isEmpty()) {
              fileSetsBuilder_.dispose();
              fileSetsBuilder_ = null;
              fileSets_ = other.fileSets_;
              bitField0_ = (bitField0_ & ~0x00000002);
              fileSetsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getFileSetsFieldBuilder() : null;
            } else {
              fileSetsBuilder_.addAllMessages(other.fileSets_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File m =
                    input.readMessage(
                        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.parser(),
                        extensionRegistry);
                if (filesBuilder_ == null) {
                  ensureFilesIsMutable();
                  files_.add(m);
                } else {
                  filesBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId m =
                    input.readMessage(
                        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.parser(),
                        extensionRegistry);
                if (fileSetsBuilder_ == null) {
                  ensureFileSetsIsMutable();
                  fileSets_.add(m);
                } else {
                  fileSetsBuilder_.addMessage(m);
                }
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> files_ =
        java.util.Collections.emptyList();
      private void ensureFilesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          files_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File>(files_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> filesBuilder_;

      /**
       * <pre>
       * Files that belong to this named set of files.
       * </pre>
       *
       * <code>repeated .build_event_stream.File files = 1;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> getFilesList() {
        if (filesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(files_);
        } else {
          return filesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Files that belong to this named set of files.
       * </pre>
       *
       * <code>repeated .build_event_stream.File files = 1;</code>
       */
      public int getFilesCount() {
        if (filesBuilder_ == null) {
          return files_.size();
        } else {
          return filesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Files that belong to this named set of files.
       * </pre>
       *
       * <code>repeated .build_event_stream.File files = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getFiles(int index) {
        if (filesBuilder_ == null) {
          return files_.get(index);
        } else {
          return filesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Files that belong to this named set of files.
       * </pre>
       *
       * <code>repeated .build_event_stream.File files = 1;</code>
       */
      public Builder setFiles(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (filesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFilesIsMutable();
          files_.set(index, value);
          onChanged();
        } else {
          filesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Files that belong to this named set of files.
       * </pre>
       *
       * <code>repeated .build_event_stream.File files = 1;</code>
       */
      public Builder setFiles(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (filesBuilder_ == null) {
          ensureFilesIsMutable();
          files_.set(index, builderForValue.build());
          onChanged();
        } else {
          filesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Files that belong to this named set of files.
       * </pre>
       *
       * <code>repeated .build_event_stream.File files = 1;</code>
       */
      public Builder addFiles(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (filesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFilesIsMutable();
          files_.add(value);
          onChanged();
        } else {
          filesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Files that belong to this named set of files.
       * </pre>
       *
       * <code>repeated .build_event_stream.File files = 1;</code>
       */
      public Builder addFiles(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (filesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFilesIsMutable();
          files_.add(index, value);
          onChanged();
        } else {
          filesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Files that belong to this named set of files.
       * </pre>
       *
       * <code>repeated .build_event_stream.File files = 1;</code>
       */
      public Builder addFiles(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (filesBuilder_ == null) {
          ensureFilesIsMutable();
          files_.add(builderForValue.build());
          onChanged();
        } else {
          filesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Files that belong to this named set of files.
       * </pre>
       *
       * <code>repeated .build_event_stream.File files = 1;</code>
       */
      public Builder addFiles(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (filesBuilder_ == null) {
          ensureFilesIsMutable();
          files_.add(index, builderForValue.build());
          onChanged();
        } else {
          filesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Files that belong to this named set of files.
       * </pre>
       *
       * <code>repeated .build_event_stream.File files = 1;</code>
       */
      public Builder addAllFiles(
          java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> values) {
        if (filesBuilder_ == null) {
          ensureFilesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, files_);
          onChanged();
        } else {
          filesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Files that belong to this named set of files.
       * </pre>
       *
       * <code>repeated .build_event_stream.File files = 1;</code>
       */
      public Builder clearFiles() {
        if (filesBuilder_ == null) {
          files_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          filesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Files that belong to this named set of files.
       * </pre>
       *
       * <code>repeated .build_event_stream.File files = 1;</code>
       */
      public Builder removeFiles(int index) {
        if (filesBuilder_ == null) {
          ensureFilesIsMutable();
          files_.remove(index);
          onChanged();
        } else {
          filesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Files that belong to this named set of files.
       * </pre>
       *
       * <code>repeated .build_event_stream.File files = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder getFilesBuilder(
          int index) {
        return getFilesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Files that belong to this named set of files.
       * </pre>
       *
       * <code>repeated .build_event_stream.File files = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getFilesOrBuilder(
          int index) {
        if (filesBuilder_ == null) {
          return files_.get(index);  } else {
          return filesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Files that belong to this named set of files.
       * </pre>
       *
       * <code>repeated .build_event_stream.File files = 1;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
           getFilesOrBuilderList() {
        if (filesBuilder_ != null) {
          return filesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(files_);
        }
      }
      /**
       * <pre>
       * Files that belong to this named set of files.
       * </pre>
       *
       * <code>repeated .build_event_stream.File files = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder addFilesBuilder() {
        return getFilesFieldBuilder().addBuilder(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance());
      }
      /**
       * <pre>
       * Files that belong to this named set of files.
       * </pre>
       *
       * <code>repeated .build_event_stream.File files = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder addFilesBuilder(
          int index) {
        return getFilesFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance());
      }
      /**
       * <pre>
       * Files that belong to this named set of files.
       * </pre>
       *
       * <code>repeated .build_event_stream.File files = 1;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder> 
           getFilesBuilderList() {
        return getFilesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
          getFilesFieldBuilder() {
        if (filesBuilder_ == null) {
          filesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder>(
                  files_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          files_ = null;
        }
        return filesBuilder_;
      }

      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId> fileSets_ =
        java.util.Collections.emptyList();
      private void ensureFileSetsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          fileSets_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId>(fileSets_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder> fileSetsBuilder_;

      /**
       * <pre>
       * Other named sets whose members also belong to this set.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId> getFileSetsList() {
        if (fileSetsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(fileSets_);
        } else {
          return fileSetsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Other named sets whose members also belong to this set.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
       */
      public int getFileSetsCount() {
        if (fileSetsBuilder_ == null) {
          return fileSets_.size();
        } else {
          return fileSetsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Other named sets whose members also belong to this set.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId getFileSets(int index) {
        if (fileSetsBuilder_ == null) {
          return fileSets_.get(index);
        } else {
          return fileSetsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Other named sets whose members also belong to this set.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
       */
      public Builder setFileSets(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId value) {
        if (fileSetsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFileSetsIsMutable();
          fileSets_.set(index, value);
          onChanged();
        } else {
          fileSetsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Other named sets whose members also belong to this set.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
       */
      public Builder setFileSets(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder builderForValue) {
        if (fileSetsBuilder_ == null) {
          ensureFileSetsIsMutable();
          fileSets_.set(index, builderForValue.build());
          onChanged();
        } else {
          fileSetsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Other named sets whose members also belong to this set.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
       */
      public Builder addFileSets(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId value) {
        if (fileSetsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFileSetsIsMutable();
          fileSets_.add(value);
          onChanged();
        } else {
          fileSetsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Other named sets whose members also belong to this set.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
       */
      public Builder addFileSets(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId value) {
        if (fileSetsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFileSetsIsMutable();
          fileSets_.add(index, value);
          onChanged();
        } else {
          fileSetsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Other named sets whose members also belong to this set.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
       */
      public Builder addFileSets(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder builderForValue) {
        if (fileSetsBuilder_ == null) {
          ensureFileSetsIsMutable();
          fileSets_.add(builderForValue.build());
          onChanged();
        } else {
          fileSetsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Other named sets whose members also belong to this set.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
       */
      public Builder addFileSets(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder builderForValue) {
        if (fileSetsBuilder_ == null) {
          ensureFileSetsIsMutable();
          fileSets_.add(index, builderForValue.build());
          onChanged();
        } else {
          fileSetsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Other named sets whose members also belong to this set.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
       */
      public Builder addAllFileSets(
          java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId> values) {
        if (fileSetsBuilder_ == null) {
          ensureFileSetsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, fileSets_);
          onChanged();
        } else {
          fileSetsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Other named sets whose members also belong to this set.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
       */
      public Builder clearFileSets() {
        if (fileSetsBuilder_ == null) {
          fileSets_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          fileSetsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Other named sets whose members also belong to this set.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
       */
      public Builder removeFileSets(int index) {
        if (fileSetsBuilder_ == null) {
          ensureFileSetsIsMutable();
          fileSets_.remove(index);
          onChanged();
        } else {
          fileSetsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Other named sets whose members also belong to this set.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder getFileSetsBuilder(
          int index) {
        return getFileSetsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Other named sets whose members also belong to this set.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder getFileSetsOrBuilder(
          int index) {
        if (fileSetsBuilder_ == null) {
          return fileSets_.get(index);  } else {
          return fileSetsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Other named sets whose members also belong to this set.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder> 
           getFileSetsOrBuilderList() {
        if (fileSetsBuilder_ != null) {
          return fileSetsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(fileSets_);
        }
      }
      /**
       * <pre>
       * Other named sets whose members also belong to this set.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder addFileSetsBuilder() {
        return getFileSetsFieldBuilder().addBuilder(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.getDefaultInstance());
      }
      /**
       * <pre>
       * Other named sets whose members also belong to this set.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder addFileSetsBuilder(
          int index) {
        return getFileSetsFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.getDefaultInstance());
      }
      /**
       * <pre>
       * Other named sets whose members also belong to this set.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 2;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder> 
           getFileSetsBuilderList() {
        return getFileSetsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder> 
          getFileSetsFieldBuilder() {
        if (fileSetsBuilder_ == null) {
          fileSetsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder>(
                  fileSets_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          fileSets_ = null;
        }
        return fileSetsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:build_event_stream.NamedSetOfFiles)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.NamedSetOfFiles)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ActionExecutedOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.ActionExecuted)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>bool success = 1;</code>
     * @return The success.
     */
    boolean getSuccess();

    /**
     * <pre>
     * The mnemonic of the action that was executed
     * </pre>
     *
     * <code>string type = 8;</code>
     * @return The type.
     */
    java.lang.String getType();
    /**
     * <pre>
     * The mnemonic of the action that was executed
     * </pre>
     *
     * <code>string type = 8;</code>
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <pre>
     * The exit code of the action, if it is available.
     * </pre>
     *
     * <code>int32 exit_code = 2;</code>
     * @return The exitCode.
     */
    int getExitCode();

    /**
     * <pre>
     * Location where to find the standard output of the action
     * (e.g., a file path).
     * </pre>
     *
     * <code>.build_event_stream.File stdout = 3;</code>
     * @return Whether the stdout field is set.
     */
    boolean hasStdout();
    /**
     * <pre>
     * Location where to find the standard output of the action
     * (e.g., a file path).
     * </pre>
     *
     * <code>.build_event_stream.File stdout = 3;</code>
     * @return The stdout.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getStdout();
    /**
     * <pre>
     * Location where to find the standard output of the action
     * (e.g., a file path).
     * </pre>
     *
     * <code>.build_event_stream.File stdout = 3;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getStdoutOrBuilder();

    /**
     * <pre>
     * Location where to find the standard error of the action
     * (e.g., a file path).
     * </pre>
     *
     * <code>.build_event_stream.File stderr = 4;</code>
     * @return Whether the stderr field is set.
     */
    boolean hasStderr();
    /**
     * <pre>
     * Location where to find the standard error of the action
     * (e.g., a file path).
     * </pre>
     *
     * <code>.build_event_stream.File stderr = 4;</code>
     * @return The stderr.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getStderr();
    /**
     * <pre>
     * Location where to find the standard error of the action
     * (e.g., a file path).
     * </pre>
     *
     * <code>.build_event_stream.File stderr = 4;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getStderrOrBuilder();

    /**
     * <pre>
     * Deprecated. This field is now present on ActionCompletedId.
     * </pre>
     *
     * <code>string label = 5 [deprecated = true];</code>
     * @deprecated build_event_stream.ActionExecuted.label is deprecated.
     *     See bazel/build_event_stream.proto;l=527
     * @return The label.
     */
    @java.lang.Deprecated java.lang.String getLabel();
    /**
     * <pre>
     * Deprecated. This field is now present on ActionCompletedId.
     * </pre>
     *
     * <code>string label = 5 [deprecated = true];</code>
     * @deprecated build_event_stream.ActionExecuted.label is deprecated.
     *     See bazel/build_event_stream.proto;l=527
     * @return The bytes for label.
     */
    @java.lang.Deprecated com.google.protobuf.ByteString
        getLabelBytes();

    /**
     * <pre>
     * Deprecated. This field is now present on ActionCompletedId.
     * </pre>
     *
     * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 7 [deprecated = true];</code>
     * @deprecated build_event_stream.ActionExecuted.configuration is deprecated.
     *     See bazel/build_event_stream.proto;l=530
     * @return Whether the configuration field is set.
     */
    @java.lang.Deprecated boolean hasConfiguration();
    /**
     * <pre>
     * Deprecated. This field is now present on ActionCompletedId.
     * </pre>
     *
     * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 7 [deprecated = true];</code>
     * @deprecated build_event_stream.ActionExecuted.configuration is deprecated.
     *     See bazel/build_event_stream.proto;l=530
     * @return The configuration.
     */
    @java.lang.Deprecated com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration();
    /**
     * <pre>
     * Deprecated. This field is now present on ActionCompletedId.
     * </pre>
     *
     * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 7 [deprecated = true];</code>
     */
    @java.lang.Deprecated com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder();

    /**
     * <pre>
     * Primary output; only provided for successful actions.
     * </pre>
     *
     * <code>.build_event_stream.File primary_output = 6;</code>
     * @return Whether the primaryOutput field is set.
     */
    boolean hasPrimaryOutput();
    /**
     * <pre>
     * Primary output; only provided for successful actions.
     * </pre>
     *
     * <code>.build_event_stream.File primary_output = 6;</code>
     * @return The primaryOutput.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getPrimaryOutput();
    /**
     * <pre>
     * Primary output; only provided for successful actions.
     * </pre>
     *
     * <code>.build_event_stream.File primary_output = 6;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getPrimaryOutputOrBuilder();

    /**
     * <pre>
     * The command-line of the action, if the action is a command.
     * </pre>
     *
     * <code>repeated string command_line = 9;</code>
     * @return A list containing the commandLine.
     */
    java.util.List<java.lang.String>
        getCommandLineList();
    /**
     * <pre>
     * The command-line of the action, if the action is a command.
     * </pre>
     *
     * <code>repeated string command_line = 9;</code>
     * @return The count of commandLine.
     */
    int getCommandLineCount();
    /**
     * <pre>
     * The command-line of the action, if the action is a command.
     * </pre>
     *
     * <code>repeated string command_line = 9;</code>
     * @param index The index of the element to return.
     * @return The commandLine at the given index.
     */
    java.lang.String getCommandLine(int index);
    /**
     * <pre>
     * The command-line of the action, if the action is a command.
     * </pre>
     *
     * <code>repeated string command_line = 9;</code>
     * @param index The index of the value to return.
     * @return The bytes of the commandLine at the given index.
     */
    com.google.protobuf.ByteString
        getCommandLineBytes(int index);

    /**
     * <pre>
     * List of paths to log files
     * </pre>
     *
     * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
     */
    java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> 
        getActionMetadataLogsList();
    /**
     * <pre>
     * List of paths to log files
     * </pre>
     *
     * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getActionMetadataLogs(int index);
    /**
     * <pre>
     * List of paths to log files
     * </pre>
     *
     * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
     */
    int getActionMetadataLogsCount();
    /**
     * <pre>
     * List of paths to log files
     * </pre>
     *
     * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
        getActionMetadataLogsOrBuilderList();
    /**
     * <pre>
     * List of paths to log files
     * </pre>
     *
     * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getActionMetadataLogsOrBuilder(
        int index);

    /**
     * <pre>
     * Only populated if success = false, and sometimes not even then.
     * </pre>
     *
     * <code>.failure_details.FailureDetail failure_detail = 11;</code>
     * @return Whether the failureDetail field is set.
     */
    boolean hasFailureDetail();
    /**
     * <pre>
     * Only populated if success = false, and sometimes not even then.
     * </pre>
     *
     * <code>.failure_details.FailureDetail failure_detail = 11;</code>
     * @return The failureDetail.
     */
    com.google.devtools.build.lib.server.FailureDetails.FailureDetail getFailureDetail();
    /**
     * <pre>
     * Only populated if success = false, and sometimes not even then.
     * </pre>
     *
     * <code>.failure_details.FailureDetail failure_detail = 11;</code>
     */
    com.google.devtools.build.lib.server.FailureDetails.FailureDetailOrBuilder getFailureDetailOrBuilder();
  }
  /**
   * <pre>
   * Payload of the event indicating the completion of an action. The main purpose
   * of posting those events is to provide details on the root cause for a target
   * failing; however, consumers of the build-event protocol must not assume
   * that only failed actions are posted.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.ActionExecuted}
   */
  public static final class ActionExecuted extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.ActionExecuted)
      ActionExecutedOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ActionExecuted.newBuilder() to construct.
    private ActionExecuted(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ActionExecuted() {
      type_ = "";
      label_ = "";
      commandLine_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      actionMetadataLogs_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_ActionExecuted_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_ActionExecuted_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted.Builder.class);
    }

    public static final int SUCCESS_FIELD_NUMBER = 1;
    private boolean success_ = false;
    /**
     * <code>bool success = 1;</code>
     * @return The success.
     */
    @java.lang.Override
    public boolean getSuccess() {
      return success_;
    }

    public static final int TYPE_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * <pre>
     * The mnemonic of the action that was executed
     * </pre>
     *
     * <code>string type = 8;</code>
     * @return The type.
     */
    @java.lang.Override
    public java.lang.String getType() {
      java.lang.Object ref = type_;
      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();
        type_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The mnemonic of the action that was executed
     * </pre>
     *
     * <code>string type = 8;</code>
     * @return The bytes for type.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTypeBytes() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        type_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXIT_CODE_FIELD_NUMBER = 2;
    private int exitCode_ = 0;
    /**
     * <pre>
     * The exit code of the action, if it is available.
     * </pre>
     *
     * <code>int32 exit_code = 2;</code>
     * @return The exitCode.
     */
    @java.lang.Override
    public int getExitCode() {
      return exitCode_;
    }

    public static final int STDOUT_FIELD_NUMBER = 3;
    private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File stdout_;
    /**
     * <pre>
     * Location where to find the standard output of the action
     * (e.g., a file path).
     * </pre>
     *
     * <code>.build_event_stream.File stdout = 3;</code>
     * @return Whether the stdout field is set.
     */
    @java.lang.Override
    public boolean hasStdout() {
      return stdout_ != null;
    }
    /**
     * <pre>
     * Location where to find the standard output of the action
     * (e.g., a file path).
     * </pre>
     *
     * <code>.build_event_stream.File stdout = 3;</code>
     * @return The stdout.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getStdout() {
      return stdout_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance() : stdout_;
    }
    /**
     * <pre>
     * Location where to find the standard output of the action
     * (e.g., a file path).
     * </pre>
     *
     * <code>.build_event_stream.File stdout = 3;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getStdoutOrBuilder() {
      return stdout_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance() : stdout_;
    }

    public static final int STDERR_FIELD_NUMBER = 4;
    private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File stderr_;
    /**
     * <pre>
     * Location where to find the standard error of the action
     * (e.g., a file path).
     * </pre>
     *
     * <code>.build_event_stream.File stderr = 4;</code>
     * @return Whether the stderr field is set.
     */
    @java.lang.Override
    public boolean hasStderr() {
      return stderr_ != null;
    }
    /**
     * <pre>
     * Location where to find the standard error of the action
     * (e.g., a file path).
     * </pre>
     *
     * <code>.build_event_stream.File stderr = 4;</code>
     * @return The stderr.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getStderr() {
      return stderr_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance() : stderr_;
    }
    /**
     * <pre>
     * Location where to find the standard error of the action
     * (e.g., a file path).
     * </pre>
     *
     * <code>.build_event_stream.File stderr = 4;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getStderrOrBuilder() {
      return stderr_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance() : stderr_;
    }

    public static final int LABEL_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object label_ = "";
    /**
     * <pre>
     * Deprecated. This field is now present on ActionCompletedId.
     * </pre>
     *
     * <code>string label = 5 [deprecated = true];</code>
     * @deprecated build_event_stream.ActionExecuted.label is deprecated.
     *     See bazel/build_event_stream.proto;l=527
     * @return The label.
     */
    @java.lang.Override
    @java.lang.Deprecated 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>
     * Deprecated. This field is now present on ActionCompletedId.
     * </pre>
     *
     * <code>string label = 5 [deprecated = true];</code>
     * @deprecated build_event_stream.ActionExecuted.label is deprecated.
     *     See bazel/build_event_stream.proto;l=527
     * @return The bytes for label.
     */
    @java.lang.Override
    @java.lang.Deprecated 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 CONFIGURATION_FIELD_NUMBER = 7;
    private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId configuration_;
    /**
     * <pre>
     * Deprecated. This field is now present on ActionCompletedId.
     * </pre>
     *
     * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 7 [deprecated = true];</code>
     * @deprecated build_event_stream.ActionExecuted.configuration is deprecated.
     *     See bazel/build_event_stream.proto;l=530
     * @return Whether the configuration field is set.
     */
    @java.lang.Override
    @java.lang.Deprecated public boolean hasConfiguration() {
      return configuration_ != null;
    }
    /**
     * <pre>
     * Deprecated. This field is now present on ActionCompletedId.
     * </pre>
     *
     * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 7 [deprecated = true];</code>
     * @deprecated build_event_stream.ActionExecuted.configuration is deprecated.
     *     See bazel/build_event_stream.proto;l=530
     * @return The configuration.
     */
    @java.lang.Override
    @java.lang.Deprecated public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration() {
      return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
    }
    /**
     * <pre>
     * Deprecated. This field is now present on ActionCompletedId.
     * </pre>
     *
     * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 7 [deprecated = true];</code>
     */
    @java.lang.Override
    @java.lang.Deprecated public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder() {
      return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
    }

    public static final int PRIMARY_OUTPUT_FIELD_NUMBER = 6;
    private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File primaryOutput_;
    /**
     * <pre>
     * Primary output; only provided for successful actions.
     * </pre>
     *
     * <code>.build_event_stream.File primary_output = 6;</code>
     * @return Whether the primaryOutput field is set.
     */
    @java.lang.Override
    public boolean hasPrimaryOutput() {
      return primaryOutput_ != null;
    }
    /**
     * <pre>
     * Primary output; only provided for successful actions.
     * </pre>
     *
     * <code>.build_event_stream.File primary_output = 6;</code>
     * @return The primaryOutput.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getPrimaryOutput() {
      return primaryOutput_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance() : primaryOutput_;
    }
    /**
     * <pre>
     * Primary output; only provided for successful actions.
     * </pre>
     *
     * <code>.build_event_stream.File primary_output = 6;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getPrimaryOutputOrBuilder() {
      return primaryOutput_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance() : primaryOutput_;
    }

    public static final int COMMAND_LINE_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringList commandLine_;
    /**
     * <pre>
     * The command-line of the action, if the action is a command.
     * </pre>
     *
     * <code>repeated string command_line = 9;</code>
     * @return A list containing the commandLine.
     */
    public com.google.protobuf.ProtocolStringList
        getCommandLineList() {
      return commandLine_;
    }
    /**
     * <pre>
     * The command-line of the action, if the action is a command.
     * </pre>
     *
     * <code>repeated string command_line = 9;</code>
     * @return The count of commandLine.
     */
    public int getCommandLineCount() {
      return commandLine_.size();
    }
    /**
     * <pre>
     * The command-line of the action, if the action is a command.
     * </pre>
     *
     * <code>repeated string command_line = 9;</code>
     * @param index The index of the element to return.
     * @return The commandLine at the given index.
     */
    public java.lang.String getCommandLine(int index) {
      return commandLine_.get(index);
    }
    /**
     * <pre>
     * The command-line of the action, if the action is a command.
     * </pre>
     *
     * <code>repeated string command_line = 9;</code>
     * @param index The index of the value to return.
     * @return The bytes of the commandLine at the given index.
     */
    public com.google.protobuf.ByteString
        getCommandLineBytes(int index) {
      return commandLine_.getByteString(index);
    }

    public static final int ACTION_METADATA_LOGS_FIELD_NUMBER = 10;
    @SuppressWarnings("serial")
    private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> actionMetadataLogs_;
    /**
     * <pre>
     * List of paths to log files
     * </pre>
     *
     * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> getActionMetadataLogsList() {
      return actionMetadataLogs_;
    }
    /**
     * <pre>
     * List of paths to log files
     * </pre>
     *
     * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
        getActionMetadataLogsOrBuilderList() {
      return actionMetadataLogs_;
    }
    /**
     * <pre>
     * List of paths to log files
     * </pre>
     *
     * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
     */
    @java.lang.Override
    public int getActionMetadataLogsCount() {
      return actionMetadataLogs_.size();
    }
    /**
     * <pre>
     * List of paths to log files
     * </pre>
     *
     * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getActionMetadataLogs(int index) {
      return actionMetadataLogs_.get(index);
    }
    /**
     * <pre>
     * List of paths to log files
     * </pre>
     *
     * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getActionMetadataLogsOrBuilder(
        int index) {
      return actionMetadataLogs_.get(index);
    }

    public static final int FAILURE_DETAIL_FIELD_NUMBER = 11;
    private com.google.devtools.build.lib.server.FailureDetails.FailureDetail failureDetail_;
    /**
     * <pre>
     * Only populated if success = false, and sometimes not even then.
     * </pre>
     *
     * <code>.failure_details.FailureDetail failure_detail = 11;</code>
     * @return Whether the failureDetail field is set.
     */
    @java.lang.Override
    public boolean hasFailureDetail() {
      return failureDetail_ != null;
    }
    /**
     * <pre>
     * Only populated if success = false, and sometimes not even then.
     * </pre>
     *
     * <code>.failure_details.FailureDetail failure_detail = 11;</code>
     * @return The failureDetail.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.server.FailureDetails.FailureDetail getFailureDetail() {
      return failureDetail_ == null ? com.google.devtools.build.lib.server.FailureDetails.FailureDetail.getDefaultInstance() : failureDetail_;
    }
    /**
     * <pre>
     * Only populated if success = false, and sometimes not even then.
     * </pre>
     *
     * <code>.failure_details.FailureDetail failure_detail = 11;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.server.FailureDetails.FailureDetailOrBuilder getFailureDetailOrBuilder() {
      return failureDetail_ == null ? com.google.devtools.build.lib.server.FailureDetails.FailureDetail.getDefaultInstance() : failureDetail_;
    }

    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 (success_ != false) {
        output.writeBool(1, success_);
      }
      if (exitCode_ != 0) {
        output.writeInt32(2, exitCode_);
      }
      if (stdout_ != null) {
        output.writeMessage(3, getStdout());
      }
      if (stderr_ != null) {
        output.writeMessage(4, getStderr());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(label_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, label_);
      }
      if (primaryOutput_ != null) {
        output.writeMessage(6, getPrimaryOutput());
      }
      if (configuration_ != null) {
        output.writeMessage(7, getConfiguration());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(type_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, type_);
      }
      for (int i = 0; i < commandLine_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, commandLine_.getRaw(i));
      }
      for (int i = 0; i < actionMetadataLogs_.size(); i++) {
        output.writeMessage(10, actionMetadataLogs_.get(i));
      }
      if (failureDetail_ != null) {
        output.writeMessage(11, getFailureDetail());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (success_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, success_);
      }
      if (exitCode_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, exitCode_);
      }
      if (stdout_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getStdout());
      }
      if (stderr_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getStderr());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(label_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, label_);
      }
      if (primaryOutput_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getPrimaryOutput());
      }
      if (configuration_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getConfiguration());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(type_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, type_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < commandLine_.size(); i++) {
          dataSize += computeStringSizeNoTag(commandLine_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getCommandLineList().size();
      }
      for (int i = 0; i < actionMetadataLogs_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, actionMetadataLogs_.get(i));
      }
      if (failureDetail_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, getFailureDetail());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (getSuccess()
          != other.getSuccess()) return false;
      if (!getType()
          .equals(other.getType())) return false;
      if (getExitCode()
          != other.getExitCode()) return false;
      if (hasStdout() != other.hasStdout()) return false;
      if (hasStdout()) {
        if (!getStdout()
            .equals(other.getStdout())) return false;
      }
      if (hasStderr() != other.hasStderr()) return false;
      if (hasStderr()) {
        if (!getStderr()
            .equals(other.getStderr())) return false;
      }
      if (!getLabel()
          .equals(other.getLabel())) return false;
      if (hasConfiguration() != other.hasConfiguration()) return false;
      if (hasConfiguration()) {
        if (!getConfiguration()
            .equals(other.getConfiguration())) return false;
      }
      if (hasPrimaryOutput() != other.hasPrimaryOutput()) return false;
      if (hasPrimaryOutput()) {
        if (!getPrimaryOutput()
            .equals(other.getPrimaryOutput())) return false;
      }
      if (!getCommandLineList()
          .equals(other.getCommandLineList())) return false;
      if (!getActionMetadataLogsList()
          .equals(other.getActionMetadataLogsList())) return false;
      if (hasFailureDetail() != other.hasFailureDetail()) return false;
      if (hasFailureDetail()) {
        if (!getFailureDetail()
            .equals(other.getFailureDetail())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SUCCESS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getSuccess());
      hash = (37 * hash) + TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getType().hashCode();
      hash = (37 * hash) + EXIT_CODE_FIELD_NUMBER;
      hash = (53 * hash) + getExitCode();
      if (hasStdout()) {
        hash = (37 * hash) + STDOUT_FIELD_NUMBER;
        hash = (53 * hash) + getStdout().hashCode();
      }
      if (hasStderr()) {
        hash = (37 * hash) + STDERR_FIELD_NUMBER;
        hash = (53 * hash) + getStderr().hashCode();
      }
      hash = (37 * hash) + LABEL_FIELD_NUMBER;
      hash = (53 * hash) + getLabel().hashCode();
      if (hasConfiguration()) {
        hash = (37 * hash) + CONFIGURATION_FIELD_NUMBER;
        hash = (53 * hash) + getConfiguration().hashCode();
      }
      if (hasPrimaryOutput()) {
        hash = (37 * hash) + PRIMARY_OUTPUT_FIELD_NUMBER;
        hash = (53 * hash) + getPrimaryOutput().hashCode();
      }
      if (getCommandLineCount() > 0) {
        hash = (37 * hash) + COMMAND_LINE_FIELD_NUMBER;
        hash = (53 * hash) + getCommandLineList().hashCode();
      }
      if (getActionMetadataLogsCount() > 0) {
        hash = (37 * hash) + ACTION_METADATA_LOGS_FIELD_NUMBER;
        hash = (53 * hash) + getActionMetadataLogsList().hashCode();
      }
      if (hasFailureDetail()) {
        hash = (37 * hash) + FAILURE_DETAIL_FIELD_NUMBER;
        hash = (53 * hash) + getFailureDetail().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted 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.buildeventstream.BuildEventStreamProtos.ActionExecuted parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted 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.buildeventstream.BuildEventStreamProtos.ActionExecuted parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted 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.buildeventstream.BuildEventStreamProtos.ActionExecuted parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted 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.buildeventstream.BuildEventStreamProtos.ActionExecuted parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted 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.buildeventstream.BuildEventStreamProtos.ActionExecuted 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.buildeventstream.BuildEventStreamProtos.ActionExecuted 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.buildeventstream.BuildEventStreamProtos.ActionExecuted 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>
     * Payload of the event indicating the completion of an action. The main purpose
     * of posting those events is to provide details on the root cause for a target
     * failing; however, consumers of the build-event protocol must not assume
     * that only failed actions are posted.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.ActionExecuted}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.ActionExecuted)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecutedOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_ActionExecuted_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_ActionExecuted_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        success_ = false;
        type_ = "";
        exitCode_ = 0;
        stdout_ = null;
        if (stdoutBuilder_ != null) {
          stdoutBuilder_.dispose();
          stdoutBuilder_ = null;
        }
        stderr_ = null;
        if (stderrBuilder_ != null) {
          stderrBuilder_.dispose();
          stderrBuilder_ = null;
        }
        label_ = "";
        configuration_ = null;
        if (configurationBuilder_ != null) {
          configurationBuilder_.dispose();
          configurationBuilder_ = null;
        }
        primaryOutput_ = null;
        if (primaryOutputBuilder_ != null) {
          primaryOutputBuilder_.dispose();
          primaryOutputBuilder_ = null;
        }
        commandLine_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000100);
        if (actionMetadataLogsBuilder_ == null) {
          actionMetadataLogs_ = java.util.Collections.emptyList();
        } else {
          actionMetadataLogs_ = null;
          actionMetadataLogsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000200);
        failureDetail_ = null;
        if (failureDetailBuilder_ != null) {
          failureDetailBuilder_.dispose();
          failureDetailBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_ActionExecuted_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted result) {
        if (((bitField0_ & 0x00000100) != 0)) {
          commandLine_ = commandLine_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000100);
        }
        result.commandLine_ = commandLine_;
        if (actionMetadataLogsBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0)) {
            actionMetadataLogs_ = java.util.Collections.unmodifiableList(actionMetadataLogs_);
            bitField0_ = (bitField0_ & ~0x00000200);
          }
          result.actionMetadataLogs_ = actionMetadataLogs_;
        } else {
          result.actionMetadataLogs_ = actionMetadataLogsBuilder_.build();
        }
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.success_ = success_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.type_ = type_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.exitCode_ = exitCode_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.stdout_ = stdoutBuilder_ == null
              ? stdout_
              : stdoutBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.stderr_ = stderrBuilder_ == null
              ? stderr_
              : stderrBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.label_ = label_;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.configuration_ = configurationBuilder_ == null
              ? configuration_
              : configurationBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.primaryOutput_ = primaryOutputBuilder_ == null
              ? primaryOutput_
              : primaryOutputBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.failureDetail_ = failureDetailBuilder_ == null
              ? failureDetail_
              : failureDetailBuilder_.build();
        }
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted.getDefaultInstance()) return this;
        if (other.getSuccess() != false) {
          setSuccess(other.getSuccess());
        }
        if (!other.getType().isEmpty()) {
          type_ = other.type_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.getExitCode() != 0) {
          setExitCode(other.getExitCode());
        }
        if (other.hasStdout()) {
          mergeStdout(other.getStdout());
        }
        if (other.hasStderr()) {
          mergeStderr(other.getStderr());
        }
        if (!other.getLabel().isEmpty()) {
          label_ = other.label_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (other.hasConfiguration()) {
          mergeConfiguration(other.getConfiguration());
        }
        if (other.hasPrimaryOutput()) {
          mergePrimaryOutput(other.getPrimaryOutput());
        }
        if (!other.commandLine_.isEmpty()) {
          if (commandLine_.isEmpty()) {
            commandLine_ = other.commandLine_;
            bitField0_ = (bitField0_ & ~0x00000100);
          } else {
            ensureCommandLineIsMutable();
            commandLine_.addAll(other.commandLine_);
          }
          onChanged();
        }
        if (actionMetadataLogsBuilder_ == null) {
          if (!other.actionMetadataLogs_.isEmpty()) {
            if (actionMetadataLogs_.isEmpty()) {
              actionMetadataLogs_ = other.actionMetadataLogs_;
              bitField0_ = (bitField0_ & ~0x00000200);
            } else {
              ensureActionMetadataLogsIsMutable();
              actionMetadataLogs_.addAll(other.actionMetadataLogs_);
            }
            onChanged();
          }
        } else {
          if (!other.actionMetadataLogs_.isEmpty()) {
            if (actionMetadataLogsBuilder_.isEmpty()) {
              actionMetadataLogsBuilder_.dispose();
              actionMetadataLogsBuilder_ = null;
              actionMetadataLogs_ = other.actionMetadataLogs_;
              bitField0_ = (bitField0_ & ~0x00000200);
              actionMetadataLogsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getActionMetadataLogsFieldBuilder() : null;
            } else {
              actionMetadataLogsBuilder_.addAllMessages(other.actionMetadataLogs_);
            }
          }
        }
        if (other.hasFailureDetail()) {
          mergeFailureDetail(other.getFailureDetail());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                success_ = input.readBool();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                exitCode_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 16
              case 26: {
                input.readMessage(
                    getStdoutFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getStderrFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 34
              case 42: {
                label_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000020;
                break;
              } // case 42
              case 50: {
                input.readMessage(
                    getPrimaryOutputFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000080;
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getConfigurationFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                type_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 66
              case 74: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureCommandLineIsMutable();
                commandLine_.add(s);
                break;
              } // case 74
              case 82: {
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File m =
                    input.readMessage(
                        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.parser(),
                        extensionRegistry);
                if (actionMetadataLogsBuilder_ == null) {
                  ensureActionMetadataLogsIsMutable();
                  actionMetadataLogs_.add(m);
                } else {
                  actionMetadataLogsBuilder_.addMessage(m);
                }
                break;
              } // case 82
              case 90: {
                input.readMessage(
                    getFailureDetailFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000400;
                break;
              } // case 90
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private boolean success_ ;
      /**
       * <code>bool success = 1;</code>
       * @return The success.
       */
      @java.lang.Override
      public boolean getSuccess() {
        return success_;
      }
      /**
       * <code>bool success = 1;</code>
       * @param value The success to set.
       * @return This builder for chaining.
       */
      public Builder setSuccess(boolean value) {
        
        success_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>bool success = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSuccess() {
        bitField0_ = (bitField0_ & ~0x00000001);
        success_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object type_ = "";
      /**
       * <pre>
       * The mnemonic of the action that was executed
       * </pre>
       *
       * <code>string type = 8;</code>
       * @return The type.
       */
      public java.lang.String getType() {
        java.lang.Object ref = type_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          type_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The mnemonic of the action that was executed
       * </pre>
       *
       * <code>string type = 8;</code>
       * @return The bytes for type.
       */
      public com.google.protobuf.ByteString
          getTypeBytes() {
        java.lang.Object ref = type_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          type_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The mnemonic of the action that was executed
       * </pre>
       *
       * <code>string type = 8;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        type_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The mnemonic of the action that was executed
       * </pre>
       *
       * <code>string type = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        type_ = getDefaultInstance().getType();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The mnemonic of the action that was executed
       * </pre>
       *
       * <code>string type = 8;</code>
       * @param value The bytes for type to set.
       * @return This builder for chaining.
       */
      public Builder setTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        type_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private int exitCode_ ;
      /**
       * <pre>
       * The exit code of the action, if it is available.
       * </pre>
       *
       * <code>int32 exit_code = 2;</code>
       * @return The exitCode.
       */
      @java.lang.Override
      public int getExitCode() {
        return exitCode_;
      }
      /**
       * <pre>
       * The exit code of the action, if it is available.
       * </pre>
       *
       * <code>int32 exit_code = 2;</code>
       * @param value The exitCode to set.
       * @return This builder for chaining.
       */
      public Builder setExitCode(int value) {
        
        exitCode_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The exit code of the action, if it is available.
       * </pre>
       *
       * <code>int32 exit_code = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearExitCode() {
        bitField0_ = (bitField0_ & ~0x00000004);
        exitCode_ = 0;
        onChanged();
        return this;
      }

      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File stdout_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> stdoutBuilder_;
      /**
       * <pre>
       * Location where to find the standard output of the action
       * (e.g., a file path).
       * </pre>
       *
       * <code>.build_event_stream.File stdout = 3;</code>
       * @return Whether the stdout field is set.
       */
      public boolean hasStdout() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Location where to find the standard output of the action
       * (e.g., a file path).
       * </pre>
       *
       * <code>.build_event_stream.File stdout = 3;</code>
       * @return The stdout.
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getStdout() {
        if (stdoutBuilder_ == null) {
          return stdout_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance() : stdout_;
        } else {
          return stdoutBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Location where to find the standard output of the action
       * (e.g., a file path).
       * </pre>
       *
       * <code>.build_event_stream.File stdout = 3;</code>
       */
      public Builder setStdout(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (stdoutBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          stdout_ = value;
        } else {
          stdoutBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Location where to find the standard output of the action
       * (e.g., a file path).
       * </pre>
       *
       * <code>.build_event_stream.File stdout = 3;</code>
       */
      public Builder setStdout(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (stdoutBuilder_ == null) {
          stdout_ = builderForValue.build();
        } else {
          stdoutBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Location where to find the standard output of the action
       * (e.g., a file path).
       * </pre>
       *
       * <code>.build_event_stream.File stdout = 3;</code>
       */
      public Builder mergeStdout(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (stdoutBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            stdout_ != null &&
            stdout_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance()) {
            getStdoutBuilder().mergeFrom(value);
          } else {
            stdout_ = value;
          }
        } else {
          stdoutBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Location where to find the standard output of the action
       * (e.g., a file path).
       * </pre>
       *
       * <code>.build_event_stream.File stdout = 3;</code>
       */
      public Builder clearStdout() {
        bitField0_ = (bitField0_ & ~0x00000008);
        stdout_ = null;
        if (stdoutBuilder_ != null) {
          stdoutBuilder_.dispose();
          stdoutBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Location where to find the standard output of the action
       * (e.g., a file path).
       * </pre>
       *
       * <code>.build_event_stream.File stdout = 3;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder getStdoutBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getStdoutFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Location where to find the standard output of the action
       * (e.g., a file path).
       * </pre>
       *
       * <code>.build_event_stream.File stdout = 3;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getStdoutOrBuilder() {
        if (stdoutBuilder_ != null) {
          return stdoutBuilder_.getMessageOrBuilder();
        } else {
          return stdout_ == null ?
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance() : stdout_;
        }
      }
      /**
       * <pre>
       * Location where to find the standard output of the action
       * (e.g., a file path).
       * </pre>
       *
       * <code>.build_event_stream.File stdout = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
          getStdoutFieldBuilder() {
        if (stdoutBuilder_ == null) {
          stdoutBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder>(
                  getStdout(),
                  getParentForChildren(),
                  isClean());
          stdout_ = null;
        }
        return stdoutBuilder_;
      }

      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File stderr_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> stderrBuilder_;
      /**
       * <pre>
       * Location where to find the standard error of the action
       * (e.g., a file path).
       * </pre>
       *
       * <code>.build_event_stream.File stderr = 4;</code>
       * @return Whether the stderr field is set.
       */
      public boolean hasStderr() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Location where to find the standard error of the action
       * (e.g., a file path).
       * </pre>
       *
       * <code>.build_event_stream.File stderr = 4;</code>
       * @return The stderr.
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getStderr() {
        if (stderrBuilder_ == null) {
          return stderr_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance() : stderr_;
        } else {
          return stderrBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Location where to find the standard error of the action
       * (e.g., a file path).
       * </pre>
       *
       * <code>.build_event_stream.File stderr = 4;</code>
       */
      public Builder setStderr(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (stderrBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          stderr_ = value;
        } else {
          stderrBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Location where to find the standard error of the action
       * (e.g., a file path).
       * </pre>
       *
       * <code>.build_event_stream.File stderr = 4;</code>
       */
      public Builder setStderr(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (stderrBuilder_ == null) {
          stderr_ = builderForValue.build();
        } else {
          stderrBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Location where to find the standard error of the action
       * (e.g., a file path).
       * </pre>
       *
       * <code>.build_event_stream.File stderr = 4;</code>
       */
      public Builder mergeStderr(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (stderrBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            stderr_ != null &&
            stderr_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance()) {
            getStderrBuilder().mergeFrom(value);
          } else {
            stderr_ = value;
          }
        } else {
          stderrBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Location where to find the standard error of the action
       * (e.g., a file path).
       * </pre>
       *
       * <code>.build_event_stream.File stderr = 4;</code>
       */
      public Builder clearStderr() {
        bitField0_ = (bitField0_ & ~0x00000010);
        stderr_ = null;
        if (stderrBuilder_ != null) {
          stderrBuilder_.dispose();
          stderrBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Location where to find the standard error of the action
       * (e.g., a file path).
       * </pre>
       *
       * <code>.build_event_stream.File stderr = 4;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder getStderrBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getStderrFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Location where to find the standard error of the action
       * (e.g., a file path).
       * </pre>
       *
       * <code>.build_event_stream.File stderr = 4;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getStderrOrBuilder() {
        if (stderrBuilder_ != null) {
          return stderrBuilder_.getMessageOrBuilder();
        } else {
          return stderr_ == null ?
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance() : stderr_;
        }
      }
      /**
       * <pre>
       * Location where to find the standard error of the action
       * (e.g., a file path).
       * </pre>
       *
       * <code>.build_event_stream.File stderr = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
          getStderrFieldBuilder() {
        if (stderrBuilder_ == null) {
          stderrBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder>(
                  getStderr(),
                  getParentForChildren(),
                  isClean());
          stderr_ = null;
        }
        return stderrBuilder_;
      }

      private java.lang.Object label_ = "";
      /**
       * <pre>
       * Deprecated. This field is now present on ActionCompletedId.
       * </pre>
       *
       * <code>string label = 5 [deprecated = true];</code>
       * @deprecated build_event_stream.ActionExecuted.label is deprecated.
       *     See bazel/build_event_stream.proto;l=527
       * @return The label.
       */
      @java.lang.Deprecated 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>
       * Deprecated. This field is now present on ActionCompletedId.
       * </pre>
       *
       * <code>string label = 5 [deprecated = true];</code>
       * @deprecated build_event_stream.ActionExecuted.label is deprecated.
       *     See bazel/build_event_stream.proto;l=527
       * @return The bytes for label.
       */
      @java.lang.Deprecated 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>
       * Deprecated. This field is now present on ActionCompletedId.
       * </pre>
       *
       * <code>string label = 5 [deprecated = true];</code>
       * @deprecated build_event_stream.ActionExecuted.label is deprecated.
       *     See bazel/build_event_stream.proto;l=527
       * @param value The label to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setLabel(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        label_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Deprecated. This field is now present on ActionCompletedId.
       * </pre>
       *
       * <code>string label = 5 [deprecated = true];</code>
       * @deprecated build_event_stream.ActionExecuted.label is deprecated.
       *     See bazel/build_event_stream.proto;l=527
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder clearLabel() {
        label_ = getDefaultInstance().getLabel();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Deprecated. This field is now present on ActionCompletedId.
       * </pre>
       *
       * <code>string label = 5 [deprecated = true];</code>
       * @deprecated build_event_stream.ActionExecuted.label is deprecated.
       *     See bazel/build_event_stream.proto;l=527
       * @param value The bytes for label to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setLabelBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        label_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId configuration_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder> configurationBuilder_;
      /**
       * <pre>
       * Deprecated. This field is now present on ActionCompletedId.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 7 [deprecated = true];</code>
       * @deprecated build_event_stream.ActionExecuted.configuration is deprecated.
       *     See bazel/build_event_stream.proto;l=530
       * @return Whether the configuration field is set.
       */
      @java.lang.Deprecated public boolean hasConfiguration() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * Deprecated. This field is now present on ActionCompletedId.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 7 [deprecated = true];</code>
       * @deprecated build_event_stream.ActionExecuted.configuration is deprecated.
       *     See bazel/build_event_stream.proto;l=530
       * @return The configuration.
       */
      @java.lang.Deprecated public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId getConfiguration() {
        if (configurationBuilder_ == null) {
          return configuration_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
        } else {
          return configurationBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Deprecated. This field is now present on ActionCompletedId.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 7 [deprecated = true];</code>
       */
      @java.lang.Deprecated public Builder setConfiguration(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId value) {
        if (configurationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          configuration_ = value;
        } else {
          configurationBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Deprecated. This field is now present on ActionCompletedId.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 7 [deprecated = true];</code>
       */
      @java.lang.Deprecated public Builder setConfiguration(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder builderForValue) {
        if (configurationBuilder_ == null) {
          configuration_ = builderForValue.build();
        } else {
          configurationBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Deprecated. This field is now present on ActionCompletedId.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 7 [deprecated = true];</code>
       */
      @java.lang.Deprecated public Builder mergeConfiguration(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId value) {
        if (configurationBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
            configuration_ != null &&
            configuration_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance()) {
            getConfigurationBuilder().mergeFrom(value);
          } else {
            configuration_ = value;
          }
        } else {
          configurationBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Deprecated. This field is now present on ActionCompletedId.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 7 [deprecated = true];</code>
       */
      @java.lang.Deprecated public Builder clearConfiguration() {
        bitField0_ = (bitField0_ & ~0x00000040);
        configuration_ = null;
        if (configurationBuilder_ != null) {
          configurationBuilder_.dispose();
          configurationBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Deprecated. This field is now present on ActionCompletedId.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 7 [deprecated = true];</code>
       */
      @java.lang.Deprecated public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder getConfigurationBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getConfigurationFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Deprecated. This field is now present on ActionCompletedId.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 7 [deprecated = true];</code>
       */
      @java.lang.Deprecated public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder getConfigurationOrBuilder() {
        if (configurationBuilder_ != null) {
          return configurationBuilder_.getMessageOrBuilder();
        } else {
          return configuration_ == null ?
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.getDefaultInstance() : configuration_;
        }
      }
      /**
       * <pre>
       * Deprecated. This field is now present on ActionCompletedId.
       * </pre>
       *
       * <code>.build_event_stream.BuildEventId.ConfigurationId configuration = 7 [deprecated = true];</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder> 
          getConfigurationFieldBuilder() {
        if (configurationBuilder_ == null) {
          configurationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationIdOrBuilder>(
                  getConfiguration(),
                  getParentForChildren(),
                  isClean());
          configuration_ = null;
        }
        return configurationBuilder_;
      }

      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File primaryOutput_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> primaryOutputBuilder_;
      /**
       * <pre>
       * Primary output; only provided for successful actions.
       * </pre>
       *
       * <code>.build_event_stream.File primary_output = 6;</code>
       * @return Whether the primaryOutput field is set.
       */
      public boolean hasPrimaryOutput() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       * Primary output; only provided for successful actions.
       * </pre>
       *
       * <code>.build_event_stream.File primary_output = 6;</code>
       * @return The primaryOutput.
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getPrimaryOutput() {
        if (primaryOutputBuilder_ == null) {
          return primaryOutput_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance() : primaryOutput_;
        } else {
          return primaryOutputBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Primary output; only provided for successful actions.
       * </pre>
       *
       * <code>.build_event_stream.File primary_output = 6;</code>
       */
      public Builder setPrimaryOutput(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (primaryOutputBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          primaryOutput_ = value;
        } else {
          primaryOutputBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Primary output; only provided for successful actions.
       * </pre>
       *
       * <code>.build_event_stream.File primary_output = 6;</code>
       */
      public Builder setPrimaryOutput(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (primaryOutputBuilder_ == null) {
          primaryOutput_ = builderForValue.build();
        } else {
          primaryOutputBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Primary output; only provided for successful actions.
       * </pre>
       *
       * <code>.build_event_stream.File primary_output = 6;</code>
       */
      public Builder mergePrimaryOutput(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (primaryOutputBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0) &&
            primaryOutput_ != null &&
            primaryOutput_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance()) {
            getPrimaryOutputBuilder().mergeFrom(value);
          } else {
            primaryOutput_ = value;
          }
        } else {
          primaryOutputBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Primary output; only provided for successful actions.
       * </pre>
       *
       * <code>.build_event_stream.File primary_output = 6;</code>
       */
      public Builder clearPrimaryOutput() {
        bitField0_ = (bitField0_ & ~0x00000080);
        primaryOutput_ = null;
        if (primaryOutputBuilder_ != null) {
          primaryOutputBuilder_.dispose();
          primaryOutputBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Primary output; only provided for successful actions.
       * </pre>
       *
       * <code>.build_event_stream.File primary_output = 6;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder getPrimaryOutputBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getPrimaryOutputFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Primary output; only provided for successful actions.
       * </pre>
       *
       * <code>.build_event_stream.File primary_output = 6;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getPrimaryOutputOrBuilder() {
        if (primaryOutputBuilder_ != null) {
          return primaryOutputBuilder_.getMessageOrBuilder();
        } else {
          return primaryOutput_ == null ?
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance() : primaryOutput_;
        }
      }
      /**
       * <pre>
       * Primary output; only provided for successful actions.
       * </pre>
       *
       * <code>.build_event_stream.File primary_output = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
          getPrimaryOutputFieldBuilder() {
        if (primaryOutputBuilder_ == null) {
          primaryOutputBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder>(
                  getPrimaryOutput(),
                  getParentForChildren(),
                  isClean());
          primaryOutput_ = null;
        }
        return primaryOutputBuilder_;
      }

      private com.google.protobuf.LazyStringList commandLine_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureCommandLineIsMutable() {
        if (!((bitField0_ & 0x00000100) != 0)) {
          commandLine_ = new com.google.protobuf.LazyStringArrayList(commandLine_);
          bitField0_ |= 0x00000100;
         }
      }
      /**
       * <pre>
       * The command-line of the action, if the action is a command.
       * </pre>
       *
       * <code>repeated string command_line = 9;</code>
       * @return A list containing the commandLine.
       */
      public com.google.protobuf.ProtocolStringList
          getCommandLineList() {
        return commandLine_.getUnmodifiableView();
      }
      /**
       * <pre>
       * The command-line of the action, if the action is a command.
       * </pre>
       *
       * <code>repeated string command_line = 9;</code>
       * @return The count of commandLine.
       */
      public int getCommandLineCount() {
        return commandLine_.size();
      }
      /**
       * <pre>
       * The command-line of the action, if the action is a command.
       * </pre>
       *
       * <code>repeated string command_line = 9;</code>
       * @param index The index of the element to return.
       * @return The commandLine at the given index.
       */
      public java.lang.String getCommandLine(int index) {
        return commandLine_.get(index);
      }
      /**
       * <pre>
       * The command-line of the action, if the action is a command.
       * </pre>
       *
       * <code>repeated string command_line = 9;</code>
       * @param index The index of the value to return.
       * @return The bytes of the commandLine at the given index.
       */
      public com.google.protobuf.ByteString
          getCommandLineBytes(int index) {
        return commandLine_.getByteString(index);
      }
      /**
       * <pre>
       * The command-line of the action, if the action is a command.
       * </pre>
       *
       * <code>repeated string command_line = 9;</code>
       * @param index The index to set the value at.
       * @param value The commandLine to set.
       * @return This builder for chaining.
       */
      public Builder setCommandLine(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCommandLineIsMutable();
        commandLine_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The command-line of the action, if the action is a command.
       * </pre>
       *
       * <code>repeated string command_line = 9;</code>
       * @param value The commandLine to add.
       * @return This builder for chaining.
       */
      public Builder addCommandLine(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureCommandLineIsMutable();
        commandLine_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The command-line of the action, if the action is a command.
       * </pre>
       *
       * <code>repeated string command_line = 9;</code>
       * @param values The commandLine to add.
       * @return This builder for chaining.
       */
      public Builder addAllCommandLine(
          java.lang.Iterable<java.lang.String> values) {
        ensureCommandLineIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, commandLine_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The command-line of the action, if the action is a command.
       * </pre>
       *
       * <code>repeated string command_line = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearCommandLine() {
        commandLine_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The command-line of the action, if the action is a command.
       * </pre>
       *
       * <code>repeated string command_line = 9;</code>
       * @param value The bytes of the commandLine to add.
       * @return This builder for chaining.
       */
      public Builder addCommandLineBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureCommandLineIsMutable();
        commandLine_.add(value);
        onChanged();
        return this;
      }

      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> actionMetadataLogs_ =
        java.util.Collections.emptyList();
      private void ensureActionMetadataLogsIsMutable() {
        if (!((bitField0_ & 0x00000200) != 0)) {
          actionMetadataLogs_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File>(actionMetadataLogs_);
          bitField0_ |= 0x00000200;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> actionMetadataLogsBuilder_;

      /**
       * <pre>
       * List of paths to log files
       * </pre>
       *
       * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> getActionMetadataLogsList() {
        if (actionMetadataLogsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(actionMetadataLogs_);
        } else {
          return actionMetadataLogsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of paths to log files
       * </pre>
       *
       * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
       */
      public int getActionMetadataLogsCount() {
        if (actionMetadataLogsBuilder_ == null) {
          return actionMetadataLogs_.size();
        } else {
          return actionMetadataLogsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of paths to log files
       * </pre>
       *
       * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getActionMetadataLogs(int index) {
        if (actionMetadataLogsBuilder_ == null) {
          return actionMetadataLogs_.get(index);
        } else {
          return actionMetadataLogsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of paths to log files
       * </pre>
       *
       * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
       */
      public Builder setActionMetadataLogs(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (actionMetadataLogsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureActionMetadataLogsIsMutable();
          actionMetadataLogs_.set(index, value);
          onChanged();
        } else {
          actionMetadataLogsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of paths to log files
       * </pre>
       *
       * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
       */
      public Builder setActionMetadataLogs(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (actionMetadataLogsBuilder_ == null) {
          ensureActionMetadataLogsIsMutable();
          actionMetadataLogs_.set(index, builderForValue.build());
          onChanged();
        } else {
          actionMetadataLogsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of paths to log files
       * </pre>
       *
       * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
       */
      public Builder addActionMetadataLogs(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (actionMetadataLogsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureActionMetadataLogsIsMutable();
          actionMetadataLogs_.add(value);
          onChanged();
        } else {
          actionMetadataLogsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of paths to log files
       * </pre>
       *
       * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
       */
      public Builder addActionMetadataLogs(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (actionMetadataLogsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureActionMetadataLogsIsMutable();
          actionMetadataLogs_.add(index, value);
          onChanged();
        } else {
          actionMetadataLogsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of paths to log files
       * </pre>
       *
       * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
       */
      public Builder addActionMetadataLogs(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (actionMetadataLogsBuilder_ == null) {
          ensureActionMetadataLogsIsMutable();
          actionMetadataLogs_.add(builderForValue.build());
          onChanged();
        } else {
          actionMetadataLogsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of paths to log files
       * </pre>
       *
       * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
       */
      public Builder addActionMetadataLogs(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (actionMetadataLogsBuilder_ == null) {
          ensureActionMetadataLogsIsMutable();
          actionMetadataLogs_.add(index, builderForValue.build());
          onChanged();
        } else {
          actionMetadataLogsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of paths to log files
       * </pre>
       *
       * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
       */
      public Builder addAllActionMetadataLogs(
          java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> values) {
        if (actionMetadataLogsBuilder_ == null) {
          ensureActionMetadataLogsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, actionMetadataLogs_);
          onChanged();
        } else {
          actionMetadataLogsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of paths to log files
       * </pre>
       *
       * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
       */
      public Builder clearActionMetadataLogs() {
        if (actionMetadataLogsBuilder_ == null) {
          actionMetadataLogs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
          onChanged();
        } else {
          actionMetadataLogsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of paths to log files
       * </pre>
       *
       * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
       */
      public Builder removeActionMetadataLogs(int index) {
        if (actionMetadataLogsBuilder_ == null) {
          ensureActionMetadataLogsIsMutable();
          actionMetadataLogs_.remove(index);
          onChanged();
        } else {
          actionMetadataLogsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of paths to log files
       * </pre>
       *
       * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder getActionMetadataLogsBuilder(
          int index) {
        return getActionMetadataLogsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of paths to log files
       * </pre>
       *
       * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getActionMetadataLogsOrBuilder(
          int index) {
        if (actionMetadataLogsBuilder_ == null) {
          return actionMetadataLogs_.get(index);  } else {
          return actionMetadataLogsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of paths to log files
       * </pre>
       *
       * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
           getActionMetadataLogsOrBuilderList() {
        if (actionMetadataLogsBuilder_ != null) {
          return actionMetadataLogsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(actionMetadataLogs_);
        }
      }
      /**
       * <pre>
       * List of paths to log files
       * </pre>
       *
       * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder addActionMetadataLogsBuilder() {
        return getActionMetadataLogsFieldBuilder().addBuilder(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance());
      }
      /**
       * <pre>
       * List of paths to log files
       * </pre>
       *
       * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder addActionMetadataLogsBuilder(
          int index) {
        return getActionMetadataLogsFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance());
      }
      /**
       * <pre>
       * List of paths to log files
       * </pre>
       *
       * <code>repeated .build_event_stream.File action_metadata_logs = 10;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder> 
           getActionMetadataLogsBuilderList() {
        return getActionMetadataLogsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
          getActionMetadataLogsFieldBuilder() {
        if (actionMetadataLogsBuilder_ == null) {
          actionMetadataLogsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder>(
                  actionMetadataLogs_,
                  ((bitField0_ & 0x00000200) != 0),
                  getParentForChildren(),
                  isClean());
          actionMetadataLogs_ = null;
        }
        return actionMetadataLogsBuilder_;
      }

      private com.google.devtools.build.lib.server.FailureDetails.FailureDetail failureDetail_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.server.FailureDetails.FailureDetail, com.google.devtools.build.lib.server.FailureDetails.FailureDetail.Builder, com.google.devtools.build.lib.server.FailureDetails.FailureDetailOrBuilder> failureDetailBuilder_;
      /**
       * <pre>
       * Only populated if success = false, and sometimes not even then.
       * </pre>
       *
       * <code>.failure_details.FailureDetail failure_detail = 11;</code>
       * @return Whether the failureDetail field is set.
       */
      public boolean hasFailureDetail() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * Only populated if success = false, and sometimes not even then.
       * </pre>
       *
       * <code>.failure_details.FailureDetail failure_detail = 11;</code>
       * @return The failureDetail.
       */
      public com.google.devtools.build.lib.server.FailureDetails.FailureDetail getFailureDetail() {
        if (failureDetailBuilder_ == null) {
          return failureDetail_ == null ? com.google.devtools.build.lib.server.FailureDetails.FailureDetail.getDefaultInstance() : failureDetail_;
        } else {
          return failureDetailBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Only populated if success = false, and sometimes not even then.
       * </pre>
       *
       * <code>.failure_details.FailureDetail failure_detail = 11;</code>
       */
      public Builder setFailureDetail(com.google.devtools.build.lib.server.FailureDetails.FailureDetail value) {
        if (failureDetailBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          failureDetail_ = value;
        } else {
          failureDetailBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Only populated if success = false, and sometimes not even then.
       * </pre>
       *
       * <code>.failure_details.FailureDetail failure_detail = 11;</code>
       */
      public Builder setFailureDetail(
          com.google.devtools.build.lib.server.FailureDetails.FailureDetail.Builder builderForValue) {
        if (failureDetailBuilder_ == null) {
          failureDetail_ = builderForValue.build();
        } else {
          failureDetailBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Only populated if success = false, and sometimes not even then.
       * </pre>
       *
       * <code>.failure_details.FailureDetail failure_detail = 11;</code>
       */
      public Builder mergeFailureDetail(com.google.devtools.build.lib.server.FailureDetails.FailureDetail value) {
        if (failureDetailBuilder_ == null) {
          if (((bitField0_ & 0x00000400) != 0) &&
            failureDetail_ != null &&
            failureDetail_ != com.google.devtools.build.lib.server.FailureDetails.FailureDetail.getDefaultInstance()) {
            getFailureDetailBuilder().mergeFrom(value);
          } else {
            failureDetail_ = value;
          }
        } else {
          failureDetailBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Only populated if success = false, and sometimes not even then.
       * </pre>
       *
       * <code>.failure_details.FailureDetail failure_detail = 11;</code>
       */
      public Builder clearFailureDetail() {
        bitField0_ = (bitField0_ & ~0x00000400);
        failureDetail_ = null;
        if (failureDetailBuilder_ != null) {
          failureDetailBuilder_.dispose();
          failureDetailBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Only populated if success = false, and sometimes not even then.
       * </pre>
       *
       * <code>.failure_details.FailureDetail failure_detail = 11;</code>
       */
      public com.google.devtools.build.lib.server.FailureDetails.FailureDetail.Builder getFailureDetailBuilder() {
        bitField0_ |= 0x00000400;
        onChanged();
        return getFailureDetailFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Only populated if success = false, and sometimes not even then.
       * </pre>
       *
       * <code>.failure_details.FailureDetail failure_detail = 11;</code>
       */
      public com.google.devtools.build.lib.server.FailureDetails.FailureDetailOrBuilder getFailureDetailOrBuilder() {
        if (failureDetailBuilder_ != null) {
          return failureDetailBuilder_.getMessageOrBuilder();
        } else {
          return failureDetail_ == null ?
              com.google.devtools.build.lib.server.FailureDetails.FailureDetail.getDefaultInstance() : failureDetail_;
        }
      }
      /**
       * <pre>
       * Only populated if success = false, and sometimes not even then.
       * </pre>
       *
       * <code>.failure_details.FailureDetail failure_detail = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.server.FailureDetails.FailureDetail, com.google.devtools.build.lib.server.FailureDetails.FailureDetail.Builder, com.google.devtools.build.lib.server.FailureDetails.FailureDetailOrBuilder> 
          getFailureDetailFieldBuilder() {
        if (failureDetailBuilder_ == null) {
          failureDetailBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.server.FailureDetails.FailureDetail, com.google.devtools.build.lib.server.FailureDetails.FailureDetail.Builder, com.google.devtools.build.lib.server.FailureDetails.FailureDetailOrBuilder>(
                  getFailureDetail(),
                  getParentForChildren(),
                  isClean());
          failureDetail_ = null;
        }
        return failureDetailBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:build_event_stream.ActionExecuted)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.ActionExecuted)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface OutputGroupOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.OutputGroup)
      com.google.protobuf.MessageOrBuilder {

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

    /**
     * <pre>
     * List of file sets that belong to this output group as well.
     * </pre>
     *
     * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
     */
    java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId> 
        getFileSetsList();
    /**
     * <pre>
     * List of file sets that belong to this output group as well.
     * </pre>
     *
     * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId getFileSets(int index);
    /**
     * <pre>
     * List of file sets that belong to this output group as well.
     * </pre>
     *
     * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
     */
    int getFileSetsCount();
    /**
     * <pre>
     * List of file sets that belong to this output group as well.
     * </pre>
     *
     * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder> 
        getFileSetsOrBuilderList();
    /**
     * <pre>
     * List of file sets that belong to this output group as well.
     * </pre>
     *
     * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder getFileSetsOrBuilder(
        int index);

    /**
     * <pre>
     * Indicates that one or more of the output group's files were not built
     * successfully (the generating action failed).
     * </pre>
     *
     * <code>bool incomplete = 4;</code>
     * @return The incomplete.
     */
    boolean getIncomplete();
  }
  /**
   * <pre>
   * Collection of all output files belonging to that output group.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.OutputGroup}
   */
  public static final class OutputGroup extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.OutputGroup)
      OutputGroupOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use OutputGroup.newBuilder() to construct.
    private OutputGroup(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private OutputGroup() {
      name_ = "";
      fileSets_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_OutputGroup_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_OutputGroup_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup.Builder.class);
    }

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

    public static final int FILE_SETS_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId> fileSets_;
    /**
     * <pre>
     * List of file sets that belong to this output group as well.
     * </pre>
     *
     * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId> getFileSetsList() {
      return fileSets_;
    }
    /**
     * <pre>
     * List of file sets that belong to this output group as well.
     * </pre>
     *
     * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder> 
        getFileSetsOrBuilderList() {
      return fileSets_;
    }
    /**
     * <pre>
     * List of file sets that belong to this output group as well.
     * </pre>
     *
     * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
     */
    @java.lang.Override
    public int getFileSetsCount() {
      return fileSets_.size();
    }
    /**
     * <pre>
     * List of file sets that belong to this output group as well.
     * </pre>
     *
     * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId getFileSets(int index) {
      return fileSets_.get(index);
    }
    /**
     * <pre>
     * List of file sets that belong to this output group as well.
     * </pre>
     *
     * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder getFileSetsOrBuilder(
        int index) {
      return fileSets_.get(index);
    }

    public static final int INCOMPLETE_FIELD_NUMBER = 4;
    private boolean incomplete_ = false;
    /**
     * <pre>
     * Indicates that one or more of the output group's files were not built
     * successfully (the generating action failed).
     * </pre>
     *
     * <code>bool incomplete = 4;</code>
     * @return The incomplete.
     */
    @java.lang.Override
    public boolean getIncomplete() {
      return incomplete_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      for (int i = 0; i < fileSets_.size(); i++) {
        output.writeMessage(3, fileSets_.get(i));
      }
      if (incomplete_ != false) {
        output.writeBool(4, incomplete_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      for (int i = 0; i < fileSets_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, fileSets_.get(i));
      }
      if (incomplete_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, incomplete_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (!getName()
          .equals(other.getName())) return false;
      if (!getFileSetsList()
          .equals(other.getFileSetsList())) return false;
      if (getIncomplete()
          != other.getIncomplete()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (getFileSetsCount() > 0) {
        hash = (37 * hash) + FILE_SETS_FIELD_NUMBER;
        hash = (53 * hash) + getFileSetsList().hashCode();
      }
      hash = (37 * hash) + INCOMPLETE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIncomplete());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup 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.buildeventstream.BuildEventStreamProtos.OutputGroup parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup 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.buildeventstream.BuildEventStreamProtos.OutputGroup parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup 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.buildeventstream.BuildEventStreamProtos.OutputGroup parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup 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.buildeventstream.BuildEventStreamProtos.OutputGroup parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup 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.buildeventstream.BuildEventStreamProtos.OutputGroup 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.buildeventstream.BuildEventStreamProtos.OutputGroup 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.buildeventstream.BuildEventStreamProtos.OutputGroup 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>
     * Collection of all output files belonging to that output group.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.OutputGroup}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.OutputGroup)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroupOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_OutputGroup_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_OutputGroup_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        if (fileSetsBuilder_ == null) {
          fileSets_ = java.util.Collections.emptyList();
        } else {
          fileSets_ = null;
          fileSetsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        incomplete_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_OutputGroup_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup result) {
        if (fileSetsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            fileSets_ = java.util.Collections.unmodifiableList(fileSets_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.fileSets_ = fileSets_;
        } else {
          result.fileSets_ = fileSetsBuilder_.build();
        }
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.incomplete_ = incomplete_;
        }
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (fileSetsBuilder_ == null) {
          if (!other.fileSets_.isEmpty()) {
            if (fileSets_.isEmpty()) {
              fileSets_ = other.fileSets_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureFileSetsIsMutable();
              fileSets_.addAll(other.fileSets_);
            }
            onChanged();
          }
        } else {
          if (!other.fileSets_.isEmpty()) {
            if (fileSetsBuilder_.isEmpty()) {
              fileSetsBuilder_.dispose();
              fileSetsBuilder_ = null;
              fileSets_ = other.fileSets_;
              bitField0_ = (bitField0_ & ~0x00000002);
              fileSetsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getFileSetsFieldBuilder() : null;
            } else {
              fileSetsBuilder_.addAllMessages(other.fileSets_);
            }
          }
        }
        if (other.getIncomplete() != false) {
          setIncomplete(other.getIncomplete());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 26: {
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId m =
                    input.readMessage(
                        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.parser(),
                        extensionRegistry);
                if (fileSetsBuilder_ == null) {
                  ensureFileSetsIsMutable();
                  fileSets_.add(m);
                } else {
                  fileSetsBuilder_.addMessage(m);
                }
                break;
              } // case 26
              case 32: {
                incomplete_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 32
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

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

      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId> fileSets_ =
        java.util.Collections.emptyList();
      private void ensureFileSetsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          fileSets_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId>(fileSets_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder> fileSetsBuilder_;

      /**
       * <pre>
       * List of file sets that belong to this output group as well.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId> getFileSetsList() {
        if (fileSetsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(fileSets_);
        } else {
          return fileSetsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * List of file sets that belong to this output group as well.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
       */
      public int getFileSetsCount() {
        if (fileSetsBuilder_ == null) {
          return fileSets_.size();
        } else {
          return fileSetsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * List of file sets that belong to this output group as well.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId getFileSets(int index) {
        if (fileSetsBuilder_ == null) {
          return fileSets_.get(index);
        } else {
          return fileSetsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * List of file sets that belong to this output group as well.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
       */
      public Builder setFileSets(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId value) {
        if (fileSetsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFileSetsIsMutable();
          fileSets_.set(index, value);
          onChanged();
        } else {
          fileSetsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of file sets that belong to this output group as well.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
       */
      public Builder setFileSets(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder builderForValue) {
        if (fileSetsBuilder_ == null) {
          ensureFileSetsIsMutable();
          fileSets_.set(index, builderForValue.build());
          onChanged();
        } else {
          fileSetsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of file sets that belong to this output group as well.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
       */
      public Builder addFileSets(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId value) {
        if (fileSetsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFileSetsIsMutable();
          fileSets_.add(value);
          onChanged();
        } else {
          fileSetsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * List of file sets that belong to this output group as well.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
       */
      public Builder addFileSets(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId value) {
        if (fileSetsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFileSetsIsMutable();
          fileSets_.add(index, value);
          onChanged();
        } else {
          fileSetsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * List of file sets that belong to this output group as well.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
       */
      public Builder addFileSets(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder builderForValue) {
        if (fileSetsBuilder_ == null) {
          ensureFileSetsIsMutable();
          fileSets_.add(builderForValue.build());
          onChanged();
        } else {
          fileSetsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of file sets that belong to this output group as well.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
       */
      public Builder addFileSets(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder builderForValue) {
        if (fileSetsBuilder_ == null) {
          ensureFileSetsIsMutable();
          fileSets_.add(index, builderForValue.build());
          onChanged();
        } else {
          fileSetsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * List of file sets that belong to this output group as well.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
       */
      public Builder addAllFileSets(
          java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId> values) {
        if (fileSetsBuilder_ == null) {
          ensureFileSetsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, fileSets_);
          onChanged();
        } else {
          fileSetsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * List of file sets that belong to this output group as well.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
       */
      public Builder clearFileSets() {
        if (fileSetsBuilder_ == null) {
          fileSets_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          fileSetsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * List of file sets that belong to this output group as well.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
       */
      public Builder removeFileSets(int index) {
        if (fileSetsBuilder_ == null) {
          ensureFileSetsIsMutable();
          fileSets_.remove(index);
          onChanged();
        } else {
          fileSetsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * List of file sets that belong to this output group as well.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder getFileSetsBuilder(
          int index) {
        return getFileSetsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * List of file sets that belong to this output group as well.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder getFileSetsOrBuilder(
          int index) {
        if (fileSetsBuilder_ == null) {
          return fileSets_.get(index);  } else {
          return fileSetsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * List of file sets that belong to this output group as well.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder> 
           getFileSetsOrBuilderList() {
        if (fileSetsBuilder_ != null) {
          return fileSetsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(fileSets_);
        }
      }
      /**
       * <pre>
       * List of file sets that belong to this output group as well.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder addFileSetsBuilder() {
        return getFileSetsFieldBuilder().addBuilder(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.getDefaultInstance());
      }
      /**
       * <pre>
       * List of file sets that belong to this output group as well.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder addFileSetsBuilder(
          int index) {
        return getFileSetsFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.getDefaultInstance());
      }
      /**
       * <pre>
       * List of file sets that belong to this output group as well.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildEventId.NamedSetOfFilesId file_sets = 3;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder> 
           getFileSetsBuilderList() {
        return getFileSetsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder> 
          getFileSetsFieldBuilder() {
        if (fileSetsBuilder_ == null) {
          fileSetsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesIdOrBuilder>(
                  fileSets_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          fileSets_ = null;
        }
        return fileSetsBuilder_;
      }

      private boolean incomplete_ ;
      /**
       * <pre>
       * Indicates that one or more of the output group's files were not built
       * successfully (the generating action failed).
       * </pre>
       *
       * <code>bool incomplete = 4;</code>
       * @return The incomplete.
       */
      @java.lang.Override
      public boolean getIncomplete() {
        return incomplete_;
      }
      /**
       * <pre>
       * Indicates that one or more of the output group's files were not built
       * successfully (the generating action failed).
       * </pre>
       *
       * <code>bool incomplete = 4;</code>
       * @param value The incomplete to set.
       * @return This builder for chaining.
       */
      public Builder setIncomplete(boolean value) {
        
        incomplete_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Indicates that one or more of the output group's files were not built
       * successfully (the generating action failed).
       * </pre>
       *
       * <code>bool incomplete = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearIncomplete() {
        bitField0_ = (bitField0_ & ~0x00000004);
        incomplete_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:build_event_stream.OutputGroup)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.OutputGroup)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TargetCompleteOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.TargetComplete)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>bool success = 1;</code>
     * @return The success.
     */
    boolean getSuccess();

    /**
     * <pre>
     * The kind of target (e.g.,  e.g. "cc_library rule", "source file",
     * "generated file") where the completion is reported.
     * Deprecated: use the target_kind field in TargetConfigured instead.
     * </pre>
     *
     * <code>string target_kind = 5 [deprecated = true];</code>
     * @deprecated build_event_stream.TargetComplete.target_kind is deprecated.
     *     See bazel/build_event_stream.proto;l=570
     * @return The targetKind.
     */
    @java.lang.Deprecated java.lang.String getTargetKind();
    /**
     * <pre>
     * The kind of target (e.g.,  e.g. "cc_library rule", "source file",
     * "generated file") where the completion is reported.
     * Deprecated: use the target_kind field in TargetConfigured instead.
     * </pre>
     *
     * <code>string target_kind = 5 [deprecated = true];</code>
     * @deprecated build_event_stream.TargetComplete.target_kind is deprecated.
     *     See bazel/build_event_stream.proto;l=570
     * @return The bytes for targetKind.
     */
    @java.lang.Deprecated com.google.protobuf.ByteString
        getTargetKindBytes();

    /**
     * <pre>
     * The size of the test, if the target is a test target. Unset otherwise.
     * Deprecated: use the test_size field in TargetConfigured instead.
     * </pre>
     *
     * <code>.build_event_stream.TestSize test_size = 6 [deprecated = true];</code>
     * @deprecated build_event_stream.TargetComplete.test_size is deprecated.
     *     See bazel/build_event_stream.proto;l=574
     * @return The enum numeric value on the wire for testSize.
     */
    @java.lang.Deprecated int getTestSizeValue();
    /**
     * <pre>
     * The size of the test, if the target is a test target. Unset otherwise.
     * Deprecated: use the test_size field in TargetConfigured instead.
     * </pre>
     *
     * <code>.build_event_stream.TestSize test_size = 6 [deprecated = true];</code>
     * @deprecated build_event_stream.TargetComplete.test_size is deprecated.
     *     See bazel/build_event_stream.proto;l=574
     * @return The testSize.
     */
    @java.lang.Deprecated com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize getTestSize();

    /**
     * <pre>
     * The output files are arranged by their output group. If an output file
     * is part of multiple output groups, it appears once in each output
     * group.
     * </pre>
     *
     * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
     */
    java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup> 
        getOutputGroupList();
    /**
     * <pre>
     * The output files are arranged by their output group. If an output file
     * is part of multiple output groups, it appears once in each output
     * group.
     * </pre>
     *
     * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup getOutputGroup(int index);
    /**
     * <pre>
     * The output files are arranged by their output group. If an output file
     * is part of multiple output groups, it appears once in each output
     * group.
     * </pre>
     *
     * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
     */
    int getOutputGroupCount();
    /**
     * <pre>
     * The output files are arranged by their output group. If an output file
     * is part of multiple output groups, it appears once in each output
     * group.
     * </pre>
     *
     * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroupOrBuilder> 
        getOutputGroupOrBuilderList();
    /**
     * <pre>
     * The output files are arranged by their output group. If an output file
     * is part of multiple output groups, it appears once in each output
     * group.
     * </pre>
     *
     * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroupOrBuilder getOutputGroupOrBuilder(
        int index);

    /**
     * <pre>
     * Temporarily, also report the important outputs directly. This is only to
     * allow existing clients help transition to the deduplicated representation;
     * new clients should not use it.
     * </pre>
     *
     * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
     */
    @java.lang.Deprecated java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> 
        getImportantOutputList();
    /**
     * <pre>
     * Temporarily, also report the important outputs directly. This is only to
     * allow existing clients help transition to the deduplicated representation;
     * new clients should not use it.
     * </pre>
     *
     * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
     */
    @java.lang.Deprecated com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getImportantOutput(int index);
    /**
     * <pre>
     * Temporarily, also report the important outputs directly. This is only to
     * allow existing clients help transition to the deduplicated representation;
     * new clients should not use it.
     * </pre>
     *
     * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
     */
    @java.lang.Deprecated int getImportantOutputCount();
    /**
     * <pre>
     * Temporarily, also report the important outputs directly. This is only to
     * allow existing clients help transition to the deduplicated representation;
     * new clients should not use it.
     * </pre>
     *
     * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
     */
    @java.lang.Deprecated java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
        getImportantOutputOrBuilderList();
    /**
     * <pre>
     * Temporarily, also report the important outputs directly. This is only to
     * allow existing clients help transition to the deduplicated representation;
     * new clients should not use it.
     * </pre>
     *
     * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
     */
    @java.lang.Deprecated com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getImportantOutputOrBuilder(
        int index);

    /**
     * <pre>
     * Report output artifacts (referenced transitively via output_group) which
     * emit directories instead of singleton files. These directory_output entries
     * will never include a uri.
     * </pre>
     *
     * <code>repeated .build_event_stream.File directory_output = 8;</code>
     */
    java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> 
        getDirectoryOutputList();
    /**
     * <pre>
     * Report output artifacts (referenced transitively via output_group) which
     * emit directories instead of singleton files. These directory_output entries
     * will never include a uri.
     * </pre>
     *
     * <code>repeated .build_event_stream.File directory_output = 8;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getDirectoryOutput(int index);
    /**
     * <pre>
     * Report output artifacts (referenced transitively via output_group) which
     * emit directories instead of singleton files. These directory_output entries
     * will never include a uri.
     * </pre>
     *
     * <code>repeated .build_event_stream.File directory_output = 8;</code>
     */
    int getDirectoryOutputCount();
    /**
     * <pre>
     * Report output artifacts (referenced transitively via output_group) which
     * emit directories instead of singleton files. These directory_output entries
     * will never include a uri.
     * </pre>
     *
     * <code>repeated .build_event_stream.File directory_output = 8;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
        getDirectoryOutputOrBuilderList();
    /**
     * <pre>
     * Report output artifacts (referenced transitively via output_group) which
     * emit directories instead of singleton files. These directory_output entries
     * will never include a uri.
     * </pre>
     *
     * <code>repeated .build_event_stream.File directory_output = 8;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getDirectoryOutputOrBuilder(
        int index);

    /**
     * <pre>
     * List of tags associated with this configured target.
     * </pre>
     *
     * <code>repeated string tag = 3;</code>
     * @return A list containing the tag.
     */
    java.util.List<java.lang.String>
        getTagList();
    /**
     * <pre>
     * List of tags associated with this configured target.
     * </pre>
     *
     * <code>repeated string tag = 3;</code>
     * @return The count of tag.
     */
    int getTagCount();
    /**
     * <pre>
     * List of tags associated with this configured target.
     * </pre>
     *
     * <code>repeated string tag = 3;</code>
     * @param index The index of the element to return.
     * @return The tag at the given index.
     */
    java.lang.String getTag(int index);
    /**
     * <pre>
     * List of tags associated with this configured target.
     * </pre>
     *
     * <code>repeated string tag = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the tag at the given index.
     */
    com.google.protobuf.ByteString
        getTagBytes(int index);

    /**
     * <pre>
     * The timeout specified for test actions under this configured target.
     * Deprecated, use `test_timeout` instead.
     * TODO(yannic): Remove.
     * </pre>
     *
     * <code>int64 test_timeout_seconds = 7 [deprecated = true];</code>
     * @deprecated build_event_stream.TargetComplete.test_timeout_seconds is deprecated.
     *     See bazel/build_event_stream.proto;l=599
     * @return The testTimeoutSeconds.
     */
    @java.lang.Deprecated long getTestTimeoutSeconds();

    /**
     * <pre>
     * The timeout specified for test actions under this configured target.
     * </pre>
     *
     * <code>.google.protobuf.Duration test_timeout = 10;</code>
     * @return Whether the testTimeout field is set.
     */
    boolean hasTestTimeout();
    /**
     * <pre>
     * The timeout specified for test actions under this configured target.
     * </pre>
     *
     * <code>.google.protobuf.Duration test_timeout = 10;</code>
     * @return The testTimeout.
     */
    com.google.protobuf.Duration getTestTimeout();
    /**
     * <pre>
     * The timeout specified for test actions under this configured target.
     * </pre>
     *
     * <code>.google.protobuf.Duration test_timeout = 10;</code>
     */
    com.google.protobuf.DurationOrBuilder getTestTimeoutOrBuilder();

    /**
     * <pre>
     * Failure information about the target, only populated if success is false,
     * and sometimes not even then. Equal to one of the ActionExecuted
     * failure_detail fields for one of the root cause ActionExecuted events.
     * </pre>
     *
     * <code>.failure_details.FailureDetail failure_detail = 9;</code>
     * @return Whether the failureDetail field is set.
     */
    boolean hasFailureDetail();
    /**
     * <pre>
     * Failure information about the target, only populated if success is false,
     * and sometimes not even then. Equal to one of the ActionExecuted
     * failure_detail fields for one of the root cause ActionExecuted events.
     * </pre>
     *
     * <code>.failure_details.FailureDetail failure_detail = 9;</code>
     * @return The failureDetail.
     */
    com.google.devtools.build.lib.server.FailureDetails.FailureDetail getFailureDetail();
    /**
     * <pre>
     * Failure information about the target, only populated if success is false,
     * and sometimes not even then. Equal to one of the ActionExecuted
     * failure_detail fields for one of the root cause ActionExecuted events.
     * </pre>
     *
     * <code>.failure_details.FailureDetail failure_detail = 9;</code>
     */
    com.google.devtools.build.lib.server.FailureDetails.FailureDetailOrBuilder getFailureDetailOrBuilder();
  }
  /**
   * <pre>
   * Payload of the event indicating the completion of a target. The target is
   * specified in the id. If the target failed the root causes are provided as
   * children events.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.TargetComplete}
   */
  public static final class TargetComplete extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.TargetComplete)
      TargetCompleteOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TargetComplete.newBuilder() to construct.
    private TargetComplete(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TargetComplete() {
      targetKind_ = "";
      testSize_ = 0;
      outputGroup_ = java.util.Collections.emptyList();
      importantOutput_ = java.util.Collections.emptyList();
      directoryOutput_ = java.util.Collections.emptyList();
      tag_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TargetComplete_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TargetComplete_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete.Builder.class);
    }

    public static final int SUCCESS_FIELD_NUMBER = 1;
    private boolean success_ = false;
    /**
     * <code>bool success = 1;</code>
     * @return The success.
     */
    @java.lang.Override
    public boolean getSuccess() {
      return success_;
    }

    public static final int TARGET_KIND_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object targetKind_ = "";
    /**
     * <pre>
     * The kind of target (e.g.,  e.g. "cc_library rule", "source file",
     * "generated file") where the completion is reported.
     * Deprecated: use the target_kind field in TargetConfigured instead.
     * </pre>
     *
     * <code>string target_kind = 5 [deprecated = true];</code>
     * @deprecated build_event_stream.TargetComplete.target_kind is deprecated.
     *     See bazel/build_event_stream.proto;l=570
     * @return The targetKind.
     */
    @java.lang.Override
    @java.lang.Deprecated public java.lang.String getTargetKind() {
      java.lang.Object ref = targetKind_;
      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();
        targetKind_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The kind of target (e.g.,  e.g. "cc_library rule", "source file",
     * "generated file") where the completion is reported.
     * Deprecated: use the target_kind field in TargetConfigured instead.
     * </pre>
     *
     * <code>string target_kind = 5 [deprecated = true];</code>
     * @deprecated build_event_stream.TargetComplete.target_kind is deprecated.
     *     See bazel/build_event_stream.proto;l=570
     * @return The bytes for targetKind.
     */
    @java.lang.Override
    @java.lang.Deprecated public com.google.protobuf.ByteString
        getTargetKindBytes() {
      java.lang.Object ref = targetKind_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        targetKind_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TEST_SIZE_FIELD_NUMBER = 6;
    private int testSize_ = 0;
    /**
     * <pre>
     * The size of the test, if the target is a test target. Unset otherwise.
     * Deprecated: use the test_size field in TargetConfigured instead.
     * </pre>
     *
     * <code>.build_event_stream.TestSize test_size = 6 [deprecated = true];</code>
     * @deprecated build_event_stream.TargetComplete.test_size is deprecated.
     *     See bazel/build_event_stream.proto;l=574
     * @return The enum numeric value on the wire for testSize.
     */
    @java.lang.Override @java.lang.Deprecated public int getTestSizeValue() {
      return testSize_;
    }
    /**
     * <pre>
     * The size of the test, if the target is a test target. Unset otherwise.
     * Deprecated: use the test_size field in TargetConfigured instead.
     * </pre>
     *
     * <code>.build_event_stream.TestSize test_size = 6 [deprecated = true];</code>
     * @deprecated build_event_stream.TargetComplete.test_size is deprecated.
     *     See bazel/build_event_stream.proto;l=574
     * @return The testSize.
     */
    @java.lang.Override @java.lang.Deprecated public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize getTestSize() {
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize result = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize.forNumber(testSize_);
      return result == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize.UNRECOGNIZED : result;
    }

    public static final int OUTPUT_GROUP_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup> outputGroup_;
    /**
     * <pre>
     * The output files are arranged by their output group. If an output file
     * is part of multiple output groups, it appears once in each output
     * group.
     * </pre>
     *
     * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup> getOutputGroupList() {
      return outputGroup_;
    }
    /**
     * <pre>
     * The output files are arranged by their output group. If an output file
     * is part of multiple output groups, it appears once in each output
     * group.
     * </pre>
     *
     * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroupOrBuilder> 
        getOutputGroupOrBuilderList() {
      return outputGroup_;
    }
    /**
     * <pre>
     * The output files are arranged by their output group. If an output file
     * is part of multiple output groups, it appears once in each output
     * group.
     * </pre>
     *
     * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
     */
    @java.lang.Override
    public int getOutputGroupCount() {
      return outputGroup_.size();
    }
    /**
     * <pre>
     * The output files are arranged by their output group. If an output file
     * is part of multiple output groups, it appears once in each output
     * group.
     * </pre>
     *
     * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup getOutputGroup(int index) {
      return outputGroup_.get(index);
    }
    /**
     * <pre>
     * The output files are arranged by their output group. If an output file
     * is part of multiple output groups, it appears once in each output
     * group.
     * </pre>
     *
     * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroupOrBuilder getOutputGroupOrBuilder(
        int index) {
      return outputGroup_.get(index);
    }

    public static final int IMPORTANT_OUTPUT_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> importantOutput_;
    /**
     * <pre>
     * Temporarily, also report the important outputs directly. This is only to
     * allow existing clients help transition to the deduplicated representation;
     * new clients should not use it.
     * </pre>
     *
     * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
     */
    @java.lang.Override
    @java.lang.Deprecated public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> getImportantOutputList() {
      return importantOutput_;
    }
    /**
     * <pre>
     * Temporarily, also report the important outputs directly. This is only to
     * allow existing clients help transition to the deduplicated representation;
     * new clients should not use it.
     * </pre>
     *
     * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
     */
    @java.lang.Override
    @java.lang.Deprecated public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
        getImportantOutputOrBuilderList() {
      return importantOutput_;
    }
    /**
     * <pre>
     * Temporarily, also report the important outputs directly. This is only to
     * allow existing clients help transition to the deduplicated representation;
     * new clients should not use it.
     * </pre>
     *
     * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
     */
    @java.lang.Override
    @java.lang.Deprecated public int getImportantOutputCount() {
      return importantOutput_.size();
    }
    /**
     * <pre>
     * Temporarily, also report the important outputs directly. This is only to
     * allow existing clients help transition to the deduplicated representation;
     * new clients should not use it.
     * </pre>
     *
     * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
     */
    @java.lang.Override
    @java.lang.Deprecated public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getImportantOutput(int index) {
      return importantOutput_.get(index);
    }
    /**
     * <pre>
     * Temporarily, also report the important outputs directly. This is only to
     * allow existing clients help transition to the deduplicated representation;
     * new clients should not use it.
     * </pre>
     *
     * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
     */
    @java.lang.Override
    @java.lang.Deprecated public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getImportantOutputOrBuilder(
        int index) {
      return importantOutput_.get(index);
    }

    public static final int DIRECTORY_OUTPUT_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> directoryOutput_;
    /**
     * <pre>
     * Report output artifacts (referenced transitively via output_group) which
     * emit directories instead of singleton files. These directory_output entries
     * will never include a uri.
     * </pre>
     *
     * <code>repeated .build_event_stream.File directory_output = 8;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> getDirectoryOutputList() {
      return directoryOutput_;
    }
    /**
     * <pre>
     * Report output artifacts (referenced transitively via output_group) which
     * emit directories instead of singleton files. These directory_output entries
     * will never include a uri.
     * </pre>
     *
     * <code>repeated .build_event_stream.File directory_output = 8;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
        getDirectoryOutputOrBuilderList() {
      return directoryOutput_;
    }
    /**
     * <pre>
     * Report output artifacts (referenced transitively via output_group) which
     * emit directories instead of singleton files. These directory_output entries
     * will never include a uri.
     * </pre>
     *
     * <code>repeated .build_event_stream.File directory_output = 8;</code>
     */
    @java.lang.Override
    public int getDirectoryOutputCount() {
      return directoryOutput_.size();
    }
    /**
     * <pre>
     * Report output artifacts (referenced transitively via output_group) which
     * emit directories instead of singleton files. These directory_output entries
     * will never include a uri.
     * </pre>
     *
     * <code>repeated .build_event_stream.File directory_output = 8;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getDirectoryOutput(int index) {
      return directoryOutput_.get(index);
    }
    /**
     * <pre>
     * Report output artifacts (referenced transitively via output_group) which
     * emit directories instead of singleton files. These directory_output entries
     * will never include a uri.
     * </pre>
     *
     * <code>repeated .build_event_stream.File directory_output = 8;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getDirectoryOutputOrBuilder(
        int index) {
      return directoryOutput_.get(index);
    }

    public static final int TAG_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringList tag_;
    /**
     * <pre>
     * List of tags associated with this configured target.
     * </pre>
     *
     * <code>repeated string tag = 3;</code>
     * @return A list containing the tag.
     */
    public com.google.protobuf.ProtocolStringList
        getTagList() {
      return tag_;
    }
    /**
     * <pre>
     * List of tags associated with this configured target.
     * </pre>
     *
     * <code>repeated string tag = 3;</code>
     * @return The count of tag.
     */
    public int getTagCount() {
      return tag_.size();
    }
    /**
     * <pre>
     * List of tags associated with this configured target.
     * </pre>
     *
     * <code>repeated string tag = 3;</code>
     * @param index The index of the element to return.
     * @return The tag at the given index.
     */
    public java.lang.String getTag(int index) {
      return tag_.get(index);
    }
    /**
     * <pre>
     * List of tags associated with this configured target.
     * </pre>
     *
     * <code>repeated string tag = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the tag at the given index.
     */
    public com.google.protobuf.ByteString
        getTagBytes(int index) {
      return tag_.getByteString(index);
    }

    public static final int TEST_TIMEOUT_SECONDS_FIELD_NUMBER = 7;
    private long testTimeoutSeconds_ = 0L;
    /**
     * <pre>
     * The timeout specified for test actions under this configured target.
     * Deprecated, use `test_timeout` instead.
     * TODO(yannic): Remove.
     * </pre>
     *
     * <code>int64 test_timeout_seconds = 7 [deprecated = true];</code>
     * @deprecated build_event_stream.TargetComplete.test_timeout_seconds is deprecated.
     *     See bazel/build_event_stream.proto;l=599
     * @return The testTimeoutSeconds.
     */
    @java.lang.Override
    @java.lang.Deprecated public long getTestTimeoutSeconds() {
      return testTimeoutSeconds_;
    }

    public static final int TEST_TIMEOUT_FIELD_NUMBER = 10;
    private com.google.protobuf.Duration testTimeout_;
    /**
     * <pre>
     * The timeout specified for test actions under this configured target.
     * </pre>
     *
     * <code>.google.protobuf.Duration test_timeout = 10;</code>
     * @return Whether the testTimeout field is set.
     */
    @java.lang.Override
    public boolean hasTestTimeout() {
      return testTimeout_ != null;
    }
    /**
     * <pre>
     * The timeout specified for test actions under this configured target.
     * </pre>
     *
     * <code>.google.protobuf.Duration test_timeout = 10;</code>
     * @return The testTimeout.
     */
    @java.lang.Override
    public com.google.protobuf.Duration getTestTimeout() {
      return testTimeout_ == null ? com.google.protobuf.Duration.getDefaultInstance() : testTimeout_;
    }
    /**
     * <pre>
     * The timeout specified for test actions under this configured target.
     * </pre>
     *
     * <code>.google.protobuf.Duration test_timeout = 10;</code>
     */
    @java.lang.Override
    public com.google.protobuf.DurationOrBuilder getTestTimeoutOrBuilder() {
      return testTimeout_ == null ? com.google.protobuf.Duration.getDefaultInstance() : testTimeout_;
    }

    public static final int FAILURE_DETAIL_FIELD_NUMBER = 9;
    private com.google.devtools.build.lib.server.FailureDetails.FailureDetail failureDetail_;
    /**
     * <pre>
     * Failure information about the target, only populated if success is false,
     * and sometimes not even then. Equal to one of the ActionExecuted
     * failure_detail fields for one of the root cause ActionExecuted events.
     * </pre>
     *
     * <code>.failure_details.FailureDetail failure_detail = 9;</code>
     * @return Whether the failureDetail field is set.
     */
    @java.lang.Override
    public boolean hasFailureDetail() {
      return failureDetail_ != null;
    }
    /**
     * <pre>
     * Failure information about the target, only populated if success is false,
     * and sometimes not even then. Equal to one of the ActionExecuted
     * failure_detail fields for one of the root cause ActionExecuted events.
     * </pre>
     *
     * <code>.failure_details.FailureDetail failure_detail = 9;</code>
     * @return The failureDetail.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.server.FailureDetails.FailureDetail getFailureDetail() {
      return failureDetail_ == null ? com.google.devtools.build.lib.server.FailureDetails.FailureDetail.getDefaultInstance() : failureDetail_;
    }
    /**
     * <pre>
     * Failure information about the target, only populated if success is false,
     * and sometimes not even then. Equal to one of the ActionExecuted
     * failure_detail fields for one of the root cause ActionExecuted events.
     * </pre>
     *
     * <code>.failure_details.FailureDetail failure_detail = 9;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.server.FailureDetails.FailureDetailOrBuilder getFailureDetailOrBuilder() {
      return failureDetail_ == null ? com.google.devtools.build.lib.server.FailureDetails.FailureDetail.getDefaultInstance() : failureDetail_;
    }

    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 (success_ != false) {
        output.writeBool(1, success_);
      }
      for (int i = 0; i < outputGroup_.size(); i++) {
        output.writeMessage(2, outputGroup_.get(i));
      }
      for (int i = 0; i < tag_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, tag_.getRaw(i));
      }
      for (int i = 0; i < importantOutput_.size(); i++) {
        output.writeMessage(4, importantOutput_.get(i));
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(targetKind_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, targetKind_);
      }
      if (testSize_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize.UNKNOWN.getNumber()) {
        output.writeEnum(6, testSize_);
      }
      if (testTimeoutSeconds_ != 0L) {
        output.writeInt64(7, testTimeoutSeconds_);
      }
      for (int i = 0; i < directoryOutput_.size(); i++) {
        output.writeMessage(8, directoryOutput_.get(i));
      }
      if (failureDetail_ != null) {
        output.writeMessage(9, getFailureDetail());
      }
      if (testTimeout_ != null) {
        output.writeMessage(10, getTestTimeout());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (success_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, success_);
      }
      for (int i = 0; i < outputGroup_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, outputGroup_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < tag_.size(); i++) {
          dataSize += computeStringSizeNoTag(tag_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getTagList().size();
      }
      for (int i = 0; i < importantOutput_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, importantOutput_.get(i));
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(targetKind_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, targetKind_);
      }
      if (testSize_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(6, testSize_);
      }
      if (testTimeoutSeconds_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, testTimeoutSeconds_);
      }
      for (int i = 0; i < directoryOutput_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, directoryOutput_.get(i));
      }
      if (failureDetail_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getFailureDetail());
      }
      if (testTimeout_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getTestTimeout());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (getSuccess()
          != other.getSuccess()) return false;
      if (!getTargetKind()
          .equals(other.getTargetKind())) return false;
      if (testSize_ != other.testSize_) return false;
      if (!getOutputGroupList()
          .equals(other.getOutputGroupList())) return false;
      if (!getImportantOutputList()
          .equals(other.getImportantOutputList())) return false;
      if (!getDirectoryOutputList()
          .equals(other.getDirectoryOutputList())) return false;
      if (!getTagList()
          .equals(other.getTagList())) return false;
      if (getTestTimeoutSeconds()
          != other.getTestTimeoutSeconds()) return false;
      if (hasTestTimeout() != other.hasTestTimeout()) return false;
      if (hasTestTimeout()) {
        if (!getTestTimeout()
            .equals(other.getTestTimeout())) return false;
      }
      if (hasFailureDetail() != other.hasFailureDetail()) return false;
      if (hasFailureDetail()) {
        if (!getFailureDetail()
            .equals(other.getFailureDetail())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SUCCESS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getSuccess());
      hash = (37 * hash) + TARGET_KIND_FIELD_NUMBER;
      hash = (53 * hash) + getTargetKind().hashCode();
      hash = (37 * hash) + TEST_SIZE_FIELD_NUMBER;
      hash = (53 * hash) + testSize_;
      if (getOutputGroupCount() > 0) {
        hash = (37 * hash) + OUTPUT_GROUP_FIELD_NUMBER;
        hash = (53 * hash) + getOutputGroupList().hashCode();
      }
      if (getImportantOutputCount() > 0) {
        hash = (37 * hash) + IMPORTANT_OUTPUT_FIELD_NUMBER;
        hash = (53 * hash) + getImportantOutputList().hashCode();
      }
      if (getDirectoryOutputCount() > 0) {
        hash = (37 * hash) + DIRECTORY_OUTPUT_FIELD_NUMBER;
        hash = (53 * hash) + getDirectoryOutputList().hashCode();
      }
      if (getTagCount() > 0) {
        hash = (37 * hash) + TAG_FIELD_NUMBER;
        hash = (53 * hash) + getTagList().hashCode();
      }
      hash = (37 * hash) + TEST_TIMEOUT_SECONDS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTestTimeoutSeconds());
      if (hasTestTimeout()) {
        hash = (37 * hash) + TEST_TIMEOUT_FIELD_NUMBER;
        hash = (53 * hash) + getTestTimeout().hashCode();
      }
      if (hasFailureDetail()) {
        hash = (37 * hash) + FAILURE_DETAIL_FIELD_NUMBER;
        hash = (53 * hash) + getFailureDetail().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete 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.buildeventstream.BuildEventStreamProtos.TargetComplete parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete 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.buildeventstream.BuildEventStreamProtos.TargetComplete parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete 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.buildeventstream.BuildEventStreamProtos.TargetComplete parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete 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.buildeventstream.BuildEventStreamProtos.TargetComplete parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete 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.buildeventstream.BuildEventStreamProtos.TargetComplete 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.buildeventstream.BuildEventStreamProtos.TargetComplete 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.buildeventstream.BuildEventStreamProtos.TargetComplete 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>
     * Payload of the event indicating the completion of a target. The target is
     * specified in the id. If the target failed the root causes are provided as
     * children events.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.TargetComplete}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.TargetComplete)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetCompleteOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TargetComplete_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TargetComplete_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        success_ = false;
        targetKind_ = "";
        testSize_ = 0;
        if (outputGroupBuilder_ == null) {
          outputGroup_ = java.util.Collections.emptyList();
        } else {
          outputGroup_ = null;
          outputGroupBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        if (importantOutputBuilder_ == null) {
          importantOutput_ = java.util.Collections.emptyList();
        } else {
          importantOutput_ = null;
          importantOutputBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        if (directoryOutputBuilder_ == null) {
          directoryOutput_ = java.util.Collections.emptyList();
        } else {
          directoryOutput_ = null;
          directoryOutputBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        tag_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000040);
        testTimeoutSeconds_ = 0L;
        testTimeout_ = null;
        if (testTimeoutBuilder_ != null) {
          testTimeoutBuilder_.dispose();
          testTimeoutBuilder_ = null;
        }
        failureDetail_ = null;
        if (failureDetailBuilder_ != null) {
          failureDetailBuilder_.dispose();
          failureDetailBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TargetComplete_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete result) {
        if (outputGroupBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)) {
            outputGroup_ = java.util.Collections.unmodifiableList(outputGroup_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.outputGroup_ = outputGroup_;
        } else {
          result.outputGroup_ = outputGroupBuilder_.build();
        }
        if (importantOutputBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0)) {
            importantOutput_ = java.util.Collections.unmodifiableList(importantOutput_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.importantOutput_ = importantOutput_;
        } else {
          result.importantOutput_ = importantOutputBuilder_.build();
        }
        if (directoryOutputBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0)) {
            directoryOutput_ = java.util.Collections.unmodifiableList(directoryOutput_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.directoryOutput_ = directoryOutput_;
        } else {
          result.directoryOutput_ = directoryOutputBuilder_.build();
        }
        if (((bitField0_ & 0x00000040) != 0)) {
          tag_ = tag_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.tag_ = tag_;
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.success_ = success_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.targetKind_ = targetKind_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.testSize_ = testSize_;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.testTimeoutSeconds_ = testTimeoutSeconds_;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.testTimeout_ = testTimeoutBuilder_ == null
              ? testTimeout_
              : testTimeoutBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.failureDetail_ = failureDetailBuilder_ == null
              ? failureDetail_
              : failureDetailBuilder_.build();
        }
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete.getDefaultInstance()) return this;
        if (other.getSuccess() != false) {
          setSuccess(other.getSuccess());
        }
        if (!other.getTargetKind().isEmpty()) {
          targetKind_ = other.targetKind_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.testSize_ != 0) {
          setTestSizeValue(other.getTestSizeValue());
        }
        if (outputGroupBuilder_ == null) {
          if (!other.outputGroup_.isEmpty()) {
            if (outputGroup_.isEmpty()) {
              outputGroup_ = other.outputGroup_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureOutputGroupIsMutable();
              outputGroup_.addAll(other.outputGroup_);
            }
            onChanged();
          }
        } else {
          if (!other.outputGroup_.isEmpty()) {
            if (outputGroupBuilder_.isEmpty()) {
              outputGroupBuilder_.dispose();
              outputGroupBuilder_ = null;
              outputGroup_ = other.outputGroup_;
              bitField0_ = (bitField0_ & ~0x00000008);
              outputGroupBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getOutputGroupFieldBuilder() : null;
            } else {
              outputGroupBuilder_.addAllMessages(other.outputGroup_);
            }
          }
        }
        if (importantOutputBuilder_ == null) {
          if (!other.importantOutput_.isEmpty()) {
            if (importantOutput_.isEmpty()) {
              importantOutput_ = other.importantOutput_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureImportantOutputIsMutable();
              importantOutput_.addAll(other.importantOutput_);
            }
            onChanged();
          }
        } else {
          if (!other.importantOutput_.isEmpty()) {
            if (importantOutputBuilder_.isEmpty()) {
              importantOutputBuilder_.dispose();
              importantOutputBuilder_ = null;
              importantOutput_ = other.importantOutput_;
              bitField0_ = (bitField0_ & ~0x00000010);
              importantOutputBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getImportantOutputFieldBuilder() : null;
            } else {
              importantOutputBuilder_.addAllMessages(other.importantOutput_);
            }
          }
        }
        if (directoryOutputBuilder_ == null) {
          if (!other.directoryOutput_.isEmpty()) {
            if (directoryOutput_.isEmpty()) {
              directoryOutput_ = other.directoryOutput_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureDirectoryOutputIsMutable();
              directoryOutput_.addAll(other.directoryOutput_);
            }
            onChanged();
          }
        } else {
          if (!other.directoryOutput_.isEmpty()) {
            if (directoryOutputBuilder_.isEmpty()) {
              directoryOutputBuilder_.dispose();
              directoryOutputBuilder_ = null;
              directoryOutput_ = other.directoryOutput_;
              bitField0_ = (bitField0_ & ~0x00000020);
              directoryOutputBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getDirectoryOutputFieldBuilder() : null;
            } else {
              directoryOutputBuilder_.addAllMessages(other.directoryOutput_);
            }
          }
        }
        if (!other.tag_.isEmpty()) {
          if (tag_.isEmpty()) {
            tag_ = other.tag_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureTagIsMutable();
            tag_.addAll(other.tag_);
          }
          onChanged();
        }
        if (other.getTestTimeoutSeconds() != 0L) {
          setTestTimeoutSeconds(other.getTestTimeoutSeconds());
        }
        if (other.hasTestTimeout()) {
          mergeTestTimeout(other.getTestTimeout());
        }
        if (other.hasFailureDetail()) {
          mergeFailureDetail(other.getFailureDetail());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                success_ = input.readBool();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup m =
                    input.readMessage(
                        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup.parser(),
                        extensionRegistry);
                if (outputGroupBuilder_ == null) {
                  ensureOutputGroupIsMutable();
                  outputGroup_.add(m);
                } else {
                  outputGroupBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 26: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureTagIsMutable();
                tag_.add(s);
                break;
              } // case 26
              case 34: {
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File m =
                    input.readMessage(
                        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.parser(),
                        extensionRegistry);
                if (importantOutputBuilder_ == null) {
                  ensureImportantOutputIsMutable();
                  importantOutput_.add(m);
                } else {
                  importantOutputBuilder_.addMessage(m);
                }
                break;
              } // case 34
              case 42: {
                targetKind_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 42
              case 48: {
                testSize_ = input.readEnum();
                bitField0_ |= 0x00000004;
                break;
              } // case 48
              case 56: {
                testTimeoutSeconds_ = input.readInt64();
                bitField0_ |= 0x00000080;
                break;
              } // case 56
              case 66: {
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File m =
                    input.readMessage(
                        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.parser(),
                        extensionRegistry);
                if (directoryOutputBuilder_ == null) {
                  ensureDirectoryOutputIsMutable();
                  directoryOutput_.add(m);
                } else {
                  directoryOutputBuilder_.addMessage(m);
                }
                break;
              } // case 66
              case 74: {
                input.readMessage(
                    getFailureDetailFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000200;
                break;
              } // case 74
              case 82: {
                input.readMessage(
                    getTestTimeoutFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000100;
                break;
              } // case 82
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private boolean success_ ;
      /**
       * <code>bool success = 1;</code>
       * @return The success.
       */
      @java.lang.Override
      public boolean getSuccess() {
        return success_;
      }
      /**
       * <code>bool success = 1;</code>
       * @param value The success to set.
       * @return This builder for chaining.
       */
      public Builder setSuccess(boolean value) {
        
        success_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>bool success = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSuccess() {
        bitField0_ = (bitField0_ & ~0x00000001);
        success_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object targetKind_ = "";
      /**
       * <pre>
       * The kind of target (e.g.,  e.g. "cc_library rule", "source file",
       * "generated file") where the completion is reported.
       * Deprecated: use the target_kind field in TargetConfigured instead.
       * </pre>
       *
       * <code>string target_kind = 5 [deprecated = true];</code>
       * @deprecated build_event_stream.TargetComplete.target_kind is deprecated.
       *     See bazel/build_event_stream.proto;l=570
       * @return The targetKind.
       */
      @java.lang.Deprecated public java.lang.String getTargetKind() {
        java.lang.Object ref = targetKind_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          targetKind_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The kind of target (e.g.,  e.g. "cc_library rule", "source file",
       * "generated file") where the completion is reported.
       * Deprecated: use the target_kind field in TargetConfigured instead.
       * </pre>
       *
       * <code>string target_kind = 5 [deprecated = true];</code>
       * @deprecated build_event_stream.TargetComplete.target_kind is deprecated.
       *     See bazel/build_event_stream.proto;l=570
       * @return The bytes for targetKind.
       */
      @java.lang.Deprecated public com.google.protobuf.ByteString
          getTargetKindBytes() {
        java.lang.Object ref = targetKind_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          targetKind_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The kind of target (e.g.,  e.g. "cc_library rule", "source file",
       * "generated file") where the completion is reported.
       * Deprecated: use the target_kind field in TargetConfigured instead.
       * </pre>
       *
       * <code>string target_kind = 5 [deprecated = true];</code>
       * @deprecated build_event_stream.TargetComplete.target_kind is deprecated.
       *     See bazel/build_event_stream.proto;l=570
       * @param value The targetKind to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setTargetKind(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        targetKind_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The kind of target (e.g.,  e.g. "cc_library rule", "source file",
       * "generated file") where the completion is reported.
       * Deprecated: use the target_kind field in TargetConfigured instead.
       * </pre>
       *
       * <code>string target_kind = 5 [deprecated = true];</code>
       * @deprecated build_event_stream.TargetComplete.target_kind is deprecated.
       *     See bazel/build_event_stream.proto;l=570
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder clearTargetKind() {
        targetKind_ = getDefaultInstance().getTargetKind();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The kind of target (e.g.,  e.g. "cc_library rule", "source file",
       * "generated file") where the completion is reported.
       * Deprecated: use the target_kind field in TargetConfigured instead.
       * </pre>
       *
       * <code>string target_kind = 5 [deprecated = true];</code>
       * @deprecated build_event_stream.TargetComplete.target_kind is deprecated.
       *     See bazel/build_event_stream.proto;l=570
       * @param value The bytes for targetKind to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setTargetKindBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        targetKind_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private int testSize_ = 0;
      /**
       * <pre>
       * The size of the test, if the target is a test target. Unset otherwise.
       * Deprecated: use the test_size field in TargetConfigured instead.
       * </pre>
       *
       * <code>.build_event_stream.TestSize test_size = 6 [deprecated = true];</code>
       * @deprecated build_event_stream.TargetComplete.test_size is deprecated.
       *     See bazel/build_event_stream.proto;l=574
       * @return The enum numeric value on the wire for testSize.
       */
      @java.lang.Override @java.lang.Deprecated public int getTestSizeValue() {
        return testSize_;
      }
      /**
       * <pre>
       * The size of the test, if the target is a test target. Unset otherwise.
       * Deprecated: use the test_size field in TargetConfigured instead.
       * </pre>
       *
       * <code>.build_event_stream.TestSize test_size = 6 [deprecated = true];</code>
       * @deprecated build_event_stream.TargetComplete.test_size is deprecated.
       *     See bazel/build_event_stream.proto;l=574
       * @param value The enum numeric value on the wire for testSize to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setTestSizeValue(int value) {
        testSize_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The size of the test, if the target is a test target. Unset otherwise.
       * Deprecated: use the test_size field in TargetConfigured instead.
       * </pre>
       *
       * <code>.build_event_stream.TestSize test_size = 6 [deprecated = true];</code>
       * @deprecated build_event_stream.TargetComplete.test_size is deprecated.
       *     See bazel/build_event_stream.proto;l=574
       * @return The testSize.
       */
      @java.lang.Override
      @java.lang.Deprecated public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize getTestSize() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize result = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize.forNumber(testSize_);
        return result == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * The size of the test, if the target is a test target. Unset otherwise.
       * Deprecated: use the test_size field in TargetConfigured instead.
       * </pre>
       *
       * <code>.build_event_stream.TestSize test_size = 6 [deprecated = true];</code>
       * @deprecated build_event_stream.TargetComplete.test_size is deprecated.
       *     See bazel/build_event_stream.proto;l=574
       * @param value The testSize to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setTestSize(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSize value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        testSize_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The size of the test, if the target is a test target. Unset otherwise.
       * Deprecated: use the test_size field in TargetConfigured instead.
       * </pre>
       *
       * <code>.build_event_stream.TestSize test_size = 6 [deprecated = true];</code>
       * @deprecated build_event_stream.TargetComplete.test_size is deprecated.
       *     See bazel/build_event_stream.proto;l=574
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder clearTestSize() {
        bitField0_ = (bitField0_ & ~0x00000004);
        testSize_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup> outputGroup_ =
        java.util.Collections.emptyList();
      private void ensureOutputGroupIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          outputGroup_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup>(outputGroup_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroupOrBuilder> outputGroupBuilder_;

      /**
       * <pre>
       * The output files are arranged by their output group. If an output file
       * is part of multiple output groups, it appears once in each output
       * group.
       * </pre>
       *
       * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup> getOutputGroupList() {
        if (outputGroupBuilder_ == null) {
          return java.util.Collections.unmodifiableList(outputGroup_);
        } else {
          return outputGroupBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The output files are arranged by their output group. If an output file
       * is part of multiple output groups, it appears once in each output
       * group.
       * </pre>
       *
       * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
       */
      public int getOutputGroupCount() {
        if (outputGroupBuilder_ == null) {
          return outputGroup_.size();
        } else {
          return outputGroupBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The output files are arranged by their output group. If an output file
       * is part of multiple output groups, it appears once in each output
       * group.
       * </pre>
       *
       * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup getOutputGroup(int index) {
        if (outputGroupBuilder_ == null) {
          return outputGroup_.get(index);
        } else {
          return outputGroupBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The output files are arranged by their output group. If an output file
       * is part of multiple output groups, it appears once in each output
       * group.
       * </pre>
       *
       * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
       */
      public Builder setOutputGroup(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup value) {
        if (outputGroupBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOutputGroupIsMutable();
          outputGroup_.set(index, value);
          onChanged();
        } else {
          outputGroupBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The output files are arranged by their output group. If an output file
       * is part of multiple output groups, it appears once in each output
       * group.
       * </pre>
       *
       * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
       */
      public Builder setOutputGroup(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup.Builder builderForValue) {
        if (outputGroupBuilder_ == null) {
          ensureOutputGroupIsMutable();
          outputGroup_.set(index, builderForValue.build());
          onChanged();
        } else {
          outputGroupBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The output files are arranged by their output group. If an output file
       * is part of multiple output groups, it appears once in each output
       * group.
       * </pre>
       *
       * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
       */
      public Builder addOutputGroup(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup value) {
        if (outputGroupBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOutputGroupIsMutable();
          outputGroup_.add(value);
          onChanged();
        } else {
          outputGroupBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The output files are arranged by their output group. If an output file
       * is part of multiple output groups, it appears once in each output
       * group.
       * </pre>
       *
       * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
       */
      public Builder addOutputGroup(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup value) {
        if (outputGroupBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOutputGroupIsMutable();
          outputGroup_.add(index, value);
          onChanged();
        } else {
          outputGroupBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The output files are arranged by their output group. If an output file
       * is part of multiple output groups, it appears once in each output
       * group.
       * </pre>
       *
       * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
       */
      public Builder addOutputGroup(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup.Builder builderForValue) {
        if (outputGroupBuilder_ == null) {
          ensureOutputGroupIsMutable();
          outputGroup_.add(builderForValue.build());
          onChanged();
        } else {
          outputGroupBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The output files are arranged by their output group. If an output file
       * is part of multiple output groups, it appears once in each output
       * group.
       * </pre>
       *
       * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
       */
      public Builder addOutputGroup(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup.Builder builderForValue) {
        if (outputGroupBuilder_ == null) {
          ensureOutputGroupIsMutable();
          outputGroup_.add(index, builderForValue.build());
          onChanged();
        } else {
          outputGroupBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The output files are arranged by their output group. If an output file
       * is part of multiple output groups, it appears once in each output
       * group.
       * </pre>
       *
       * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
       */
      public Builder addAllOutputGroup(
          java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup> values) {
        if (outputGroupBuilder_ == null) {
          ensureOutputGroupIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, outputGroup_);
          onChanged();
        } else {
          outputGroupBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The output files are arranged by their output group. If an output file
       * is part of multiple output groups, it appears once in each output
       * group.
       * </pre>
       *
       * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
       */
      public Builder clearOutputGroup() {
        if (outputGroupBuilder_ == null) {
          outputGroup_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          outputGroupBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The output files are arranged by their output group. If an output file
       * is part of multiple output groups, it appears once in each output
       * group.
       * </pre>
       *
       * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
       */
      public Builder removeOutputGroup(int index) {
        if (outputGroupBuilder_ == null) {
          ensureOutputGroupIsMutable();
          outputGroup_.remove(index);
          onChanged();
        } else {
          outputGroupBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The output files are arranged by their output group. If an output file
       * is part of multiple output groups, it appears once in each output
       * group.
       * </pre>
       *
       * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup.Builder getOutputGroupBuilder(
          int index) {
        return getOutputGroupFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The output files are arranged by their output group. If an output file
       * is part of multiple output groups, it appears once in each output
       * group.
       * </pre>
       *
       * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroupOrBuilder getOutputGroupOrBuilder(
          int index) {
        if (outputGroupBuilder_ == null) {
          return outputGroup_.get(index);  } else {
          return outputGroupBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The output files are arranged by their output group. If an output file
       * is part of multiple output groups, it appears once in each output
       * group.
       * </pre>
       *
       * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroupOrBuilder> 
           getOutputGroupOrBuilderList() {
        if (outputGroupBuilder_ != null) {
          return outputGroupBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(outputGroup_);
        }
      }
      /**
       * <pre>
       * The output files are arranged by their output group. If an output file
       * is part of multiple output groups, it appears once in each output
       * group.
       * </pre>
       *
       * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup.Builder addOutputGroupBuilder() {
        return getOutputGroupFieldBuilder().addBuilder(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup.getDefaultInstance());
      }
      /**
       * <pre>
       * The output files are arranged by their output group. If an output file
       * is part of multiple output groups, it appears once in each output
       * group.
       * </pre>
       *
       * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup.Builder addOutputGroupBuilder(
          int index) {
        return getOutputGroupFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup.getDefaultInstance());
      }
      /**
       * <pre>
       * The output files are arranged by their output group. If an output file
       * is part of multiple output groups, it appears once in each output
       * group.
       * </pre>
       *
       * <code>repeated .build_event_stream.OutputGroup output_group = 2;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup.Builder> 
           getOutputGroupBuilderList() {
        return getOutputGroupFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroupOrBuilder> 
          getOutputGroupFieldBuilder() {
        if (outputGroupBuilder_ == null) {
          outputGroupBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroupOrBuilder>(
                  outputGroup_,
                  ((bitField0_ & 0x00000008) != 0),
                  getParentForChildren(),
                  isClean());
          outputGroup_ = null;
        }
        return outputGroupBuilder_;
      }

      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> importantOutput_ =
        java.util.Collections.emptyList();
      private void ensureImportantOutputIsMutable() {
        if (!((bitField0_ & 0x00000010) != 0)) {
          importantOutput_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File>(importantOutput_);
          bitField0_ |= 0x00000010;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> importantOutputBuilder_;

      /**
       * <pre>
       * Temporarily, also report the important outputs directly. This is only to
       * allow existing clients help transition to the deduplicated representation;
       * new clients should not use it.
       * </pre>
       *
       * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> getImportantOutputList() {
        if (importantOutputBuilder_ == null) {
          return java.util.Collections.unmodifiableList(importantOutput_);
        } else {
          return importantOutputBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Temporarily, also report the important outputs directly. This is only to
       * allow existing clients help transition to the deduplicated representation;
       * new clients should not use it.
       * </pre>
       *
       * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public int getImportantOutputCount() {
        if (importantOutputBuilder_ == null) {
          return importantOutput_.size();
        } else {
          return importantOutputBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Temporarily, also report the important outputs directly. This is only to
       * allow existing clients help transition to the deduplicated representation;
       * new clients should not use it.
       * </pre>
       *
       * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getImportantOutput(int index) {
        if (importantOutputBuilder_ == null) {
          return importantOutput_.get(index);
        } else {
          return importantOutputBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Temporarily, also report the important outputs directly. This is only to
       * allow existing clients help transition to the deduplicated representation;
       * new clients should not use it.
       * </pre>
       *
       * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public Builder setImportantOutput(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (importantOutputBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureImportantOutputIsMutable();
          importantOutput_.set(index, value);
          onChanged();
        } else {
          importantOutputBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Temporarily, also report the important outputs directly. This is only to
       * allow existing clients help transition to the deduplicated representation;
       * new clients should not use it.
       * </pre>
       *
       * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public Builder setImportantOutput(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (importantOutputBuilder_ == null) {
          ensureImportantOutputIsMutable();
          importantOutput_.set(index, builderForValue.build());
          onChanged();
        } else {
          importantOutputBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Temporarily, also report the important outputs directly. This is only to
       * allow existing clients help transition to the deduplicated representation;
       * new clients should not use it.
       * </pre>
       *
       * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public Builder addImportantOutput(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (importantOutputBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureImportantOutputIsMutable();
          importantOutput_.add(value);
          onChanged();
        } else {
          importantOutputBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Temporarily, also report the important outputs directly. This is only to
       * allow existing clients help transition to the deduplicated representation;
       * new clients should not use it.
       * </pre>
       *
       * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public Builder addImportantOutput(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (importantOutputBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureImportantOutputIsMutable();
          importantOutput_.add(index, value);
          onChanged();
        } else {
          importantOutputBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Temporarily, also report the important outputs directly. This is only to
       * allow existing clients help transition to the deduplicated representation;
       * new clients should not use it.
       * </pre>
       *
       * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public Builder addImportantOutput(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (importantOutputBuilder_ == null) {
          ensureImportantOutputIsMutable();
          importantOutput_.add(builderForValue.build());
          onChanged();
        } else {
          importantOutputBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Temporarily, also report the important outputs directly. This is only to
       * allow existing clients help transition to the deduplicated representation;
       * new clients should not use it.
       * </pre>
       *
       * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public Builder addImportantOutput(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (importantOutputBuilder_ == null) {
          ensureImportantOutputIsMutable();
          importantOutput_.add(index, builderForValue.build());
          onChanged();
        } else {
          importantOutputBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Temporarily, also report the important outputs directly. This is only to
       * allow existing clients help transition to the deduplicated representation;
       * new clients should not use it.
       * </pre>
       *
       * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public Builder addAllImportantOutput(
          java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> values) {
        if (importantOutputBuilder_ == null) {
          ensureImportantOutputIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, importantOutput_);
          onChanged();
        } else {
          importantOutputBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Temporarily, also report the important outputs directly. This is only to
       * allow existing clients help transition to the deduplicated representation;
       * new clients should not use it.
       * </pre>
       *
       * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public Builder clearImportantOutput() {
        if (importantOutputBuilder_ == null) {
          importantOutput_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
        } else {
          importantOutputBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Temporarily, also report the important outputs directly. This is only to
       * allow existing clients help transition to the deduplicated representation;
       * new clients should not use it.
       * </pre>
       *
       * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public Builder removeImportantOutput(int index) {
        if (importantOutputBuilder_ == null) {
          ensureImportantOutputIsMutable();
          importantOutput_.remove(index);
          onChanged();
        } else {
          importantOutputBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Temporarily, also report the important outputs directly. This is only to
       * allow existing clients help transition to the deduplicated representation;
       * new clients should not use it.
       * </pre>
       *
       * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder getImportantOutputBuilder(
          int index) {
        return getImportantOutputFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Temporarily, also report the important outputs directly. This is only to
       * allow existing clients help transition to the deduplicated representation;
       * new clients should not use it.
       * </pre>
       *
       * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getImportantOutputOrBuilder(
          int index) {
        if (importantOutputBuilder_ == null) {
          return importantOutput_.get(index);  } else {
          return importantOutputBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Temporarily, also report the important outputs directly. This is only to
       * allow existing clients help transition to the deduplicated representation;
       * new clients should not use it.
       * </pre>
       *
       * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
           getImportantOutputOrBuilderList() {
        if (importantOutputBuilder_ != null) {
          return importantOutputBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(importantOutput_);
        }
      }
      /**
       * <pre>
       * Temporarily, also report the important outputs directly. This is only to
       * allow existing clients help transition to the deduplicated representation;
       * new clients should not use it.
       * </pre>
       *
       * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder addImportantOutputBuilder() {
        return getImportantOutputFieldBuilder().addBuilder(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance());
      }
      /**
       * <pre>
       * Temporarily, also report the important outputs directly. This is only to
       * allow existing clients help transition to the deduplicated representation;
       * new clients should not use it.
       * </pre>
       *
       * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder addImportantOutputBuilder(
          int index) {
        return getImportantOutputFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance());
      }
      /**
       * <pre>
       * Temporarily, also report the important outputs directly. This is only to
       * allow existing clients help transition to the deduplicated representation;
       * new clients should not use it.
       * </pre>
       *
       * <code>repeated .build_event_stream.File important_output = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder> 
           getImportantOutputBuilderList() {
        return getImportantOutputFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
          getImportantOutputFieldBuilder() {
        if (importantOutputBuilder_ == null) {
          importantOutputBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder>(
                  importantOutput_,
                  ((bitField0_ & 0x00000010) != 0),
                  getParentForChildren(),
                  isClean());
          importantOutput_ = null;
        }
        return importantOutputBuilder_;
      }

      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> directoryOutput_ =
        java.util.Collections.emptyList();
      private void ensureDirectoryOutputIsMutable() {
        if (!((bitField0_ & 0x00000020) != 0)) {
          directoryOutput_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File>(directoryOutput_);
          bitField0_ |= 0x00000020;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> directoryOutputBuilder_;

      /**
       * <pre>
       * Report output artifacts (referenced transitively via output_group) which
       * emit directories instead of singleton files. These directory_output entries
       * will never include a uri.
       * </pre>
       *
       * <code>repeated .build_event_stream.File directory_output = 8;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> getDirectoryOutputList() {
        if (directoryOutputBuilder_ == null) {
          return java.util.Collections.unmodifiableList(directoryOutput_);
        } else {
          return directoryOutputBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Report output artifacts (referenced transitively via output_group) which
       * emit directories instead of singleton files. These directory_output entries
       * will never include a uri.
       * </pre>
       *
       * <code>repeated .build_event_stream.File directory_output = 8;</code>
       */
      public int getDirectoryOutputCount() {
        if (directoryOutputBuilder_ == null) {
          return directoryOutput_.size();
        } else {
          return directoryOutputBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Report output artifacts (referenced transitively via output_group) which
       * emit directories instead of singleton files. These directory_output entries
       * will never include a uri.
       * </pre>
       *
       * <code>repeated .build_event_stream.File directory_output = 8;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getDirectoryOutput(int index) {
        if (directoryOutputBuilder_ == null) {
          return directoryOutput_.get(index);
        } else {
          return directoryOutputBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Report output artifacts (referenced transitively via output_group) which
       * emit directories instead of singleton files. These directory_output entries
       * will never include a uri.
       * </pre>
       *
       * <code>repeated .build_event_stream.File directory_output = 8;</code>
       */
      public Builder setDirectoryOutput(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (directoryOutputBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDirectoryOutputIsMutable();
          directoryOutput_.set(index, value);
          onChanged();
        } else {
          directoryOutputBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Report output artifacts (referenced transitively via output_group) which
       * emit directories instead of singleton files. These directory_output entries
       * will never include a uri.
       * </pre>
       *
       * <code>repeated .build_event_stream.File directory_output = 8;</code>
       */
      public Builder setDirectoryOutput(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (directoryOutputBuilder_ == null) {
          ensureDirectoryOutputIsMutable();
          directoryOutput_.set(index, builderForValue.build());
          onChanged();
        } else {
          directoryOutputBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Report output artifacts (referenced transitively via output_group) which
       * emit directories instead of singleton files. These directory_output entries
       * will never include a uri.
       * </pre>
       *
       * <code>repeated .build_event_stream.File directory_output = 8;</code>
       */
      public Builder addDirectoryOutput(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (directoryOutputBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDirectoryOutputIsMutable();
          directoryOutput_.add(value);
          onChanged();
        } else {
          directoryOutputBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Report output artifacts (referenced transitively via output_group) which
       * emit directories instead of singleton files. These directory_output entries
       * will never include a uri.
       * </pre>
       *
       * <code>repeated .build_event_stream.File directory_output = 8;</code>
       */
      public Builder addDirectoryOutput(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (directoryOutputBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDirectoryOutputIsMutable();
          directoryOutput_.add(index, value);
          onChanged();
        } else {
          directoryOutputBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Report output artifacts (referenced transitively via output_group) which
       * emit directories instead of singleton files. These directory_output entries
       * will never include a uri.
       * </pre>
       *
       * <code>repeated .build_event_stream.File directory_output = 8;</code>
       */
      public Builder addDirectoryOutput(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (directoryOutputBuilder_ == null) {
          ensureDirectoryOutputIsMutable();
          directoryOutput_.add(builderForValue.build());
          onChanged();
        } else {
          directoryOutputBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Report output artifacts (referenced transitively via output_group) which
       * emit directories instead of singleton files. These directory_output entries
       * will never include a uri.
       * </pre>
       *
       * <code>repeated .build_event_stream.File directory_output = 8;</code>
       */
      public Builder addDirectoryOutput(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (directoryOutputBuilder_ == null) {
          ensureDirectoryOutputIsMutable();
          directoryOutput_.add(index, builderForValue.build());
          onChanged();
        } else {
          directoryOutputBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Report output artifacts (referenced transitively via output_group) which
       * emit directories instead of singleton files. These directory_output entries
       * will never include a uri.
       * </pre>
       *
       * <code>repeated .build_event_stream.File directory_output = 8;</code>
       */
      public Builder addAllDirectoryOutput(
          java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> values) {
        if (directoryOutputBuilder_ == null) {
          ensureDirectoryOutputIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, directoryOutput_);
          onChanged();
        } else {
          directoryOutputBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Report output artifacts (referenced transitively via output_group) which
       * emit directories instead of singleton files. These directory_output entries
       * will never include a uri.
       * </pre>
       *
       * <code>repeated .build_event_stream.File directory_output = 8;</code>
       */
      public Builder clearDirectoryOutput() {
        if (directoryOutputBuilder_ == null) {
          directoryOutput_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          directoryOutputBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Report output artifacts (referenced transitively via output_group) which
       * emit directories instead of singleton files. These directory_output entries
       * will never include a uri.
       * </pre>
       *
       * <code>repeated .build_event_stream.File directory_output = 8;</code>
       */
      public Builder removeDirectoryOutput(int index) {
        if (directoryOutputBuilder_ == null) {
          ensureDirectoryOutputIsMutable();
          directoryOutput_.remove(index);
          onChanged();
        } else {
          directoryOutputBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Report output artifacts (referenced transitively via output_group) which
       * emit directories instead of singleton files. These directory_output entries
       * will never include a uri.
       * </pre>
       *
       * <code>repeated .build_event_stream.File directory_output = 8;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder getDirectoryOutputBuilder(
          int index) {
        return getDirectoryOutputFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Report output artifacts (referenced transitively via output_group) which
       * emit directories instead of singleton files. These directory_output entries
       * will never include a uri.
       * </pre>
       *
       * <code>repeated .build_event_stream.File directory_output = 8;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getDirectoryOutputOrBuilder(
          int index) {
        if (directoryOutputBuilder_ == null) {
          return directoryOutput_.get(index);  } else {
          return directoryOutputBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Report output artifacts (referenced transitively via output_group) which
       * emit directories instead of singleton files. These directory_output entries
       * will never include a uri.
       * </pre>
       *
       * <code>repeated .build_event_stream.File directory_output = 8;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
           getDirectoryOutputOrBuilderList() {
        if (directoryOutputBuilder_ != null) {
          return directoryOutputBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(directoryOutput_);
        }
      }
      /**
       * <pre>
       * Report output artifacts (referenced transitively via output_group) which
       * emit directories instead of singleton files. These directory_output entries
       * will never include a uri.
       * </pre>
       *
       * <code>repeated .build_event_stream.File directory_output = 8;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder addDirectoryOutputBuilder() {
        return getDirectoryOutputFieldBuilder().addBuilder(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance());
      }
      /**
       * <pre>
       * Report output artifacts (referenced transitively via output_group) which
       * emit directories instead of singleton files. These directory_output entries
       * will never include a uri.
       * </pre>
       *
       * <code>repeated .build_event_stream.File directory_output = 8;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder addDirectoryOutputBuilder(
          int index) {
        return getDirectoryOutputFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance());
      }
      /**
       * <pre>
       * Report output artifacts (referenced transitively via output_group) which
       * emit directories instead of singleton files. These directory_output entries
       * will never include a uri.
       * </pre>
       *
       * <code>repeated .build_event_stream.File directory_output = 8;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder> 
           getDirectoryOutputBuilderList() {
        return getDirectoryOutputFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
          getDirectoryOutputFieldBuilder() {
        if (directoryOutputBuilder_ == null) {
          directoryOutputBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder>(
                  directoryOutput_,
                  ((bitField0_ & 0x00000020) != 0),
                  getParentForChildren(),
                  isClean());
          directoryOutput_ = null;
        }
        return directoryOutputBuilder_;
      }

      private com.google.protobuf.LazyStringList tag_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureTagIsMutable() {
        if (!((bitField0_ & 0x00000040) != 0)) {
          tag_ = new com.google.protobuf.LazyStringArrayList(tag_);
          bitField0_ |= 0x00000040;
         }
      }
      /**
       * <pre>
       * List of tags associated with this configured target.
       * </pre>
       *
       * <code>repeated string tag = 3;</code>
       * @return A list containing the tag.
       */
      public com.google.protobuf.ProtocolStringList
          getTagList() {
        return tag_.getUnmodifiableView();
      }
      /**
       * <pre>
       * List of tags associated with this configured target.
       * </pre>
       *
       * <code>repeated string tag = 3;</code>
       * @return The count of tag.
       */
      public int getTagCount() {
        return tag_.size();
      }
      /**
       * <pre>
       * List of tags associated with this configured target.
       * </pre>
       *
       * <code>repeated string tag = 3;</code>
       * @param index The index of the element to return.
       * @return The tag at the given index.
       */
      public java.lang.String getTag(int index) {
        return tag_.get(index);
      }
      /**
       * <pre>
       * List of tags associated with this configured target.
       * </pre>
       *
       * <code>repeated string tag = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the tag at the given index.
       */
      public com.google.protobuf.ByteString
          getTagBytes(int index) {
        return tag_.getByteString(index);
      }
      /**
       * <pre>
       * List of tags associated with this configured target.
       * </pre>
       *
       * <code>repeated string tag = 3;</code>
       * @param index The index to set the value at.
       * @param value The tag to set.
       * @return This builder for chaining.
       */
      public Builder setTag(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureTagIsMutable();
        tag_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of tags associated with this configured target.
       * </pre>
       *
       * <code>repeated string tag = 3;</code>
       * @param value The tag to add.
       * @return This builder for chaining.
       */
      public Builder addTag(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureTagIsMutable();
        tag_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of tags associated with this configured target.
       * </pre>
       *
       * <code>repeated string tag = 3;</code>
       * @param values The tag to add.
       * @return This builder for chaining.
       */
      public Builder addAllTag(
          java.lang.Iterable<java.lang.String> values) {
        ensureTagIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, tag_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of tags associated with this configured target.
       * </pre>
       *
       * <code>repeated string tag = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTag() {
        tag_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of tags associated with this configured target.
       * </pre>
       *
       * <code>repeated string tag = 3;</code>
       * @param value The bytes of the tag to add.
       * @return This builder for chaining.
       */
      public Builder addTagBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureTagIsMutable();
        tag_.add(value);
        onChanged();
        return this;
      }

      private long testTimeoutSeconds_ ;
      /**
       * <pre>
       * The timeout specified for test actions under this configured target.
       * Deprecated, use `test_timeout` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 test_timeout_seconds = 7 [deprecated = true];</code>
       * @deprecated build_event_stream.TargetComplete.test_timeout_seconds is deprecated.
       *     See bazel/build_event_stream.proto;l=599
       * @return The testTimeoutSeconds.
       */
      @java.lang.Override
      @java.lang.Deprecated public long getTestTimeoutSeconds() {
        return testTimeoutSeconds_;
      }
      /**
       * <pre>
       * The timeout specified for test actions under this configured target.
       * Deprecated, use `test_timeout` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 test_timeout_seconds = 7 [deprecated = true];</code>
       * @deprecated build_event_stream.TargetComplete.test_timeout_seconds is deprecated.
       *     See bazel/build_event_stream.proto;l=599
       * @param value The testTimeoutSeconds to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setTestTimeoutSeconds(long value) {
        
        testTimeoutSeconds_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The timeout specified for test actions under this configured target.
       * Deprecated, use `test_timeout` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 test_timeout_seconds = 7 [deprecated = true];</code>
       * @deprecated build_event_stream.TargetComplete.test_timeout_seconds is deprecated.
       *     See bazel/build_event_stream.proto;l=599
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder clearTestTimeoutSeconds() {
        bitField0_ = (bitField0_ & ~0x00000080);
        testTimeoutSeconds_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.Duration testTimeout_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> testTimeoutBuilder_;
      /**
       * <pre>
       * The timeout specified for test actions under this configured target.
       * </pre>
       *
       * <code>.google.protobuf.Duration test_timeout = 10;</code>
       * @return Whether the testTimeout field is set.
       */
      public boolean hasTestTimeout() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * The timeout specified for test actions under this configured target.
       * </pre>
       *
       * <code>.google.protobuf.Duration test_timeout = 10;</code>
       * @return The testTimeout.
       */
      public com.google.protobuf.Duration getTestTimeout() {
        if (testTimeoutBuilder_ == null) {
          return testTimeout_ == null ? com.google.protobuf.Duration.getDefaultInstance() : testTimeout_;
        } else {
          return testTimeoutBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The timeout specified for test actions under this configured target.
       * </pre>
       *
       * <code>.google.protobuf.Duration test_timeout = 10;</code>
       */
      public Builder setTestTimeout(com.google.protobuf.Duration value) {
        if (testTimeoutBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          testTimeout_ = value;
        } else {
          testTimeoutBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The timeout specified for test actions under this configured target.
       * </pre>
       *
       * <code>.google.protobuf.Duration test_timeout = 10;</code>
       */
      public Builder setTestTimeout(
          com.google.protobuf.Duration.Builder builderForValue) {
        if (testTimeoutBuilder_ == null) {
          testTimeout_ = builderForValue.build();
        } else {
          testTimeoutBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The timeout specified for test actions under this configured target.
       * </pre>
       *
       * <code>.google.protobuf.Duration test_timeout = 10;</code>
       */
      public Builder mergeTestTimeout(com.google.protobuf.Duration value) {
        if (testTimeoutBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0) &&
            testTimeout_ != null &&
            testTimeout_ != com.google.protobuf.Duration.getDefaultInstance()) {
            getTestTimeoutBuilder().mergeFrom(value);
          } else {
            testTimeout_ = value;
          }
        } else {
          testTimeoutBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The timeout specified for test actions under this configured target.
       * </pre>
       *
       * <code>.google.protobuf.Duration test_timeout = 10;</code>
       */
      public Builder clearTestTimeout() {
        bitField0_ = (bitField0_ & ~0x00000100);
        testTimeout_ = null;
        if (testTimeoutBuilder_ != null) {
          testTimeoutBuilder_.dispose();
          testTimeoutBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The timeout specified for test actions under this configured target.
       * </pre>
       *
       * <code>.google.protobuf.Duration test_timeout = 10;</code>
       */
      public com.google.protobuf.Duration.Builder getTestTimeoutBuilder() {
        bitField0_ |= 0x00000100;
        onChanged();
        return getTestTimeoutFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The timeout specified for test actions under this configured target.
       * </pre>
       *
       * <code>.google.protobuf.Duration test_timeout = 10;</code>
       */
      public com.google.protobuf.DurationOrBuilder getTestTimeoutOrBuilder() {
        if (testTimeoutBuilder_ != null) {
          return testTimeoutBuilder_.getMessageOrBuilder();
        } else {
          return testTimeout_ == null ?
              com.google.protobuf.Duration.getDefaultInstance() : testTimeout_;
        }
      }
      /**
       * <pre>
       * The timeout specified for test actions under this configured target.
       * </pre>
       *
       * <code>.google.protobuf.Duration test_timeout = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> 
          getTestTimeoutFieldBuilder() {
        if (testTimeoutBuilder_ == null) {
          testTimeoutBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>(
                  getTestTimeout(),
                  getParentForChildren(),
                  isClean());
          testTimeout_ = null;
        }
        return testTimeoutBuilder_;
      }

      private com.google.devtools.build.lib.server.FailureDetails.FailureDetail failureDetail_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.server.FailureDetails.FailureDetail, com.google.devtools.build.lib.server.FailureDetails.FailureDetail.Builder, com.google.devtools.build.lib.server.FailureDetails.FailureDetailOrBuilder> failureDetailBuilder_;
      /**
       * <pre>
       * Failure information about the target, only populated if success is false,
       * and sometimes not even then. Equal to one of the ActionExecuted
       * failure_detail fields for one of the root cause ActionExecuted events.
       * </pre>
       *
       * <code>.failure_details.FailureDetail failure_detail = 9;</code>
       * @return Whether the failureDetail field is set.
       */
      public boolean hasFailureDetail() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * Failure information about the target, only populated if success is false,
       * and sometimes not even then. Equal to one of the ActionExecuted
       * failure_detail fields for one of the root cause ActionExecuted events.
       * </pre>
       *
       * <code>.failure_details.FailureDetail failure_detail = 9;</code>
       * @return The failureDetail.
       */
      public com.google.devtools.build.lib.server.FailureDetails.FailureDetail getFailureDetail() {
        if (failureDetailBuilder_ == null) {
          return failureDetail_ == null ? com.google.devtools.build.lib.server.FailureDetails.FailureDetail.getDefaultInstance() : failureDetail_;
        } else {
          return failureDetailBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Failure information about the target, only populated if success is false,
       * and sometimes not even then. Equal to one of the ActionExecuted
       * failure_detail fields for one of the root cause ActionExecuted events.
       * </pre>
       *
       * <code>.failure_details.FailureDetail failure_detail = 9;</code>
       */
      public Builder setFailureDetail(com.google.devtools.build.lib.server.FailureDetails.FailureDetail value) {
        if (failureDetailBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          failureDetail_ = value;
        } else {
          failureDetailBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Failure information about the target, only populated if success is false,
       * and sometimes not even then. Equal to one of the ActionExecuted
       * failure_detail fields for one of the root cause ActionExecuted events.
       * </pre>
       *
       * <code>.failure_details.FailureDetail failure_detail = 9;</code>
       */
      public Builder setFailureDetail(
          com.google.devtools.build.lib.server.FailureDetails.FailureDetail.Builder builderForValue) {
        if (failureDetailBuilder_ == null) {
          failureDetail_ = builderForValue.build();
        } else {
          failureDetailBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Failure information about the target, only populated if success is false,
       * and sometimes not even then. Equal to one of the ActionExecuted
       * failure_detail fields for one of the root cause ActionExecuted events.
       * </pre>
       *
       * <code>.failure_details.FailureDetail failure_detail = 9;</code>
       */
      public Builder mergeFailureDetail(com.google.devtools.build.lib.server.FailureDetails.FailureDetail value) {
        if (failureDetailBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0) &&
            failureDetail_ != null &&
            failureDetail_ != com.google.devtools.build.lib.server.FailureDetails.FailureDetail.getDefaultInstance()) {
            getFailureDetailBuilder().mergeFrom(value);
          } else {
            failureDetail_ = value;
          }
        } else {
          failureDetailBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Failure information about the target, only populated if success is false,
       * and sometimes not even then. Equal to one of the ActionExecuted
       * failure_detail fields for one of the root cause ActionExecuted events.
       * </pre>
       *
       * <code>.failure_details.FailureDetail failure_detail = 9;</code>
       */
      public Builder clearFailureDetail() {
        bitField0_ = (bitField0_ & ~0x00000200);
        failureDetail_ = null;
        if (failureDetailBuilder_ != null) {
          failureDetailBuilder_.dispose();
          failureDetailBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Failure information about the target, only populated if success is false,
       * and sometimes not even then. Equal to one of the ActionExecuted
       * failure_detail fields for one of the root cause ActionExecuted events.
       * </pre>
       *
       * <code>.failure_details.FailureDetail failure_detail = 9;</code>
       */
      public com.google.devtools.build.lib.server.FailureDetails.FailureDetail.Builder getFailureDetailBuilder() {
        bitField0_ |= 0x00000200;
        onChanged();
        return getFailureDetailFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Failure information about the target, only populated if success is false,
       * and sometimes not even then. Equal to one of the ActionExecuted
       * failure_detail fields for one of the root cause ActionExecuted events.
       * </pre>
       *
       * <code>.failure_details.FailureDetail failure_detail = 9;</code>
       */
      public com.google.devtools.build.lib.server.FailureDetails.FailureDetailOrBuilder getFailureDetailOrBuilder() {
        if (failureDetailBuilder_ != null) {
          return failureDetailBuilder_.getMessageOrBuilder();
        } else {
          return failureDetail_ == null ?
              com.google.devtools.build.lib.server.FailureDetails.FailureDetail.getDefaultInstance() : failureDetail_;
        }
      }
      /**
       * <pre>
       * Failure information about the target, only populated if success is false,
       * and sometimes not even then. Equal to one of the ActionExecuted
       * failure_detail fields for one of the root cause ActionExecuted events.
       * </pre>
       *
       * <code>.failure_details.FailureDetail failure_detail = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.server.FailureDetails.FailureDetail, com.google.devtools.build.lib.server.FailureDetails.FailureDetail.Builder, com.google.devtools.build.lib.server.FailureDetails.FailureDetailOrBuilder> 
          getFailureDetailFieldBuilder() {
        if (failureDetailBuilder_ == null) {
          failureDetailBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.server.FailureDetails.FailureDetail, com.google.devtools.build.lib.server.FailureDetails.FailureDetail.Builder, com.google.devtools.build.lib.server.FailureDetails.FailureDetailOrBuilder>(
                  getFailureDetail(),
                  getParentForChildren(),
                  isClean());
          failureDetail_ = null;
        }
        return failureDetailBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:build_event_stream.TargetComplete)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.TargetComplete)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.TestResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The status of this test.
     * </pre>
     *
     * <code>.build_event_stream.TestStatus status = 5;</code>
     * @return The enum numeric value on the wire for status.
     */
    int getStatusValue();
    /**
     * <pre>
     * The status of this test.
     * </pre>
     *
     * <code>.build_event_stream.TestStatus status = 5;</code>
     * @return The status.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus getStatus();

    /**
     * <pre>
     * Additional details about the status of the test. This is intended for
     * user display and must not be parsed.
     * </pre>
     *
     * <code>string status_details = 9;</code>
     * @return The statusDetails.
     */
    java.lang.String getStatusDetails();
    /**
     * <pre>
     * Additional details about the status of the test. This is intended for
     * user display and must not be parsed.
     * </pre>
     *
     * <code>string status_details = 9;</code>
     * @return The bytes for statusDetails.
     */
    com.google.protobuf.ByteString
        getStatusDetailsBytes();

    /**
     * <pre>
     * True, if the reported attempt is taken from the tool's local cache.
     * </pre>
     *
     * <code>bool cached_locally = 4;</code>
     * @return The cachedLocally.
     */
    boolean getCachedLocally();

    /**
     * <pre>
     * Time in milliseconds since the epoch at which the test attempt was started.
     * Note: for cached test results, this is time can be before the start of the
     * build.
     * Deprecated, use `test_attempt_start` instead.
     * TODO(yannic): Remove.
     * </pre>
     *
     * <code>int64 test_attempt_start_millis_epoch = 6 [deprecated = true];</code>
     * @deprecated build_event_stream.TestResult.test_attempt_start_millis_epoch is deprecated.
     *     See bazel/build_event_stream.proto;l=643
     * @return The testAttemptStartMillisEpoch.
     */
    @java.lang.Deprecated long getTestAttemptStartMillisEpoch();

    /**
     * <pre>
     * Time at which the test attempt was started.
     * Note: for cached test results, this is time can be before the start of the
     * build.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp test_attempt_start = 10;</code>
     * @return Whether the testAttemptStart field is set.
     */
    boolean hasTestAttemptStart();
    /**
     * <pre>
     * Time at which the test attempt was started.
     * Note: for cached test results, this is time can be before the start of the
     * build.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp test_attempt_start = 10;</code>
     * @return The testAttemptStart.
     */
    com.google.protobuf.Timestamp getTestAttemptStart();
    /**
     * <pre>
     * Time at which the test attempt was started.
     * Note: for cached test results, this is time can be before the start of the
     * build.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp test_attempt_start = 10;</code>
     */
    com.google.protobuf.TimestampOrBuilder getTestAttemptStartOrBuilder();

    /**
     * <pre>
     * Time the test took to run. For locally cached results, this is the time
     * the cached invocation took when it was invoked.
     * Deprecated, use `test_attempt_duration` instead.
     * TODO(yannic): Remove.
     * </pre>
     *
     * <code>int64 test_attempt_duration_millis = 3 [deprecated = true];</code>
     * @deprecated build_event_stream.TestResult.test_attempt_duration_millis is deprecated.
     *     See bazel/build_event_stream.proto;l=656
     * @return The testAttemptDurationMillis.
     */
    @java.lang.Deprecated long getTestAttemptDurationMillis();

    /**
     * <pre>
     * Time the test took to run. For locally cached results, this is the time
     * the cached invocation took when it was invoked.
     * </pre>
     *
     * <code>.google.protobuf.Duration test_attempt_duration = 11;</code>
     * @return Whether the testAttemptDuration field is set.
     */
    boolean hasTestAttemptDuration();
    /**
     * <pre>
     * Time the test took to run. For locally cached results, this is the time
     * the cached invocation took when it was invoked.
     * </pre>
     *
     * <code>.google.protobuf.Duration test_attempt_duration = 11;</code>
     * @return The testAttemptDuration.
     */
    com.google.protobuf.Duration getTestAttemptDuration();
    /**
     * <pre>
     * Time the test took to run. For locally cached results, this is the time
     * the cached invocation took when it was invoked.
     * </pre>
     *
     * <code>.google.protobuf.Duration test_attempt_duration = 11;</code>
     */
    com.google.protobuf.DurationOrBuilder getTestAttemptDurationOrBuilder();

    /**
     * <pre>
     * Files (logs, test.xml, undeclared outputs, etc) generated by that test
     * action.
     * </pre>
     *
     * <code>repeated .build_event_stream.File test_action_output = 2;</code>
     */
    java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> 
        getTestActionOutputList();
    /**
     * <pre>
     * Files (logs, test.xml, undeclared outputs, etc) generated by that test
     * action.
     * </pre>
     *
     * <code>repeated .build_event_stream.File test_action_output = 2;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getTestActionOutput(int index);
    /**
     * <pre>
     * Files (logs, test.xml, undeclared outputs, etc) generated by that test
     * action.
     * </pre>
     *
     * <code>repeated .build_event_stream.File test_action_output = 2;</code>
     */
    int getTestActionOutputCount();
    /**
     * <pre>
     * Files (logs, test.xml, undeclared outputs, etc) generated by that test
     * action.
     * </pre>
     *
     * <code>repeated .build_event_stream.File test_action_output = 2;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
        getTestActionOutputOrBuilderList();
    /**
     * <pre>
     * Files (logs, test.xml, undeclared outputs, etc) generated by that test
     * action.
     * </pre>
     *
     * <code>repeated .build_event_stream.File test_action_output = 2;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getTestActionOutputOrBuilder(
        int index);

    /**
     * <pre>
     * Warnings generated by that test action.
     * </pre>
     *
     * <code>repeated string warning = 7;</code>
     * @return A list containing the warning.
     */
    java.util.List<java.lang.String>
        getWarningList();
    /**
     * <pre>
     * Warnings generated by that test action.
     * </pre>
     *
     * <code>repeated string warning = 7;</code>
     * @return The count of warning.
     */
    int getWarningCount();
    /**
     * <pre>
     * Warnings generated by that test action.
     * </pre>
     *
     * <code>repeated string warning = 7;</code>
     * @param index The index of the element to return.
     * @return The warning at the given index.
     */
    java.lang.String getWarning(int index);
    /**
     * <pre>
     * Warnings generated by that test action.
     * </pre>
     *
     * <code>repeated string warning = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the warning at the given index.
     */
    com.google.protobuf.ByteString
        getWarningBytes(int index);

    /**
     * <code>.build_event_stream.TestResult.ExecutionInfo execution_info = 8;</code>
     * @return Whether the executionInfo field is set.
     */
    boolean hasExecutionInfo();
    /**
     * <code>.build_event_stream.TestResult.ExecutionInfo execution_info = 8;</code>
     * @return The executionInfo.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo getExecutionInfo();
    /**
     * <code>.build_event_stream.TestResult.ExecutionInfo execution_info = 8;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfoOrBuilder getExecutionInfoOrBuilder();
  }
  /**
   * <pre>
   * Payload on events reporting about individual test action.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.TestResult}
   */
  public static final class TestResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.TestResult)
      TestResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestResult.newBuilder() to construct.
    private TestResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestResult() {
      status_ = 0;
      statusDetails_ = "";
      testActionOutput_ = java.util.Collections.emptyList();
      warning_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestResult_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.Builder.class);
    }

    public interface ExecutionInfoOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.TestResult.ExecutionInfo)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Deprecated, use TargetComplete.test_timeout instead.
       * </pre>
       *
       * <code>int32 timeout_seconds = 1 [deprecated = true];</code>
       * @deprecated build_event_stream.TestResult.ExecutionInfo.timeout_seconds is deprecated.
       *     See bazel/build_event_stream.proto;l=673
       * @return The timeoutSeconds.
       */
      @java.lang.Deprecated int getTimeoutSeconds();

      /**
       * <pre>
       * Name of the strategy to execute this test action (e.g., "local",
       * "remote")
       * </pre>
       *
       * <code>string strategy = 2;</code>
       * @return The strategy.
       */
      java.lang.String getStrategy();
      /**
       * <pre>
       * Name of the strategy to execute this test action (e.g., "local",
       * "remote")
       * </pre>
       *
       * <code>string strategy = 2;</code>
       * @return The bytes for strategy.
       */
      com.google.protobuf.ByteString
          getStrategyBytes();

      /**
       * <pre>
       * True, if the reported attempt was a cache hit in a remote cache.
       * </pre>
       *
       * <code>bool cached_remotely = 6;</code>
       * @return The cachedRemotely.
       */
      boolean getCachedRemotely();

      /**
       * <pre>
       * The exit code of the test action.
       * </pre>
       *
       * <code>int32 exit_code = 7;</code>
       * @return The exitCode.
       */
      int getExitCode();

      /**
       * <pre>
       * The hostname of the machine where the test action was executed (in case
       * of remote execution), if known.
       * </pre>
       *
       * <code>string hostname = 3;</code>
       * @return The hostname.
       */
      java.lang.String getHostname();
      /**
       * <pre>
       * The hostname of the machine where the test action was executed (in case
       * of remote execution), if known.
       * </pre>
       *
       * <code>string hostname = 3;</code>
       * @return The bytes for hostname.
       */
      com.google.protobuf.ByteString
          getHostnameBytes();

      /**
       * <code>.build_event_stream.TestResult.ExecutionInfo.TimingBreakdown timing_breakdown = 4;</code>
       * @return Whether the timingBreakdown field is set.
       */
      boolean hasTimingBreakdown();
      /**
       * <code>.build_event_stream.TestResult.ExecutionInfo.TimingBreakdown timing_breakdown = 4;</code>
       * @return The timingBreakdown.
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown getTimingBreakdown();
      /**
       * <code>.build_event_stream.TestResult.ExecutionInfo.TimingBreakdown timing_breakdown = 4;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdownOrBuilder getTimingBreakdownOrBuilder();

      /**
       * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
       */
      java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage> 
          getResourceUsageList();
      /**
       * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage getResourceUsage(int index);
      /**
       * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
       */
      int getResourceUsageCount();
      /**
       * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
       */
      java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsageOrBuilder> 
          getResourceUsageOrBuilderList();
      /**
       * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsageOrBuilder getResourceUsageOrBuilder(
          int index);
    }
    /**
     * <pre>
     * Message providing optional meta data on the execution of the test action,
     * if available.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.TestResult.ExecutionInfo}
     */
    public static final class ExecutionInfo extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.TestResult.ExecutionInfo)
        ExecutionInfoOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ExecutionInfo.newBuilder() to construct.
      private ExecutionInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ExecutionInfo() {
        strategy_ = "";
        hostname_ = "";
        resourceUsage_ = java.util.Collections.emptyList();
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestResult_ExecutionInfo_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestResult_ExecutionInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.Builder.class);
      }

      public interface TimingBreakdownOrBuilder extends
          // @@protoc_insertion_point(interface_extends:build_event_stream.TestResult.ExecutionInfo.TimingBreakdown)
          com.google.protobuf.MessageOrBuilder {

        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
         */
        java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown> 
            getChildList();
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
         */
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown getChild(int index);
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
         */
        int getChildCount();
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
         */
        java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdownOrBuilder> 
            getChildOrBuilderList();
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
         */
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdownOrBuilder getChildOrBuilder(
            int index);

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

        /**
         * <pre>
         * Deprecated, use `time` instead.
         * TODO(yannic): Remove.
         * </pre>
         *
         * <code>int64 time_millis = 3 [deprecated = true];</code>
         * @deprecated build_event_stream.TestResult.ExecutionInfo.TimingBreakdown.time_millis is deprecated.
         *     See bazel/build_event_stream.proto;l=698
         * @return The timeMillis.
         */
        @java.lang.Deprecated long getTimeMillis();

        /**
         * <code>.google.protobuf.Duration time = 4;</code>
         * @return Whether the time field is set.
         */
        boolean hasTime();
        /**
         * <code>.google.protobuf.Duration time = 4;</code>
         * @return The time.
         */
        com.google.protobuf.Duration getTime();
        /**
         * <code>.google.protobuf.Duration time = 4;</code>
         */
        com.google.protobuf.DurationOrBuilder getTimeOrBuilder();
      }
      /**
       * <pre>
       * Represents a hierarchical timing breakdown of an activity.
       * The top level time should be the total time of the activity.
       * Invariant: `time` &gt;= sum of `time`s of all direct children.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.TestResult.ExecutionInfo.TimingBreakdown}
       */
      public static final class TimingBreakdown extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:build_event_stream.TestResult.ExecutionInfo.TimingBreakdown)
          TimingBreakdownOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use TimingBreakdown.newBuilder() to construct.
        private TimingBreakdown(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private TimingBreakdown() {
          child_ = java.util.Collections.emptyList();
          name_ = "";
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestResult_ExecutionInfo_TimingBreakdown_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestResult_ExecutionInfo_TimingBreakdown_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.Builder.class);
        }

        public static final int CHILD_FIELD_NUMBER = 1;
        @SuppressWarnings("serial")
        private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown> child_;
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
         */
        @java.lang.Override
        public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown> getChildList() {
          return child_;
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdownOrBuilder> 
            getChildOrBuilderList() {
          return child_;
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
         */
        @java.lang.Override
        public int getChildCount() {
          return child_.size();
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
         */
        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown getChild(int index) {
          return child_.get(index);
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
         */
        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdownOrBuilder getChildOrBuilder(
            int index) {
          return child_.get(index);
        }

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

        public static final int TIME_MILLIS_FIELD_NUMBER = 3;
        private long timeMillis_ = 0L;
        /**
         * <pre>
         * Deprecated, use `time` instead.
         * TODO(yannic): Remove.
         * </pre>
         *
         * <code>int64 time_millis = 3 [deprecated = true];</code>
         * @deprecated build_event_stream.TestResult.ExecutionInfo.TimingBreakdown.time_millis is deprecated.
         *     See bazel/build_event_stream.proto;l=698
         * @return The timeMillis.
         */
        @java.lang.Override
        @java.lang.Deprecated public long getTimeMillis() {
          return timeMillis_;
        }

        public static final int TIME_FIELD_NUMBER = 4;
        private com.google.protobuf.Duration time_;
        /**
         * <code>.google.protobuf.Duration time = 4;</code>
         * @return Whether the time field is set.
         */
        @java.lang.Override
        public boolean hasTime() {
          return time_ != null;
        }
        /**
         * <code>.google.protobuf.Duration time = 4;</code>
         * @return The time.
         */
        @java.lang.Override
        public com.google.protobuf.Duration getTime() {
          return time_ == null ? com.google.protobuf.Duration.getDefaultInstance() : time_;
        }
        /**
         * <code>.google.protobuf.Duration time = 4;</code>
         */
        @java.lang.Override
        public com.google.protobuf.DurationOrBuilder getTimeOrBuilder() {
          return time_ == null ? com.google.protobuf.Duration.getDefaultInstance() : time_;
        }

        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 < child_.size(); i++) {
            output.writeMessage(1, child_.get(i));
          }
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
          }
          if (timeMillis_ != 0L) {
            output.writeInt64(3, timeMillis_);
          }
          if (time_ != null) {
            output.writeMessage(4, getTime());
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          for (int i = 0; i < child_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(1, child_.get(i));
          }
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
          }
          if (timeMillis_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt64Size(3, timeMillis_);
          }
          if (time_ != null) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(4, getTime());
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSize = size;
          return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown)) {
            return super.equals(obj);
          }
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown other = (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown) obj;

          if (!getChildList()
              .equals(other.getChildList())) return false;
          if (!getName()
              .equals(other.getName())) return false;
          if (getTimeMillis()
              != other.getTimeMillis()) return false;
          if (hasTime() != other.hasTime()) return false;
          if (hasTime()) {
            if (!getTime()
                .equals(other.getTime())) return false;
          }
          if (!getUnknownFields().equals(other.getUnknownFields())) return false;
          return true;
        }

        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          if (getChildCount() > 0) {
            hash = (37 * hash) + CHILD_FIELD_NUMBER;
            hash = (53 * hash) + getChildList().hashCode();
          }
          hash = (37 * hash) + NAME_FIELD_NUMBER;
          hash = (53 * hash) + getName().hashCode();
          hash = (37 * hash) + TIME_MILLIS_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getTimeMillis());
          if (hasTime()) {
            hash = (37 * hash) + TIME_FIELD_NUMBER;
            hash = (53 * hash) + getTime().hashCode();
          }
          hash = (29 * hash) + getUnknownFields().hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown 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 hierarchical timing breakdown of an activity.
         * The top level time should be the total time of the activity.
         * Invariant: `time` &gt;= sum of `time`s of all direct children.
         * </pre>
         *
         * Protobuf type {@code build_event_stream.TestResult.ExecutionInfo.TimingBreakdown}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:build_event_stream.TestResult.ExecutionInfo.TimingBreakdown)
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdownOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestResult_ExecutionInfo_TimingBreakdown_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestResult_ExecutionInfo_TimingBreakdown_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.Builder.class);
          }

          // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.newBuilder()
          private Builder() {

          }

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

          }
          @java.lang.Override
          public Builder clear() {
            super.clear();
            bitField0_ = 0;
            if (childBuilder_ == null) {
              child_ = java.util.Collections.emptyList();
            } else {
              child_ = null;
              childBuilder_.clear();
            }
            bitField0_ = (bitField0_ & ~0x00000001);
            name_ = "";
            timeMillis_ = 0L;
            time_ = null;
            if (timeBuilder_ != null) {
              timeBuilder_.dispose();
              timeBuilder_ = null;
            }
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestResult_ExecutionInfo_TimingBreakdown_descriptor;
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown getDefaultInstanceForType() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.getDefaultInstance();
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown build() {
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown buildPartial() {
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown(this);
            buildPartialRepeatedFields(result);
            if (bitField0_ != 0) { buildPartial0(result); }
            onBuilt();
            return result;
          }

          private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown result) {
            if (childBuilder_ == null) {
              if (((bitField0_ & 0x00000001) != 0)) {
                child_ = java.util.Collections.unmodifiableList(child_);
                bitField0_ = (bitField0_ & ~0x00000001);
              }
              result.child_ = child_;
            } else {
              result.child_ = childBuilder_.build();
            }
          }

          private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown result) {
            int from_bitField0_ = bitField0_;
            if (((from_bitField0_ & 0x00000002) != 0)) {
              result.name_ = name_;
            }
            if (((from_bitField0_ & 0x00000004) != 0)) {
              result.timeMillis_ = timeMillis_;
            }
            if (((from_bitField0_ & 0x00000008) != 0)) {
              result.time_ = timeBuilder_ == null
                  ? time_
                  : timeBuilder_.build();
            }
          }

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

          public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown other) {
            if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.getDefaultInstance()) return this;
            if (childBuilder_ == null) {
              if (!other.child_.isEmpty()) {
                if (child_.isEmpty()) {
                  child_ = other.child_;
                  bitField0_ = (bitField0_ & ~0x00000001);
                } else {
                  ensureChildIsMutable();
                  child_.addAll(other.child_);
                }
                onChanged();
              }
            } else {
              if (!other.child_.isEmpty()) {
                if (childBuilder_.isEmpty()) {
                  childBuilder_.dispose();
                  childBuilder_ = null;
                  child_ = other.child_;
                  bitField0_ = (bitField0_ & ~0x00000001);
                  childBuilder_ = 
                    com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                       getChildFieldBuilder() : null;
                } else {
                  childBuilder_.addAllMessages(other.child_);
                }
              }
            }
            if (!other.getName().isEmpty()) {
              name_ = other.name_;
              bitField0_ |= 0x00000002;
              onChanged();
            }
            if (other.getTimeMillis() != 0L) {
              setTimeMillis(other.getTimeMillis());
            }
            if (other.hasTime()) {
              mergeTime(other.getTime());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

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

          @java.lang.Override
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 10: {
                    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown m =
                        input.readMessage(
                            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.parser(),
                            extensionRegistry);
                    if (childBuilder_ == null) {
                      ensureChildIsMutable();
                      child_.add(m);
                    } else {
                      childBuilder_.addMessage(m);
                    }
                    break;
                  } // case 10
                  case 18: {
                    name_ = input.readStringRequireUtf8();
                    bitField0_ |= 0x00000002;
                    break;
                  } // case 18
                  case 24: {
                    timeMillis_ = input.readInt64();
                    bitField0_ |= 0x00000004;
                    break;
                  } // case 24
                  case 34: {
                    input.readMessage(
                        getTimeFieldBuilder().getBuilder(),
                        extensionRegistry);
                    bitField0_ |= 0x00000008;
                    break;
                  } // case 34
                  default: {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }
          private int bitField0_;

          private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown> child_ =
            java.util.Collections.emptyList();
          private void ensureChildIsMutable() {
            if (!((bitField0_ & 0x00000001) != 0)) {
              child_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown>(child_);
              bitField0_ |= 0x00000001;
             }
          }

          private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdownOrBuilder> childBuilder_;

          /**
           * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
           */
          public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown> getChildList() {
            if (childBuilder_ == null) {
              return java.util.Collections.unmodifiableList(child_);
            } else {
              return childBuilder_.getMessageList();
            }
          }
          /**
           * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
           */
          public int getChildCount() {
            if (childBuilder_ == null) {
              return child_.size();
            } else {
              return childBuilder_.getCount();
            }
          }
          /**
           * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
           */
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown getChild(int index) {
            if (childBuilder_ == null) {
              return child_.get(index);
            } else {
              return childBuilder_.getMessage(index);
            }
          }
          /**
           * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
           */
          public Builder setChild(
              int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown value) {
            if (childBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureChildIsMutable();
              child_.set(index, value);
              onChanged();
            } else {
              childBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
           */
          public Builder setChild(
              int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.Builder builderForValue) {
            if (childBuilder_ == null) {
              ensureChildIsMutable();
              child_.set(index, builderForValue.build());
              onChanged();
            } else {
              childBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
           */
          public Builder addChild(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown value) {
            if (childBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureChildIsMutable();
              child_.add(value);
              onChanged();
            } else {
              childBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
           */
          public Builder addChild(
              int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown value) {
            if (childBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureChildIsMutable();
              child_.add(index, value);
              onChanged();
            } else {
              childBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
           */
          public Builder addChild(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.Builder builderForValue) {
            if (childBuilder_ == null) {
              ensureChildIsMutable();
              child_.add(builderForValue.build());
              onChanged();
            } else {
              childBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
           */
          public Builder addChild(
              int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.Builder builderForValue) {
            if (childBuilder_ == null) {
              ensureChildIsMutable();
              child_.add(index, builderForValue.build());
              onChanged();
            } else {
              childBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
           */
          public Builder addAllChild(
              java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown> values) {
            if (childBuilder_ == null) {
              ensureChildIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, child_);
              onChanged();
            } else {
              childBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
           */
          public Builder clearChild() {
            if (childBuilder_ == null) {
              child_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000001);
              onChanged();
            } else {
              childBuilder_.clear();
            }
            return this;
          }
          /**
           * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
           */
          public Builder removeChild(int index) {
            if (childBuilder_ == null) {
              ensureChildIsMutable();
              child_.remove(index);
              onChanged();
            } else {
              childBuilder_.remove(index);
            }
            return this;
          }
          /**
           * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
           */
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.Builder getChildBuilder(
              int index) {
            return getChildFieldBuilder().getBuilder(index);
          }
          /**
           * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
           */
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdownOrBuilder getChildOrBuilder(
              int index) {
            if (childBuilder_ == null) {
              return child_.get(index);  } else {
              return childBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
           */
          public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdownOrBuilder> 
               getChildOrBuilderList() {
            if (childBuilder_ != null) {
              return childBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(child_);
            }
          }
          /**
           * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
           */
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.Builder addChildBuilder() {
            return getChildFieldBuilder().addBuilder(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.getDefaultInstance());
          }
          /**
           * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
           */
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.Builder addChildBuilder(
              int index) {
            return getChildFieldBuilder().addBuilder(
                index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.getDefaultInstance());
          }
          /**
           * <code>repeated .build_event_stream.TestResult.ExecutionInfo.TimingBreakdown child = 1;</code>
           */
          public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.Builder> 
               getChildBuilderList() {
            return getChildFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdownOrBuilder> 
              getChildFieldBuilder() {
            if (childBuilder_ == null) {
              childBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdownOrBuilder>(
                      child_,
                      ((bitField0_ & 0x00000001) != 0),
                      getParentForChildren(),
                      isClean());
              child_ = null;
            }
            return childBuilder_;
          }

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

          private long timeMillis_ ;
          /**
           * <pre>
           * Deprecated, use `time` instead.
           * TODO(yannic): Remove.
           * </pre>
           *
           * <code>int64 time_millis = 3 [deprecated = true];</code>
           * @deprecated build_event_stream.TestResult.ExecutionInfo.TimingBreakdown.time_millis is deprecated.
           *     See bazel/build_event_stream.proto;l=698
           * @return The timeMillis.
           */
          @java.lang.Override
          @java.lang.Deprecated public long getTimeMillis() {
            return timeMillis_;
          }
          /**
           * <pre>
           * Deprecated, use `time` instead.
           * TODO(yannic): Remove.
           * </pre>
           *
           * <code>int64 time_millis = 3 [deprecated = true];</code>
           * @deprecated build_event_stream.TestResult.ExecutionInfo.TimingBreakdown.time_millis is deprecated.
           *     See bazel/build_event_stream.proto;l=698
           * @param value The timeMillis to set.
           * @return This builder for chaining.
           */
          @java.lang.Deprecated public Builder setTimeMillis(long value) {
            
            timeMillis_ = value;
            bitField0_ |= 0x00000004;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Deprecated, use `time` instead.
           * TODO(yannic): Remove.
           * </pre>
           *
           * <code>int64 time_millis = 3 [deprecated = true];</code>
           * @deprecated build_event_stream.TestResult.ExecutionInfo.TimingBreakdown.time_millis is deprecated.
           *     See bazel/build_event_stream.proto;l=698
           * @return This builder for chaining.
           */
          @java.lang.Deprecated public Builder clearTimeMillis() {
            bitField0_ = (bitField0_ & ~0x00000004);
            timeMillis_ = 0L;
            onChanged();
            return this;
          }

          private com.google.protobuf.Duration time_;
          private com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> timeBuilder_;
          /**
           * <code>.google.protobuf.Duration time = 4;</code>
           * @return Whether the time field is set.
           */
          public boolean hasTime() {
            return ((bitField0_ & 0x00000008) != 0);
          }
          /**
           * <code>.google.protobuf.Duration time = 4;</code>
           * @return The time.
           */
          public com.google.protobuf.Duration getTime() {
            if (timeBuilder_ == null) {
              return time_ == null ? com.google.protobuf.Duration.getDefaultInstance() : time_;
            } else {
              return timeBuilder_.getMessage();
            }
          }
          /**
           * <code>.google.protobuf.Duration time = 4;</code>
           */
          public Builder setTime(com.google.protobuf.Duration value) {
            if (timeBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              time_ = value;
            } else {
              timeBuilder_.setMessage(value);
            }
            bitField0_ |= 0x00000008;
            onChanged();
            return this;
          }
          /**
           * <code>.google.protobuf.Duration time = 4;</code>
           */
          public Builder setTime(
              com.google.protobuf.Duration.Builder builderForValue) {
            if (timeBuilder_ == null) {
              time_ = builderForValue.build();
            } else {
              timeBuilder_.setMessage(builderForValue.build());
            }
            bitField0_ |= 0x00000008;
            onChanged();
            return this;
          }
          /**
           * <code>.google.protobuf.Duration time = 4;</code>
           */
          public Builder mergeTime(com.google.protobuf.Duration value) {
            if (timeBuilder_ == null) {
              if (((bitField0_ & 0x00000008) != 0) &&
                time_ != null &&
                time_ != com.google.protobuf.Duration.getDefaultInstance()) {
                getTimeBuilder().mergeFrom(value);
              } else {
                time_ = value;
              }
            } else {
              timeBuilder_.mergeFrom(value);
            }
            bitField0_ |= 0x00000008;
            onChanged();
            return this;
          }
          /**
           * <code>.google.protobuf.Duration time = 4;</code>
           */
          public Builder clearTime() {
            bitField0_ = (bitField0_ & ~0x00000008);
            time_ = null;
            if (timeBuilder_ != null) {
              timeBuilder_.dispose();
              timeBuilder_ = null;
            }
            onChanged();
            return this;
          }
          /**
           * <code>.google.protobuf.Duration time = 4;</code>
           */
          public com.google.protobuf.Duration.Builder getTimeBuilder() {
            bitField0_ |= 0x00000008;
            onChanged();
            return getTimeFieldBuilder().getBuilder();
          }
          /**
           * <code>.google.protobuf.Duration time = 4;</code>
           */
          public com.google.protobuf.DurationOrBuilder getTimeOrBuilder() {
            if (timeBuilder_ != null) {
              return timeBuilder_.getMessageOrBuilder();
            } else {
              return time_ == null ?
                  com.google.protobuf.Duration.getDefaultInstance() : time_;
            }
          }
          /**
           * <code>.google.protobuf.Duration time = 4;</code>
           */
          private com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> 
              getTimeFieldBuilder() {
            if (timeBuilder_ == null) {
              timeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>(
                      getTime(),
                      getParentForChildren(),
                      isClean());
              time_ = null;
            }
            return timeBuilder_;
          }
          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

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


          // @@protoc_insertion_point(builder_scope:build_event_stream.TestResult.ExecutionInfo.TimingBreakdown)
        }

        // @@protoc_insertion_point(class_scope:build_event_stream.TestResult.ExecutionInfo.TimingBreakdown)
        private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown();
        }

        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }

      }

      public interface ResourceUsageOrBuilder extends
          // @@protoc_insertion_point(interface_extends:build_event_stream.TestResult.ExecutionInfo.ResourceUsage)
          com.google.protobuf.MessageOrBuilder {

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

        /**
         * <code>int64 value = 2;</code>
         * @return The value.
         */
        long getValue();
      }
      /**
       * Protobuf type {@code build_event_stream.TestResult.ExecutionInfo.ResourceUsage}
       */
      public static final class ResourceUsage extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:build_event_stream.TestResult.ExecutionInfo.ResourceUsage)
          ResourceUsageOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use ResourceUsage.newBuilder() to construct.
        private ResourceUsage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private ResourceUsage() {
          name_ = "";
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestResult_ExecutionInfo_ResourceUsage_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestResult_ExecutionInfo_ResourceUsage_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage.Builder.class);
        }

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

        public static final int VALUE_FIELD_NUMBER = 2;
        private long value_ = 0L;
        /**
         * <code>int64 value = 2;</code>
         * @return The value.
         */
        @java.lang.Override
        public long getValue() {
          return value_;
        }

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

          memoizedIsInitialized = 1;
          return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
          }
          if (value_ != 0L) {
            output.writeInt64(2, value_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
          }
          if (value_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt64Size(2, value_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSize = size;
          return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage)) {
            return super.equals(obj);
          }
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage other = (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage) obj;

          if (!getName()
              .equals(other.getName())) return false;
          if (getValue()
              != other.getValue()) return false;
          if (!getUnknownFields().equals(other.getUnknownFields())) return false;
          return true;
        }

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

        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage 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 build_event_stream.TestResult.ExecutionInfo.ResourceUsage}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:build_event_stream.TestResult.ExecutionInfo.ResourceUsage)
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsageOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestResult_ExecutionInfo_ResourceUsage_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestResult_ExecutionInfo_ResourceUsage_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage.Builder.class);
          }

          // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage.newBuilder()
          private Builder() {

          }

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

          }
          @java.lang.Override
          public Builder clear() {
            super.clear();
            bitField0_ = 0;
            name_ = "";
            value_ = 0L;
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestResult_ExecutionInfo_ResourceUsage_descriptor;
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage getDefaultInstanceForType() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage.getDefaultInstance();
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage build() {
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage buildPartial() {
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage(this);
            if (bitField0_ != 0) { buildPartial0(result); }
            onBuilt();
            return result;
          }

          private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage result) {
            int from_bitField0_ = bitField0_;
            if (((from_bitField0_ & 0x00000001) != 0)) {
              result.name_ = name_;
            }
            if (((from_bitField0_ & 0x00000002) != 0)) {
              result.value_ = value_;
            }
          }

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

          public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage other) {
            if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage.getDefaultInstance()) return this;
            if (!other.getName().isEmpty()) {
              name_ = other.name_;
              bitField0_ |= 0x00000001;
              onChanged();
            }
            if (other.getValue() != 0L) {
              setValue(other.getValue());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

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

          @java.lang.Override
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 10: {
                    name_ = input.readStringRequireUtf8();
                    bitField0_ |= 0x00000001;
                    break;
                  } // case 10
                  case 16: {
                    value_ = input.readInt64();
                    bitField0_ |= 0x00000002;
                    break;
                  } // case 16
                  default: {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }
          private int bitField0_;

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

          private long value_ ;
          /**
           * <code>int64 value = 2;</code>
           * @return The value.
           */
          @java.lang.Override
          public long getValue() {
            return value_;
          }
          /**
           * <code>int64 value = 2;</code>
           * @param value The value to set.
           * @return This builder for chaining.
           */
          public Builder setValue(long value) {
            
            value_ = value;
            bitField0_ |= 0x00000002;
            onChanged();
            return this;
          }
          /**
           * <code>int64 value = 2;</code>
           * @return This builder for chaining.
           */
          public Builder clearValue() {
            bitField0_ = (bitField0_ & ~0x00000002);
            value_ = 0L;
            onChanged();
            return this;
          }
          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

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


          // @@protoc_insertion_point(builder_scope:build_event_stream.TestResult.ExecutionInfo.ResourceUsage)
        }

        // @@protoc_insertion_point(class_scope:build_event_stream.TestResult.ExecutionInfo.ResourceUsage)
        private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage();
        }

        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }

      }

      public static final int TIMEOUT_SECONDS_FIELD_NUMBER = 1;
      private int timeoutSeconds_ = 0;
      /**
       * <pre>
       * Deprecated, use TargetComplete.test_timeout instead.
       * </pre>
       *
       * <code>int32 timeout_seconds = 1 [deprecated = true];</code>
       * @deprecated build_event_stream.TestResult.ExecutionInfo.timeout_seconds is deprecated.
       *     See bazel/build_event_stream.proto;l=673
       * @return The timeoutSeconds.
       */
      @java.lang.Override
      @java.lang.Deprecated public int getTimeoutSeconds() {
        return timeoutSeconds_;
      }

      public static final int STRATEGY_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private volatile java.lang.Object strategy_ = "";
      /**
       * <pre>
       * Name of the strategy to execute this test action (e.g., "local",
       * "remote")
       * </pre>
       *
       * <code>string strategy = 2;</code>
       * @return The strategy.
       */
      @java.lang.Override
      public java.lang.String getStrategy() {
        java.lang.Object ref = strategy_;
        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();
          strategy_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * Name of the strategy to execute this test action (e.g., "local",
       * "remote")
       * </pre>
       *
       * <code>string strategy = 2;</code>
       * @return The bytes for strategy.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getStrategyBytes() {
        java.lang.Object ref = strategy_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          strategy_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int CACHED_REMOTELY_FIELD_NUMBER = 6;
      private boolean cachedRemotely_ = false;
      /**
       * <pre>
       * True, if the reported attempt was a cache hit in a remote cache.
       * </pre>
       *
       * <code>bool cached_remotely = 6;</code>
       * @return The cachedRemotely.
       */
      @java.lang.Override
      public boolean getCachedRemotely() {
        return cachedRemotely_;
      }

      public static final int EXIT_CODE_FIELD_NUMBER = 7;
      private int exitCode_ = 0;
      /**
       * <pre>
       * The exit code of the test action.
       * </pre>
       *
       * <code>int32 exit_code = 7;</code>
       * @return The exitCode.
       */
      @java.lang.Override
      public int getExitCode() {
        return exitCode_;
      }

      public static final int HOSTNAME_FIELD_NUMBER = 3;
      @SuppressWarnings("serial")
      private volatile java.lang.Object hostname_ = "";
      /**
       * <pre>
       * The hostname of the machine where the test action was executed (in case
       * of remote execution), if known.
       * </pre>
       *
       * <code>string hostname = 3;</code>
       * @return The hostname.
       */
      @java.lang.Override
      public java.lang.String getHostname() {
        java.lang.Object ref = hostname_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          hostname_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * The hostname of the machine where the test action was executed (in case
       * of remote execution), if known.
       * </pre>
       *
       * <code>string hostname = 3;</code>
       * @return The bytes for hostname.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getHostnameBytes() {
        java.lang.Object ref = hostname_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          hostname_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int TIMING_BREAKDOWN_FIELD_NUMBER = 4;
      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown timingBreakdown_;
      /**
       * <code>.build_event_stream.TestResult.ExecutionInfo.TimingBreakdown timing_breakdown = 4;</code>
       * @return Whether the timingBreakdown field is set.
       */
      @java.lang.Override
      public boolean hasTimingBreakdown() {
        return timingBreakdown_ != null;
      }
      /**
       * <code>.build_event_stream.TestResult.ExecutionInfo.TimingBreakdown timing_breakdown = 4;</code>
       * @return The timingBreakdown.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown getTimingBreakdown() {
        return timingBreakdown_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.getDefaultInstance() : timingBreakdown_;
      }
      /**
       * <code>.build_event_stream.TestResult.ExecutionInfo.TimingBreakdown timing_breakdown = 4;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdownOrBuilder getTimingBreakdownOrBuilder() {
        return timingBreakdown_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.getDefaultInstance() : timingBreakdown_;
      }

      public static final int RESOURCE_USAGE_FIELD_NUMBER = 5;
      @SuppressWarnings("serial")
      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage> resourceUsage_;
      /**
       * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
       */
      @java.lang.Override
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage> getResourceUsageList() {
        return resourceUsage_;
      }
      /**
       * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsageOrBuilder> 
          getResourceUsageOrBuilderList() {
        return resourceUsage_;
      }
      /**
       * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
       */
      @java.lang.Override
      public int getResourceUsageCount() {
        return resourceUsage_.size();
      }
      /**
       * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage getResourceUsage(int index) {
        return resourceUsage_.get(index);
      }
      /**
       * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsageOrBuilder getResourceUsageOrBuilder(
          int index) {
        return resourceUsage_.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 (timeoutSeconds_ != 0) {
          output.writeInt32(1, timeoutSeconds_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(strategy_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, strategy_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(hostname_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, hostname_);
        }
        if (timingBreakdown_ != null) {
          output.writeMessage(4, getTimingBreakdown());
        }
        for (int i = 0; i < resourceUsage_.size(); i++) {
          output.writeMessage(5, resourceUsage_.get(i));
        }
        if (cachedRemotely_ != false) {
          output.writeBool(6, cachedRemotely_);
        }
        if (exitCode_ != 0) {
          output.writeInt32(7, exitCode_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (timeoutSeconds_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, timeoutSeconds_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(strategy_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, strategy_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(hostname_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, hostname_);
        }
        if (timingBreakdown_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, getTimingBreakdown());
        }
        for (int i = 0; i < resourceUsage_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, resourceUsage_.get(i));
        }
        if (cachedRemotely_ != false) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(6, cachedRemotely_);
        }
        if (exitCode_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(7, exitCode_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (getTimeoutSeconds()
            != other.getTimeoutSeconds()) return false;
        if (!getStrategy()
            .equals(other.getStrategy())) return false;
        if (getCachedRemotely()
            != other.getCachedRemotely()) return false;
        if (getExitCode()
            != other.getExitCode()) return false;
        if (!getHostname()
            .equals(other.getHostname())) return false;
        if (hasTimingBreakdown() != other.hasTimingBreakdown()) return false;
        if (hasTimingBreakdown()) {
          if (!getTimingBreakdown()
              .equals(other.getTimingBreakdown())) return false;
        }
        if (!getResourceUsageList()
            .equals(other.getResourceUsageList())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + TIMEOUT_SECONDS_FIELD_NUMBER;
        hash = (53 * hash) + getTimeoutSeconds();
        hash = (37 * hash) + STRATEGY_FIELD_NUMBER;
        hash = (53 * hash) + getStrategy().hashCode();
        hash = (37 * hash) + CACHED_REMOTELY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getCachedRemotely());
        hash = (37 * hash) + EXIT_CODE_FIELD_NUMBER;
        hash = (53 * hash) + getExitCode();
        hash = (37 * hash) + HOSTNAME_FIELD_NUMBER;
        hash = (53 * hash) + getHostname().hashCode();
        if (hasTimingBreakdown()) {
          hash = (37 * hash) + TIMING_BREAKDOWN_FIELD_NUMBER;
          hash = (53 * hash) + getTimingBreakdown().hashCode();
        }
        if (getResourceUsageCount() > 0) {
          hash = (37 * hash) + RESOURCE_USAGE_FIELD_NUMBER;
          hash = (53 * hash) + getResourceUsageList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo 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.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo 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>
       * Message providing optional meta data on the execution of the test action,
       * if available.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.TestResult.ExecutionInfo}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.TestResult.ExecutionInfo)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfoOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestResult_ExecutionInfo_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestResult_ExecutionInfo_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          timeoutSeconds_ = 0;
          strategy_ = "";
          cachedRemotely_ = false;
          exitCode_ = 0;
          hostname_ = "";
          timingBreakdown_ = null;
          if (timingBreakdownBuilder_ != null) {
            timingBreakdownBuilder_.dispose();
            timingBreakdownBuilder_ = null;
          }
          if (resourceUsageBuilder_ == null) {
            resourceUsage_ = java.util.Collections.emptyList();
          } else {
            resourceUsage_ = null;
            resourceUsageBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000040);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestResult_ExecutionInfo_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo(this);
          buildPartialRepeatedFields(result);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo result) {
          if (resourceUsageBuilder_ == null) {
            if (((bitField0_ & 0x00000040) != 0)) {
              resourceUsage_ = java.util.Collections.unmodifiableList(resourceUsage_);
              bitField0_ = (bitField0_ & ~0x00000040);
            }
            result.resourceUsage_ = resourceUsage_;
          } else {
            result.resourceUsage_ = resourceUsageBuilder_.build();
          }
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.timeoutSeconds_ = timeoutSeconds_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.strategy_ = strategy_;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.cachedRemotely_ = cachedRemotely_;
          }
          if (((from_bitField0_ & 0x00000008) != 0)) {
            result.exitCode_ = exitCode_;
          }
          if (((from_bitField0_ & 0x00000010) != 0)) {
            result.hostname_ = hostname_;
          }
          if (((from_bitField0_ & 0x00000020) != 0)) {
            result.timingBreakdown_ = timingBreakdownBuilder_ == null
                ? timingBreakdown_
                : timingBreakdownBuilder_.build();
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.getDefaultInstance()) return this;
          if (other.getTimeoutSeconds() != 0) {
            setTimeoutSeconds(other.getTimeoutSeconds());
          }
          if (!other.getStrategy().isEmpty()) {
            strategy_ = other.strategy_;
            bitField0_ |= 0x00000002;
            onChanged();
          }
          if (other.getCachedRemotely() != false) {
            setCachedRemotely(other.getCachedRemotely());
          }
          if (other.getExitCode() != 0) {
            setExitCode(other.getExitCode());
          }
          if (!other.getHostname().isEmpty()) {
            hostname_ = other.hostname_;
            bitField0_ |= 0x00000010;
            onChanged();
          }
          if (other.hasTimingBreakdown()) {
            mergeTimingBreakdown(other.getTimingBreakdown());
          }
          if (resourceUsageBuilder_ == null) {
            if (!other.resourceUsage_.isEmpty()) {
              if (resourceUsage_.isEmpty()) {
                resourceUsage_ = other.resourceUsage_;
                bitField0_ = (bitField0_ & ~0x00000040);
              } else {
                ensureResourceUsageIsMutable();
                resourceUsage_.addAll(other.resourceUsage_);
              }
              onChanged();
            }
          } else {
            if (!other.resourceUsage_.isEmpty()) {
              if (resourceUsageBuilder_.isEmpty()) {
                resourceUsageBuilder_.dispose();
                resourceUsageBuilder_ = null;
                resourceUsage_ = other.resourceUsage_;
                bitField0_ = (bitField0_ & ~0x00000040);
                resourceUsageBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getResourceUsageFieldBuilder() : null;
              } else {
                resourceUsageBuilder_.addAllMessages(other.resourceUsage_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  timeoutSeconds_ = input.readInt32();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 18: {
                  strategy_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                case 26: {
                  hostname_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000010;
                  break;
                } // case 26
                case 34: {
                  input.readMessage(
                      getTimingBreakdownFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000020;
                  break;
                } // case 34
                case 42: {
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage m =
                      input.readMessage(
                          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage.parser(),
                          extensionRegistry);
                  if (resourceUsageBuilder_ == null) {
                    ensureResourceUsageIsMutable();
                    resourceUsage_.add(m);
                  } else {
                    resourceUsageBuilder_.addMessage(m);
                  }
                  break;
                } // case 42
                case 48: {
                  cachedRemotely_ = input.readBool();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 48
                case 56: {
                  exitCode_ = input.readInt32();
                  bitField0_ |= 0x00000008;
                  break;
                } // case 56
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private int timeoutSeconds_ ;
        /**
         * <pre>
         * Deprecated, use TargetComplete.test_timeout instead.
         * </pre>
         *
         * <code>int32 timeout_seconds = 1 [deprecated = true];</code>
         * @deprecated build_event_stream.TestResult.ExecutionInfo.timeout_seconds is deprecated.
         *     See bazel/build_event_stream.proto;l=673
         * @return The timeoutSeconds.
         */
        @java.lang.Override
        @java.lang.Deprecated public int getTimeoutSeconds() {
          return timeoutSeconds_;
        }
        /**
         * <pre>
         * Deprecated, use TargetComplete.test_timeout instead.
         * </pre>
         *
         * <code>int32 timeout_seconds = 1 [deprecated = true];</code>
         * @deprecated build_event_stream.TestResult.ExecutionInfo.timeout_seconds is deprecated.
         *     See bazel/build_event_stream.proto;l=673
         * @param value The timeoutSeconds to set.
         * @return This builder for chaining.
         */
        @java.lang.Deprecated public Builder setTimeoutSeconds(int value) {
          
          timeoutSeconds_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Deprecated, use TargetComplete.test_timeout instead.
         * </pre>
         *
         * <code>int32 timeout_seconds = 1 [deprecated = true];</code>
         * @deprecated build_event_stream.TestResult.ExecutionInfo.timeout_seconds is deprecated.
         *     See bazel/build_event_stream.proto;l=673
         * @return This builder for chaining.
         */
        @java.lang.Deprecated public Builder clearTimeoutSeconds() {
          bitField0_ = (bitField0_ & ~0x00000001);
          timeoutSeconds_ = 0;
          onChanged();
          return this;
        }

        private java.lang.Object strategy_ = "";
        /**
         * <pre>
         * Name of the strategy to execute this test action (e.g., "local",
         * "remote")
         * </pre>
         *
         * <code>string strategy = 2;</code>
         * @return The strategy.
         */
        public java.lang.String getStrategy() {
          java.lang.Object ref = strategy_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            strategy_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * Name of the strategy to execute this test action (e.g., "local",
         * "remote")
         * </pre>
         *
         * <code>string strategy = 2;</code>
         * @return The bytes for strategy.
         */
        public com.google.protobuf.ByteString
            getStrategyBytes() {
          java.lang.Object ref = strategy_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            strategy_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * Name of the strategy to execute this test action (e.g., "local",
         * "remote")
         * </pre>
         *
         * <code>string strategy = 2;</code>
         * @param value The strategy to set.
         * @return This builder for chaining.
         */
        public Builder setStrategy(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          strategy_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Name of the strategy to execute this test action (e.g., "local",
         * "remote")
         * </pre>
         *
         * <code>string strategy = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearStrategy() {
          strategy_ = getDefaultInstance().getStrategy();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Name of the strategy to execute this test action (e.g., "local",
         * "remote")
         * </pre>
         *
         * <code>string strategy = 2;</code>
         * @param value The bytes for strategy to set.
         * @return This builder for chaining.
         */
        public Builder setStrategyBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          strategy_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }

        private boolean cachedRemotely_ ;
        /**
         * <pre>
         * True, if the reported attempt was a cache hit in a remote cache.
         * </pre>
         *
         * <code>bool cached_remotely = 6;</code>
         * @return The cachedRemotely.
         */
        @java.lang.Override
        public boolean getCachedRemotely() {
          return cachedRemotely_;
        }
        /**
         * <pre>
         * True, if the reported attempt was a cache hit in a remote cache.
         * </pre>
         *
         * <code>bool cached_remotely = 6;</code>
         * @param value The cachedRemotely to set.
         * @return This builder for chaining.
         */
        public Builder setCachedRemotely(boolean value) {
          
          cachedRemotely_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * True, if the reported attempt was a cache hit in a remote cache.
         * </pre>
         *
         * <code>bool cached_remotely = 6;</code>
         * @return This builder for chaining.
         */
        public Builder clearCachedRemotely() {
          bitField0_ = (bitField0_ & ~0x00000004);
          cachedRemotely_ = false;
          onChanged();
          return this;
        }

        private int exitCode_ ;
        /**
         * <pre>
         * The exit code of the test action.
         * </pre>
         *
         * <code>int32 exit_code = 7;</code>
         * @return The exitCode.
         */
        @java.lang.Override
        public int getExitCode() {
          return exitCode_;
        }
        /**
         * <pre>
         * The exit code of the test action.
         * </pre>
         *
         * <code>int32 exit_code = 7;</code>
         * @param value The exitCode to set.
         * @return This builder for chaining.
         */
        public Builder setExitCode(int value) {
          
          exitCode_ = value;
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The exit code of the test action.
         * </pre>
         *
         * <code>int32 exit_code = 7;</code>
         * @return This builder for chaining.
         */
        public Builder clearExitCode() {
          bitField0_ = (bitField0_ & ~0x00000008);
          exitCode_ = 0;
          onChanged();
          return this;
        }

        private java.lang.Object hostname_ = "";
        /**
         * <pre>
         * The hostname of the machine where the test action was executed (in case
         * of remote execution), if known.
         * </pre>
         *
         * <code>string hostname = 3;</code>
         * @return The hostname.
         */
        public java.lang.String getHostname() {
          java.lang.Object ref = hostname_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            hostname_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * The hostname of the machine where the test action was executed (in case
         * of remote execution), if known.
         * </pre>
         *
         * <code>string hostname = 3;</code>
         * @return The bytes for hostname.
         */
        public com.google.protobuf.ByteString
            getHostnameBytes() {
          java.lang.Object ref = hostname_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            hostname_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * The hostname of the machine where the test action was executed (in case
         * of remote execution), if known.
         * </pre>
         *
         * <code>string hostname = 3;</code>
         * @param value The hostname to set.
         * @return This builder for chaining.
         */
        public Builder setHostname(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          hostname_ = value;
          bitField0_ |= 0x00000010;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The hostname of the machine where the test action was executed (in case
         * of remote execution), if known.
         * </pre>
         *
         * <code>string hostname = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearHostname() {
          hostname_ = getDefaultInstance().getHostname();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The hostname of the machine where the test action was executed (in case
         * of remote execution), if known.
         * </pre>
         *
         * <code>string hostname = 3;</code>
         * @param value The bytes for hostname to set.
         * @return This builder for chaining.
         */
        public Builder setHostnameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          hostname_ = value;
          bitField0_ |= 0x00000010;
          onChanged();
          return this;
        }

        private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown timingBreakdown_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdownOrBuilder> timingBreakdownBuilder_;
        /**
         * <code>.build_event_stream.TestResult.ExecutionInfo.TimingBreakdown timing_breakdown = 4;</code>
         * @return Whether the timingBreakdown field is set.
         */
        public boolean hasTimingBreakdown() {
          return ((bitField0_ & 0x00000020) != 0);
        }
        /**
         * <code>.build_event_stream.TestResult.ExecutionInfo.TimingBreakdown timing_breakdown = 4;</code>
         * @return The timingBreakdown.
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown getTimingBreakdown() {
          if (timingBreakdownBuilder_ == null) {
            return timingBreakdown_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.getDefaultInstance() : timingBreakdown_;
          } else {
            return timingBreakdownBuilder_.getMessage();
          }
        }
        /**
         * <code>.build_event_stream.TestResult.ExecutionInfo.TimingBreakdown timing_breakdown = 4;</code>
         */
        public Builder setTimingBreakdown(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown value) {
          if (timingBreakdownBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            timingBreakdown_ = value;
          } else {
            timingBreakdownBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000020;
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.TestResult.ExecutionInfo.TimingBreakdown timing_breakdown = 4;</code>
         */
        public Builder setTimingBreakdown(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.Builder builderForValue) {
          if (timingBreakdownBuilder_ == null) {
            timingBreakdown_ = builderForValue.build();
          } else {
            timingBreakdownBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000020;
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.TestResult.ExecutionInfo.TimingBreakdown timing_breakdown = 4;</code>
         */
        public Builder mergeTimingBreakdown(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown value) {
          if (timingBreakdownBuilder_ == null) {
            if (((bitField0_ & 0x00000020) != 0) &&
              timingBreakdown_ != null &&
              timingBreakdown_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.getDefaultInstance()) {
              getTimingBreakdownBuilder().mergeFrom(value);
            } else {
              timingBreakdown_ = value;
            }
          } else {
            timingBreakdownBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000020;
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.TestResult.ExecutionInfo.TimingBreakdown timing_breakdown = 4;</code>
         */
        public Builder clearTimingBreakdown() {
          bitField0_ = (bitField0_ & ~0x00000020);
          timingBreakdown_ = null;
          if (timingBreakdownBuilder_ != null) {
            timingBreakdownBuilder_.dispose();
            timingBreakdownBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.TestResult.ExecutionInfo.TimingBreakdown timing_breakdown = 4;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.Builder getTimingBreakdownBuilder() {
          bitField0_ |= 0x00000020;
          onChanged();
          return getTimingBreakdownFieldBuilder().getBuilder();
        }
        /**
         * <code>.build_event_stream.TestResult.ExecutionInfo.TimingBreakdown timing_breakdown = 4;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdownOrBuilder getTimingBreakdownOrBuilder() {
          if (timingBreakdownBuilder_ != null) {
            return timingBreakdownBuilder_.getMessageOrBuilder();
          } else {
            return timingBreakdown_ == null ?
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.getDefaultInstance() : timingBreakdown_;
          }
        }
        /**
         * <code>.build_event_stream.TestResult.ExecutionInfo.TimingBreakdown timing_breakdown = 4;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdownOrBuilder> 
            getTimingBreakdownFieldBuilder() {
          if (timingBreakdownBuilder_ == null) {
            timingBreakdownBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdown.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.TimingBreakdownOrBuilder>(
                    getTimingBreakdown(),
                    getParentForChildren(),
                    isClean());
            timingBreakdown_ = null;
          }
          return timingBreakdownBuilder_;
        }

        private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage> resourceUsage_ =
          java.util.Collections.emptyList();
        private void ensureResourceUsageIsMutable() {
          if (!((bitField0_ & 0x00000040) != 0)) {
            resourceUsage_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage>(resourceUsage_);
            bitField0_ |= 0x00000040;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsageOrBuilder> resourceUsageBuilder_;

        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
         */
        public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage> getResourceUsageList() {
          if (resourceUsageBuilder_ == null) {
            return java.util.Collections.unmodifiableList(resourceUsage_);
          } else {
            return resourceUsageBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
         */
        public int getResourceUsageCount() {
          if (resourceUsageBuilder_ == null) {
            return resourceUsage_.size();
          } else {
            return resourceUsageBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage getResourceUsage(int index) {
          if (resourceUsageBuilder_ == null) {
            return resourceUsage_.get(index);
          } else {
            return resourceUsageBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
         */
        public Builder setResourceUsage(
            int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage value) {
          if (resourceUsageBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureResourceUsageIsMutable();
            resourceUsage_.set(index, value);
            onChanged();
          } else {
            resourceUsageBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
         */
        public Builder setResourceUsage(
            int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage.Builder builderForValue) {
          if (resourceUsageBuilder_ == null) {
            ensureResourceUsageIsMutable();
            resourceUsage_.set(index, builderForValue.build());
            onChanged();
          } else {
            resourceUsageBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
         */
        public Builder addResourceUsage(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage value) {
          if (resourceUsageBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureResourceUsageIsMutable();
            resourceUsage_.add(value);
            onChanged();
          } else {
            resourceUsageBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
         */
        public Builder addResourceUsage(
            int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage value) {
          if (resourceUsageBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureResourceUsageIsMutable();
            resourceUsage_.add(index, value);
            onChanged();
          } else {
            resourceUsageBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
         */
        public Builder addResourceUsage(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage.Builder builderForValue) {
          if (resourceUsageBuilder_ == null) {
            ensureResourceUsageIsMutable();
            resourceUsage_.add(builderForValue.build());
            onChanged();
          } else {
            resourceUsageBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
         */
        public Builder addResourceUsage(
            int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage.Builder builderForValue) {
          if (resourceUsageBuilder_ == null) {
            ensureResourceUsageIsMutable();
            resourceUsage_.add(index, builderForValue.build());
            onChanged();
          } else {
            resourceUsageBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
         */
        public Builder addAllResourceUsage(
            java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage> values) {
          if (resourceUsageBuilder_ == null) {
            ensureResourceUsageIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, resourceUsage_);
            onChanged();
          } else {
            resourceUsageBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
         */
        public Builder clearResourceUsage() {
          if (resourceUsageBuilder_ == null) {
            resourceUsage_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000040);
            onChanged();
          } else {
            resourceUsageBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
         */
        public Builder removeResourceUsage(int index) {
          if (resourceUsageBuilder_ == null) {
            ensureResourceUsageIsMutable();
            resourceUsage_.remove(index);
            onChanged();
          } else {
            resourceUsageBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage.Builder getResourceUsageBuilder(
            int index) {
          return getResourceUsageFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsageOrBuilder getResourceUsageOrBuilder(
            int index) {
          if (resourceUsageBuilder_ == null) {
            return resourceUsage_.get(index);  } else {
            return resourceUsageBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
         */
        public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsageOrBuilder> 
             getResourceUsageOrBuilderList() {
          if (resourceUsageBuilder_ != null) {
            return resourceUsageBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(resourceUsage_);
          }
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage.Builder addResourceUsageBuilder() {
          return getResourceUsageFieldBuilder().addBuilder(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage.getDefaultInstance());
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage.Builder addResourceUsageBuilder(
            int index) {
          return getResourceUsageFieldBuilder().addBuilder(
              index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage.getDefaultInstance());
        }
        /**
         * <code>repeated .build_event_stream.TestResult.ExecutionInfo.ResourceUsage resource_usage = 5;</code>
         */
        public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage.Builder> 
             getResourceUsageBuilderList() {
          return getResourceUsageFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsageOrBuilder> 
            getResourceUsageFieldBuilder() {
          if (resourceUsageBuilder_ == null) {
            resourceUsageBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsage.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.ResourceUsageOrBuilder>(
                    resourceUsage_,
                    ((bitField0_ & 0x00000040) != 0),
                    getParentForChildren(),
                    isClean());
            resourceUsage_ = null;
          }
          return resourceUsageBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.TestResult.ExecutionInfo)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.TestResult.ExecutionInfo)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int STATUS_FIELD_NUMBER = 5;
    private int status_ = 0;
    /**
     * <pre>
     * The status of this test.
     * </pre>
     *
     * <code>.build_event_stream.TestStatus status = 5;</code>
     * @return The enum numeric value on the wire for status.
     */
    @java.lang.Override public int getStatusValue() {
      return status_;
    }
    /**
     * <pre>
     * The status of this test.
     * </pre>
     *
     * <code>.build_event_stream.TestStatus status = 5;</code>
     * @return The status.
     */
    @java.lang.Override public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus getStatus() {
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus result = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus.forNumber(status_);
      return result == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus.UNRECOGNIZED : result;
    }

    public static final int STATUS_DETAILS_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private volatile java.lang.Object statusDetails_ = "";
    /**
     * <pre>
     * Additional details about the status of the test. This is intended for
     * user display and must not be parsed.
     * </pre>
     *
     * <code>string status_details = 9;</code>
     * @return The statusDetails.
     */
    @java.lang.Override
    public java.lang.String getStatusDetails() {
      java.lang.Object ref = statusDetails_;
      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();
        statusDetails_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Additional details about the status of the test. This is intended for
     * user display and must not be parsed.
     * </pre>
     *
     * <code>string status_details = 9;</code>
     * @return The bytes for statusDetails.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStatusDetailsBytes() {
      java.lang.Object ref = statusDetails_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        statusDetails_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CACHED_LOCALLY_FIELD_NUMBER = 4;
    private boolean cachedLocally_ = false;
    /**
     * <pre>
     * True, if the reported attempt is taken from the tool's local cache.
     * </pre>
     *
     * <code>bool cached_locally = 4;</code>
     * @return The cachedLocally.
     */
    @java.lang.Override
    public boolean getCachedLocally() {
      return cachedLocally_;
    }

    public static final int TEST_ATTEMPT_START_MILLIS_EPOCH_FIELD_NUMBER = 6;
    private long testAttemptStartMillisEpoch_ = 0L;
    /**
     * <pre>
     * Time in milliseconds since the epoch at which the test attempt was started.
     * Note: for cached test results, this is time can be before the start of the
     * build.
     * Deprecated, use `test_attempt_start` instead.
     * TODO(yannic): Remove.
     * </pre>
     *
     * <code>int64 test_attempt_start_millis_epoch = 6 [deprecated = true];</code>
     * @deprecated build_event_stream.TestResult.test_attempt_start_millis_epoch is deprecated.
     *     See bazel/build_event_stream.proto;l=643
     * @return The testAttemptStartMillisEpoch.
     */
    @java.lang.Override
    @java.lang.Deprecated public long getTestAttemptStartMillisEpoch() {
      return testAttemptStartMillisEpoch_;
    }

    public static final int TEST_ATTEMPT_START_FIELD_NUMBER = 10;
    private com.google.protobuf.Timestamp testAttemptStart_;
    /**
     * <pre>
     * Time at which the test attempt was started.
     * Note: for cached test results, this is time can be before the start of the
     * build.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp test_attempt_start = 10;</code>
     * @return Whether the testAttemptStart field is set.
     */
    @java.lang.Override
    public boolean hasTestAttemptStart() {
      return testAttemptStart_ != null;
    }
    /**
     * <pre>
     * Time at which the test attempt was started.
     * Note: for cached test results, this is time can be before the start of the
     * build.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp test_attempt_start = 10;</code>
     * @return The testAttemptStart.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getTestAttemptStart() {
      return testAttemptStart_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : testAttemptStart_;
    }
    /**
     * <pre>
     * Time at which the test attempt was started.
     * Note: for cached test results, this is time can be before the start of the
     * build.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp test_attempt_start = 10;</code>
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getTestAttemptStartOrBuilder() {
      return testAttemptStart_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : testAttemptStart_;
    }

    public static final int TEST_ATTEMPT_DURATION_MILLIS_FIELD_NUMBER = 3;
    private long testAttemptDurationMillis_ = 0L;
    /**
     * <pre>
     * Time the test took to run. For locally cached results, this is the time
     * the cached invocation took when it was invoked.
     * Deprecated, use `test_attempt_duration` instead.
     * TODO(yannic): Remove.
     * </pre>
     *
     * <code>int64 test_attempt_duration_millis = 3 [deprecated = true];</code>
     * @deprecated build_event_stream.TestResult.test_attempt_duration_millis is deprecated.
     *     See bazel/build_event_stream.proto;l=656
     * @return The testAttemptDurationMillis.
     */
    @java.lang.Override
    @java.lang.Deprecated public long getTestAttemptDurationMillis() {
      return testAttemptDurationMillis_;
    }

    public static final int TEST_ATTEMPT_DURATION_FIELD_NUMBER = 11;
    private com.google.protobuf.Duration testAttemptDuration_;
    /**
     * <pre>
     * Time the test took to run. For locally cached results, this is the time
     * the cached invocation took when it was invoked.
     * </pre>
     *
     * <code>.google.protobuf.Duration test_attempt_duration = 11;</code>
     * @return Whether the testAttemptDuration field is set.
     */
    @java.lang.Override
    public boolean hasTestAttemptDuration() {
      return testAttemptDuration_ != null;
    }
    /**
     * <pre>
     * Time the test took to run. For locally cached results, this is the time
     * the cached invocation took when it was invoked.
     * </pre>
     *
     * <code>.google.protobuf.Duration test_attempt_duration = 11;</code>
     * @return The testAttemptDuration.
     */
    @java.lang.Override
    public com.google.protobuf.Duration getTestAttemptDuration() {
      return testAttemptDuration_ == null ? com.google.protobuf.Duration.getDefaultInstance() : testAttemptDuration_;
    }
    /**
     * <pre>
     * Time the test took to run. For locally cached results, this is the time
     * the cached invocation took when it was invoked.
     * </pre>
     *
     * <code>.google.protobuf.Duration test_attempt_duration = 11;</code>
     */
    @java.lang.Override
    public com.google.protobuf.DurationOrBuilder getTestAttemptDurationOrBuilder() {
      return testAttemptDuration_ == null ? com.google.protobuf.Duration.getDefaultInstance() : testAttemptDuration_;
    }

    public static final int TEST_ACTION_OUTPUT_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> testActionOutput_;
    /**
     * <pre>
     * Files (logs, test.xml, undeclared outputs, etc) generated by that test
     * action.
     * </pre>
     *
     * <code>repeated .build_event_stream.File test_action_output = 2;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> getTestActionOutputList() {
      return testActionOutput_;
    }
    /**
     * <pre>
     * Files (logs, test.xml, undeclared outputs, etc) generated by that test
     * action.
     * </pre>
     *
     * <code>repeated .build_event_stream.File test_action_output = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
        getTestActionOutputOrBuilderList() {
      return testActionOutput_;
    }
    /**
     * <pre>
     * Files (logs, test.xml, undeclared outputs, etc) generated by that test
     * action.
     * </pre>
     *
     * <code>repeated .build_event_stream.File test_action_output = 2;</code>
     */
    @java.lang.Override
    public int getTestActionOutputCount() {
      return testActionOutput_.size();
    }
    /**
     * <pre>
     * Files (logs, test.xml, undeclared outputs, etc) generated by that test
     * action.
     * </pre>
     *
     * <code>repeated .build_event_stream.File test_action_output = 2;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getTestActionOutput(int index) {
      return testActionOutput_.get(index);
    }
    /**
     * <pre>
     * Files (logs, test.xml, undeclared outputs, etc) generated by that test
     * action.
     * </pre>
     *
     * <code>repeated .build_event_stream.File test_action_output = 2;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getTestActionOutputOrBuilder(
        int index) {
      return testActionOutput_.get(index);
    }

    public static final int WARNING_FIELD_NUMBER = 7;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringList warning_;
    /**
     * <pre>
     * Warnings generated by that test action.
     * </pre>
     *
     * <code>repeated string warning = 7;</code>
     * @return A list containing the warning.
     */
    public com.google.protobuf.ProtocolStringList
        getWarningList() {
      return warning_;
    }
    /**
     * <pre>
     * Warnings generated by that test action.
     * </pre>
     *
     * <code>repeated string warning = 7;</code>
     * @return The count of warning.
     */
    public int getWarningCount() {
      return warning_.size();
    }
    /**
     * <pre>
     * Warnings generated by that test action.
     * </pre>
     *
     * <code>repeated string warning = 7;</code>
     * @param index The index of the element to return.
     * @return The warning at the given index.
     */
    public java.lang.String getWarning(int index) {
      return warning_.get(index);
    }
    /**
     * <pre>
     * Warnings generated by that test action.
     * </pre>
     *
     * <code>repeated string warning = 7;</code>
     * @param index The index of the value to return.
     * @return The bytes of the warning at the given index.
     */
    public com.google.protobuf.ByteString
        getWarningBytes(int index) {
      return warning_.getByteString(index);
    }

    public static final int EXECUTION_INFO_FIELD_NUMBER = 8;
    private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo executionInfo_;
    /**
     * <code>.build_event_stream.TestResult.ExecutionInfo execution_info = 8;</code>
     * @return Whether the executionInfo field is set.
     */
    @java.lang.Override
    public boolean hasExecutionInfo() {
      return executionInfo_ != null;
    }
    /**
     * <code>.build_event_stream.TestResult.ExecutionInfo execution_info = 8;</code>
     * @return The executionInfo.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo getExecutionInfo() {
      return executionInfo_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.getDefaultInstance() : executionInfo_;
    }
    /**
     * <code>.build_event_stream.TestResult.ExecutionInfo execution_info = 8;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfoOrBuilder getExecutionInfoOrBuilder() {
      return executionInfo_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.getDefaultInstance() : executionInfo_;
    }

    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 < testActionOutput_.size(); i++) {
        output.writeMessage(2, testActionOutput_.get(i));
      }
      if (testAttemptDurationMillis_ != 0L) {
        output.writeInt64(3, testAttemptDurationMillis_);
      }
      if (cachedLocally_ != false) {
        output.writeBool(4, cachedLocally_);
      }
      if (status_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus.NO_STATUS.getNumber()) {
        output.writeEnum(5, status_);
      }
      if (testAttemptStartMillisEpoch_ != 0L) {
        output.writeInt64(6, testAttemptStartMillisEpoch_);
      }
      for (int i = 0; i < warning_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, warning_.getRaw(i));
      }
      if (executionInfo_ != null) {
        output.writeMessage(8, getExecutionInfo());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(statusDetails_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, statusDetails_);
      }
      if (testAttemptStart_ != null) {
        output.writeMessage(10, getTestAttemptStart());
      }
      if (testAttemptDuration_ != null) {
        output.writeMessage(11, getTestAttemptDuration());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < testActionOutput_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, testActionOutput_.get(i));
      }
      if (testAttemptDurationMillis_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, testAttemptDurationMillis_);
      }
      if (cachedLocally_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, cachedLocally_);
      }
      if (status_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus.NO_STATUS.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(5, status_);
      }
      if (testAttemptStartMillisEpoch_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(6, testAttemptStartMillisEpoch_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < warning_.size(); i++) {
          dataSize += computeStringSizeNoTag(warning_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getWarningList().size();
      }
      if (executionInfo_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getExecutionInfo());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(statusDetails_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, statusDetails_);
      }
      if (testAttemptStart_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getTestAttemptStart());
      }
      if (testAttemptDuration_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, getTestAttemptDuration());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (status_ != other.status_) return false;
      if (!getStatusDetails()
          .equals(other.getStatusDetails())) return false;
      if (getCachedLocally()
          != other.getCachedLocally()) return false;
      if (getTestAttemptStartMillisEpoch()
          != other.getTestAttemptStartMillisEpoch()) return false;
      if (hasTestAttemptStart() != other.hasTestAttemptStart()) return false;
      if (hasTestAttemptStart()) {
        if (!getTestAttemptStart()
            .equals(other.getTestAttemptStart())) return false;
      }
      if (getTestAttemptDurationMillis()
          != other.getTestAttemptDurationMillis()) return false;
      if (hasTestAttemptDuration() != other.hasTestAttemptDuration()) return false;
      if (hasTestAttemptDuration()) {
        if (!getTestAttemptDuration()
            .equals(other.getTestAttemptDuration())) return false;
      }
      if (!getTestActionOutputList()
          .equals(other.getTestActionOutputList())) return false;
      if (!getWarningList()
          .equals(other.getWarningList())) return false;
      if (hasExecutionInfo() != other.hasExecutionInfo()) return false;
      if (hasExecutionInfo()) {
        if (!getExecutionInfo()
            .equals(other.getExecutionInfo())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + STATUS_FIELD_NUMBER;
      hash = (53 * hash) + status_;
      hash = (37 * hash) + STATUS_DETAILS_FIELD_NUMBER;
      hash = (53 * hash) + getStatusDetails().hashCode();
      hash = (37 * hash) + CACHED_LOCALLY_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getCachedLocally());
      hash = (37 * hash) + TEST_ATTEMPT_START_MILLIS_EPOCH_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTestAttemptStartMillisEpoch());
      if (hasTestAttemptStart()) {
        hash = (37 * hash) + TEST_ATTEMPT_START_FIELD_NUMBER;
        hash = (53 * hash) + getTestAttemptStart().hashCode();
      }
      hash = (37 * hash) + TEST_ATTEMPT_DURATION_MILLIS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTestAttemptDurationMillis());
      if (hasTestAttemptDuration()) {
        hash = (37 * hash) + TEST_ATTEMPT_DURATION_FIELD_NUMBER;
        hash = (53 * hash) + getTestAttemptDuration().hashCode();
      }
      if (getTestActionOutputCount() > 0) {
        hash = (37 * hash) + TEST_ACTION_OUTPUT_FIELD_NUMBER;
        hash = (53 * hash) + getTestActionOutputList().hashCode();
      }
      if (getWarningCount() > 0) {
        hash = (37 * hash) + WARNING_FIELD_NUMBER;
        hash = (53 * hash) + getWarningList().hashCode();
      }
      if (hasExecutionInfo()) {
        hash = (37 * hash) + EXECUTION_INFO_FIELD_NUMBER;
        hash = (53 * hash) + getExecutionInfo().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult 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.buildeventstream.BuildEventStreamProtos.TestResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult 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.buildeventstream.BuildEventStreamProtos.TestResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult 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.buildeventstream.BuildEventStreamProtos.TestResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult 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.buildeventstream.BuildEventStreamProtos.TestResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult 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.buildeventstream.BuildEventStreamProtos.TestResult 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.buildeventstream.BuildEventStreamProtos.TestResult 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.buildeventstream.BuildEventStreamProtos.TestResult 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>
     * Payload on events reporting about individual test action.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.TestResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.TestResult)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        status_ = 0;
        statusDetails_ = "";
        cachedLocally_ = false;
        testAttemptStartMillisEpoch_ = 0L;
        testAttemptStart_ = null;
        if (testAttemptStartBuilder_ != null) {
          testAttemptStartBuilder_.dispose();
          testAttemptStartBuilder_ = null;
        }
        testAttemptDurationMillis_ = 0L;
        testAttemptDuration_ = null;
        if (testAttemptDurationBuilder_ != null) {
          testAttemptDurationBuilder_.dispose();
          testAttemptDurationBuilder_ = null;
        }
        if (testActionOutputBuilder_ == null) {
          testActionOutput_ = java.util.Collections.emptyList();
        } else {
          testActionOutput_ = null;
          testActionOutputBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        warning_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000100);
        executionInfo_ = null;
        if (executionInfoBuilder_ != null) {
          executionInfoBuilder_.dispose();
          executionInfoBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestResult_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult result) {
        if (testActionOutputBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0)) {
            testActionOutput_ = java.util.Collections.unmodifiableList(testActionOutput_);
            bitField0_ = (bitField0_ & ~0x00000080);
          }
          result.testActionOutput_ = testActionOutput_;
        } else {
          result.testActionOutput_ = testActionOutputBuilder_.build();
        }
        if (((bitField0_ & 0x00000100) != 0)) {
          warning_ = warning_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000100);
        }
        result.warning_ = warning_;
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.status_ = status_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.statusDetails_ = statusDetails_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.cachedLocally_ = cachedLocally_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.testAttemptStartMillisEpoch_ = testAttemptStartMillisEpoch_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.testAttemptStart_ = testAttemptStartBuilder_ == null
              ? testAttemptStart_
              : testAttemptStartBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.testAttemptDurationMillis_ = testAttemptDurationMillis_;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.testAttemptDuration_ = testAttemptDurationBuilder_ == null
              ? testAttemptDuration_
              : testAttemptDurationBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.executionInfo_ = executionInfoBuilder_ == null
              ? executionInfo_
              : executionInfoBuilder_.build();
        }
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.getDefaultInstance()) return this;
        if (other.status_ != 0) {
          setStatusValue(other.getStatusValue());
        }
        if (!other.getStatusDetails().isEmpty()) {
          statusDetails_ = other.statusDetails_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.getCachedLocally() != false) {
          setCachedLocally(other.getCachedLocally());
        }
        if (other.getTestAttemptStartMillisEpoch() != 0L) {
          setTestAttemptStartMillisEpoch(other.getTestAttemptStartMillisEpoch());
        }
        if (other.hasTestAttemptStart()) {
          mergeTestAttemptStart(other.getTestAttemptStart());
        }
        if (other.getTestAttemptDurationMillis() != 0L) {
          setTestAttemptDurationMillis(other.getTestAttemptDurationMillis());
        }
        if (other.hasTestAttemptDuration()) {
          mergeTestAttemptDuration(other.getTestAttemptDuration());
        }
        if (testActionOutputBuilder_ == null) {
          if (!other.testActionOutput_.isEmpty()) {
            if (testActionOutput_.isEmpty()) {
              testActionOutput_ = other.testActionOutput_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureTestActionOutputIsMutable();
              testActionOutput_.addAll(other.testActionOutput_);
            }
            onChanged();
          }
        } else {
          if (!other.testActionOutput_.isEmpty()) {
            if (testActionOutputBuilder_.isEmpty()) {
              testActionOutputBuilder_.dispose();
              testActionOutputBuilder_ = null;
              testActionOutput_ = other.testActionOutput_;
              bitField0_ = (bitField0_ & ~0x00000080);
              testActionOutputBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTestActionOutputFieldBuilder() : null;
            } else {
              testActionOutputBuilder_.addAllMessages(other.testActionOutput_);
            }
          }
        }
        if (!other.warning_.isEmpty()) {
          if (warning_.isEmpty()) {
            warning_ = other.warning_;
            bitField0_ = (bitField0_ & ~0x00000100);
          } else {
            ensureWarningIsMutable();
            warning_.addAll(other.warning_);
          }
          onChanged();
        }
        if (other.hasExecutionInfo()) {
          mergeExecutionInfo(other.getExecutionInfo());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 18: {
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File m =
                    input.readMessage(
                        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.parser(),
                        extensionRegistry);
                if (testActionOutputBuilder_ == null) {
                  ensureTestActionOutputIsMutable();
                  testActionOutput_.add(m);
                } else {
                  testActionOutputBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 24: {
                testAttemptDurationMillis_ = input.readInt64();
                bitField0_ |= 0x00000020;
                break;
              } // case 24
              case 32: {
                cachedLocally_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 32
              case 40: {
                status_ = input.readEnum();
                bitField0_ |= 0x00000001;
                break;
              } // case 40
              case 48: {
                testAttemptStartMillisEpoch_ = input.readInt64();
                bitField0_ |= 0x00000008;
                break;
              } // case 48
              case 58: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureWarningIsMutable();
                warning_.add(s);
                break;
              } // case 58
              case 66: {
                input.readMessage(
                    getExecutionInfoFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000200;
                break;
              } // case 66
              case 74: {
                statusDetails_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 74
              case 82: {
                input.readMessage(
                    getTestAttemptStartFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 82
              case 90: {
                input.readMessage(
                    getTestAttemptDurationFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 90
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int status_ = 0;
      /**
       * <pre>
       * The status of this test.
       * </pre>
       *
       * <code>.build_event_stream.TestStatus status = 5;</code>
       * @return The enum numeric value on the wire for status.
       */
      @java.lang.Override public int getStatusValue() {
        return status_;
      }
      /**
       * <pre>
       * The status of this test.
       * </pre>
       *
       * <code>.build_event_stream.TestStatus status = 5;</code>
       * @param value The enum numeric value on the wire for status to set.
       * @return This builder for chaining.
       */
      public Builder setStatusValue(int value) {
        status_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The status of this test.
       * </pre>
       *
       * <code>.build_event_stream.TestStatus status = 5;</code>
       * @return The status.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus getStatus() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus result = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus.forNumber(status_);
        return result == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * The status of this test.
       * </pre>
       *
       * <code>.build_event_stream.TestStatus status = 5;</code>
       * @param value The status to set.
       * @return This builder for chaining.
       */
      public Builder setStatus(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        status_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The status of this test.
       * </pre>
       *
       * <code>.build_event_stream.TestStatus status = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatus() {
        bitField0_ = (bitField0_ & ~0x00000001);
        status_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object statusDetails_ = "";
      /**
       * <pre>
       * Additional details about the status of the test. This is intended for
       * user display and must not be parsed.
       * </pre>
       *
       * <code>string status_details = 9;</code>
       * @return The statusDetails.
       */
      public java.lang.String getStatusDetails() {
        java.lang.Object ref = statusDetails_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          statusDetails_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Additional details about the status of the test. This is intended for
       * user display and must not be parsed.
       * </pre>
       *
       * <code>string status_details = 9;</code>
       * @return The bytes for statusDetails.
       */
      public com.google.protobuf.ByteString
          getStatusDetailsBytes() {
        java.lang.Object ref = statusDetails_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          statusDetails_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Additional details about the status of the test. This is intended for
       * user display and must not be parsed.
       * </pre>
       *
       * <code>string status_details = 9;</code>
       * @param value The statusDetails to set.
       * @return This builder for chaining.
       */
      public Builder setStatusDetails(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        statusDetails_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Additional details about the status of the test. This is intended for
       * user display and must not be parsed.
       * </pre>
       *
       * <code>string status_details = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatusDetails() {
        statusDetails_ = getDefaultInstance().getStatusDetails();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Additional details about the status of the test. This is intended for
       * user display and must not be parsed.
       * </pre>
       *
       * <code>string status_details = 9;</code>
       * @param value The bytes for statusDetails to set.
       * @return This builder for chaining.
       */
      public Builder setStatusDetailsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        statusDetails_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private boolean cachedLocally_ ;
      /**
       * <pre>
       * True, if the reported attempt is taken from the tool's local cache.
       * </pre>
       *
       * <code>bool cached_locally = 4;</code>
       * @return The cachedLocally.
       */
      @java.lang.Override
      public boolean getCachedLocally() {
        return cachedLocally_;
      }
      /**
       * <pre>
       * True, if the reported attempt is taken from the tool's local cache.
       * </pre>
       *
       * <code>bool cached_locally = 4;</code>
       * @param value The cachedLocally to set.
       * @return This builder for chaining.
       */
      public Builder setCachedLocally(boolean value) {
        
        cachedLocally_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * True, if the reported attempt is taken from the tool's local cache.
       * </pre>
       *
       * <code>bool cached_locally = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearCachedLocally() {
        bitField0_ = (bitField0_ & ~0x00000004);
        cachedLocally_ = false;
        onChanged();
        return this;
      }

      private long testAttemptStartMillisEpoch_ ;
      /**
       * <pre>
       * Time in milliseconds since the epoch at which the test attempt was started.
       * Note: for cached test results, this is time can be before the start of the
       * build.
       * Deprecated, use `test_attempt_start` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 test_attempt_start_millis_epoch = 6 [deprecated = true];</code>
       * @deprecated build_event_stream.TestResult.test_attempt_start_millis_epoch is deprecated.
       *     See bazel/build_event_stream.proto;l=643
       * @return The testAttemptStartMillisEpoch.
       */
      @java.lang.Override
      @java.lang.Deprecated public long getTestAttemptStartMillisEpoch() {
        return testAttemptStartMillisEpoch_;
      }
      /**
       * <pre>
       * Time in milliseconds since the epoch at which the test attempt was started.
       * Note: for cached test results, this is time can be before the start of the
       * build.
       * Deprecated, use `test_attempt_start` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 test_attempt_start_millis_epoch = 6 [deprecated = true];</code>
       * @deprecated build_event_stream.TestResult.test_attempt_start_millis_epoch is deprecated.
       *     See bazel/build_event_stream.proto;l=643
       * @param value The testAttemptStartMillisEpoch to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setTestAttemptStartMillisEpoch(long value) {
        
        testAttemptStartMillisEpoch_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time in milliseconds since the epoch at which the test attempt was started.
       * Note: for cached test results, this is time can be before the start of the
       * build.
       * Deprecated, use `test_attempt_start` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 test_attempt_start_millis_epoch = 6 [deprecated = true];</code>
       * @deprecated build_event_stream.TestResult.test_attempt_start_millis_epoch is deprecated.
       *     See bazel/build_event_stream.proto;l=643
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder clearTestAttemptStartMillisEpoch() {
        bitField0_ = (bitField0_ & ~0x00000008);
        testAttemptStartMillisEpoch_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.Timestamp testAttemptStart_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> testAttemptStartBuilder_;
      /**
       * <pre>
       * Time at which the test attempt was started.
       * Note: for cached test results, this is time can be before the start of the
       * build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp test_attempt_start = 10;</code>
       * @return Whether the testAttemptStart field is set.
       */
      public boolean hasTestAttemptStart() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Time at which the test attempt was started.
       * Note: for cached test results, this is time can be before the start of the
       * build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp test_attempt_start = 10;</code>
       * @return The testAttemptStart.
       */
      public com.google.protobuf.Timestamp getTestAttemptStart() {
        if (testAttemptStartBuilder_ == null) {
          return testAttemptStart_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : testAttemptStart_;
        } else {
          return testAttemptStartBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Time at which the test attempt was started.
       * Note: for cached test results, this is time can be before the start of the
       * build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp test_attempt_start = 10;</code>
       */
      public Builder setTestAttemptStart(com.google.protobuf.Timestamp value) {
        if (testAttemptStartBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          testAttemptStart_ = value;
        } else {
          testAttemptStartBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time at which the test attempt was started.
       * Note: for cached test results, this is time can be before the start of the
       * build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp test_attempt_start = 10;</code>
       */
      public Builder setTestAttemptStart(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (testAttemptStartBuilder_ == null) {
          testAttemptStart_ = builderForValue.build();
        } else {
          testAttemptStartBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time at which the test attempt was started.
       * Note: for cached test results, this is time can be before the start of the
       * build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp test_attempt_start = 10;</code>
       */
      public Builder mergeTestAttemptStart(com.google.protobuf.Timestamp value) {
        if (testAttemptStartBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            testAttemptStart_ != null &&
            testAttemptStart_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
            getTestAttemptStartBuilder().mergeFrom(value);
          } else {
            testAttemptStart_ = value;
          }
        } else {
          testAttemptStartBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time at which the test attempt was started.
       * Note: for cached test results, this is time can be before the start of the
       * build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp test_attempt_start = 10;</code>
       */
      public Builder clearTestAttemptStart() {
        bitField0_ = (bitField0_ & ~0x00000010);
        testAttemptStart_ = null;
        if (testAttemptStartBuilder_ != null) {
          testAttemptStartBuilder_.dispose();
          testAttemptStartBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time at which the test attempt was started.
       * Note: for cached test results, this is time can be before the start of the
       * build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp test_attempt_start = 10;</code>
       */
      public com.google.protobuf.Timestamp.Builder getTestAttemptStartBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getTestAttemptStartFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Time at which the test attempt was started.
       * Note: for cached test results, this is time can be before the start of the
       * build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp test_attempt_start = 10;</code>
       */
      public com.google.protobuf.TimestampOrBuilder getTestAttemptStartOrBuilder() {
        if (testAttemptStartBuilder_ != null) {
          return testAttemptStartBuilder_.getMessageOrBuilder();
        } else {
          return testAttemptStart_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : testAttemptStart_;
        }
      }
      /**
       * <pre>
       * Time at which the test attempt was started.
       * Note: for cached test results, this is time can be before the start of the
       * build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp test_attempt_start = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getTestAttemptStartFieldBuilder() {
        if (testAttemptStartBuilder_ == null) {
          testAttemptStartBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getTestAttemptStart(),
                  getParentForChildren(),
                  isClean());
          testAttemptStart_ = null;
        }
        return testAttemptStartBuilder_;
      }

      private long testAttemptDurationMillis_ ;
      /**
       * <pre>
       * Time the test took to run. For locally cached results, this is the time
       * the cached invocation took when it was invoked.
       * Deprecated, use `test_attempt_duration` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 test_attempt_duration_millis = 3 [deprecated = true];</code>
       * @deprecated build_event_stream.TestResult.test_attempt_duration_millis is deprecated.
       *     See bazel/build_event_stream.proto;l=656
       * @return The testAttemptDurationMillis.
       */
      @java.lang.Override
      @java.lang.Deprecated public long getTestAttemptDurationMillis() {
        return testAttemptDurationMillis_;
      }
      /**
       * <pre>
       * Time the test took to run. For locally cached results, this is the time
       * the cached invocation took when it was invoked.
       * Deprecated, use `test_attempt_duration` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 test_attempt_duration_millis = 3 [deprecated = true];</code>
       * @deprecated build_event_stream.TestResult.test_attempt_duration_millis is deprecated.
       *     See bazel/build_event_stream.proto;l=656
       * @param value The testAttemptDurationMillis to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setTestAttemptDurationMillis(long value) {
        
        testAttemptDurationMillis_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time the test took to run. For locally cached results, this is the time
       * the cached invocation took when it was invoked.
       * Deprecated, use `test_attempt_duration` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 test_attempt_duration_millis = 3 [deprecated = true];</code>
       * @deprecated build_event_stream.TestResult.test_attempt_duration_millis is deprecated.
       *     See bazel/build_event_stream.proto;l=656
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder clearTestAttemptDurationMillis() {
        bitField0_ = (bitField0_ & ~0x00000020);
        testAttemptDurationMillis_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.Duration testAttemptDuration_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> testAttemptDurationBuilder_;
      /**
       * <pre>
       * Time the test took to run. For locally cached results, this is the time
       * the cached invocation took when it was invoked.
       * </pre>
       *
       * <code>.google.protobuf.Duration test_attempt_duration = 11;</code>
       * @return Whether the testAttemptDuration field is set.
       */
      public boolean hasTestAttemptDuration() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * Time the test took to run. For locally cached results, this is the time
       * the cached invocation took when it was invoked.
       * </pre>
       *
       * <code>.google.protobuf.Duration test_attempt_duration = 11;</code>
       * @return The testAttemptDuration.
       */
      public com.google.protobuf.Duration getTestAttemptDuration() {
        if (testAttemptDurationBuilder_ == null) {
          return testAttemptDuration_ == null ? com.google.protobuf.Duration.getDefaultInstance() : testAttemptDuration_;
        } else {
          return testAttemptDurationBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Time the test took to run. For locally cached results, this is the time
       * the cached invocation took when it was invoked.
       * </pre>
       *
       * <code>.google.protobuf.Duration test_attempt_duration = 11;</code>
       */
      public Builder setTestAttemptDuration(com.google.protobuf.Duration value) {
        if (testAttemptDurationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          testAttemptDuration_ = value;
        } else {
          testAttemptDurationBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time the test took to run. For locally cached results, this is the time
       * the cached invocation took when it was invoked.
       * </pre>
       *
       * <code>.google.protobuf.Duration test_attempt_duration = 11;</code>
       */
      public Builder setTestAttemptDuration(
          com.google.protobuf.Duration.Builder builderForValue) {
        if (testAttemptDurationBuilder_ == null) {
          testAttemptDuration_ = builderForValue.build();
        } else {
          testAttemptDurationBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time the test took to run. For locally cached results, this is the time
       * the cached invocation took when it was invoked.
       * </pre>
       *
       * <code>.google.protobuf.Duration test_attempt_duration = 11;</code>
       */
      public Builder mergeTestAttemptDuration(com.google.protobuf.Duration value) {
        if (testAttemptDurationBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
            testAttemptDuration_ != null &&
            testAttemptDuration_ != com.google.protobuf.Duration.getDefaultInstance()) {
            getTestAttemptDurationBuilder().mergeFrom(value);
          } else {
            testAttemptDuration_ = value;
          }
        } else {
          testAttemptDurationBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time the test took to run. For locally cached results, this is the time
       * the cached invocation took when it was invoked.
       * </pre>
       *
       * <code>.google.protobuf.Duration test_attempt_duration = 11;</code>
       */
      public Builder clearTestAttemptDuration() {
        bitField0_ = (bitField0_ & ~0x00000040);
        testAttemptDuration_ = null;
        if (testAttemptDurationBuilder_ != null) {
          testAttemptDurationBuilder_.dispose();
          testAttemptDurationBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time the test took to run. For locally cached results, this is the time
       * the cached invocation took when it was invoked.
       * </pre>
       *
       * <code>.google.protobuf.Duration test_attempt_duration = 11;</code>
       */
      public com.google.protobuf.Duration.Builder getTestAttemptDurationBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getTestAttemptDurationFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Time the test took to run. For locally cached results, this is the time
       * the cached invocation took when it was invoked.
       * </pre>
       *
       * <code>.google.protobuf.Duration test_attempt_duration = 11;</code>
       */
      public com.google.protobuf.DurationOrBuilder getTestAttemptDurationOrBuilder() {
        if (testAttemptDurationBuilder_ != null) {
          return testAttemptDurationBuilder_.getMessageOrBuilder();
        } else {
          return testAttemptDuration_ == null ?
              com.google.protobuf.Duration.getDefaultInstance() : testAttemptDuration_;
        }
      }
      /**
       * <pre>
       * Time the test took to run. For locally cached results, this is the time
       * the cached invocation took when it was invoked.
       * </pre>
       *
       * <code>.google.protobuf.Duration test_attempt_duration = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> 
          getTestAttemptDurationFieldBuilder() {
        if (testAttemptDurationBuilder_ == null) {
          testAttemptDurationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>(
                  getTestAttemptDuration(),
                  getParentForChildren(),
                  isClean());
          testAttemptDuration_ = null;
        }
        return testAttemptDurationBuilder_;
      }

      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> testActionOutput_ =
        java.util.Collections.emptyList();
      private void ensureTestActionOutputIsMutable() {
        if (!((bitField0_ & 0x00000080) != 0)) {
          testActionOutput_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File>(testActionOutput_);
          bitField0_ |= 0x00000080;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> testActionOutputBuilder_;

      /**
       * <pre>
       * Files (logs, test.xml, undeclared outputs, etc) generated by that test
       * action.
       * </pre>
       *
       * <code>repeated .build_event_stream.File test_action_output = 2;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> getTestActionOutputList() {
        if (testActionOutputBuilder_ == null) {
          return java.util.Collections.unmodifiableList(testActionOutput_);
        } else {
          return testActionOutputBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Files (logs, test.xml, undeclared outputs, etc) generated by that test
       * action.
       * </pre>
       *
       * <code>repeated .build_event_stream.File test_action_output = 2;</code>
       */
      public int getTestActionOutputCount() {
        if (testActionOutputBuilder_ == null) {
          return testActionOutput_.size();
        } else {
          return testActionOutputBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Files (logs, test.xml, undeclared outputs, etc) generated by that test
       * action.
       * </pre>
       *
       * <code>repeated .build_event_stream.File test_action_output = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getTestActionOutput(int index) {
        if (testActionOutputBuilder_ == null) {
          return testActionOutput_.get(index);
        } else {
          return testActionOutputBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Files (logs, test.xml, undeclared outputs, etc) generated by that test
       * action.
       * </pre>
       *
       * <code>repeated .build_event_stream.File test_action_output = 2;</code>
       */
      public Builder setTestActionOutput(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (testActionOutputBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTestActionOutputIsMutable();
          testActionOutput_.set(index, value);
          onChanged();
        } else {
          testActionOutputBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Files (logs, test.xml, undeclared outputs, etc) generated by that test
       * action.
       * </pre>
       *
       * <code>repeated .build_event_stream.File test_action_output = 2;</code>
       */
      public Builder setTestActionOutput(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (testActionOutputBuilder_ == null) {
          ensureTestActionOutputIsMutable();
          testActionOutput_.set(index, builderForValue.build());
          onChanged();
        } else {
          testActionOutputBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Files (logs, test.xml, undeclared outputs, etc) generated by that test
       * action.
       * </pre>
       *
       * <code>repeated .build_event_stream.File test_action_output = 2;</code>
       */
      public Builder addTestActionOutput(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (testActionOutputBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTestActionOutputIsMutable();
          testActionOutput_.add(value);
          onChanged();
        } else {
          testActionOutputBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Files (logs, test.xml, undeclared outputs, etc) generated by that test
       * action.
       * </pre>
       *
       * <code>repeated .build_event_stream.File test_action_output = 2;</code>
       */
      public Builder addTestActionOutput(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (testActionOutputBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTestActionOutputIsMutable();
          testActionOutput_.add(index, value);
          onChanged();
        } else {
          testActionOutputBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Files (logs, test.xml, undeclared outputs, etc) generated by that test
       * action.
       * </pre>
       *
       * <code>repeated .build_event_stream.File test_action_output = 2;</code>
       */
      public Builder addTestActionOutput(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (testActionOutputBuilder_ == null) {
          ensureTestActionOutputIsMutable();
          testActionOutput_.add(builderForValue.build());
          onChanged();
        } else {
          testActionOutputBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Files (logs, test.xml, undeclared outputs, etc) generated by that test
       * action.
       * </pre>
       *
       * <code>repeated .build_event_stream.File test_action_output = 2;</code>
       */
      public Builder addTestActionOutput(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (testActionOutputBuilder_ == null) {
          ensureTestActionOutputIsMutable();
          testActionOutput_.add(index, builderForValue.build());
          onChanged();
        } else {
          testActionOutputBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Files (logs, test.xml, undeclared outputs, etc) generated by that test
       * action.
       * </pre>
       *
       * <code>repeated .build_event_stream.File test_action_output = 2;</code>
       */
      public Builder addAllTestActionOutput(
          java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> values) {
        if (testActionOutputBuilder_ == null) {
          ensureTestActionOutputIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, testActionOutput_);
          onChanged();
        } else {
          testActionOutputBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Files (logs, test.xml, undeclared outputs, etc) generated by that test
       * action.
       * </pre>
       *
       * <code>repeated .build_event_stream.File test_action_output = 2;</code>
       */
      public Builder clearTestActionOutput() {
        if (testActionOutputBuilder_ == null) {
          testActionOutput_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          onChanged();
        } else {
          testActionOutputBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Files (logs, test.xml, undeclared outputs, etc) generated by that test
       * action.
       * </pre>
       *
       * <code>repeated .build_event_stream.File test_action_output = 2;</code>
       */
      public Builder removeTestActionOutput(int index) {
        if (testActionOutputBuilder_ == null) {
          ensureTestActionOutputIsMutable();
          testActionOutput_.remove(index);
          onChanged();
        } else {
          testActionOutputBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Files (logs, test.xml, undeclared outputs, etc) generated by that test
       * action.
       * </pre>
       *
       * <code>repeated .build_event_stream.File test_action_output = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder getTestActionOutputBuilder(
          int index) {
        return getTestActionOutputFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Files (logs, test.xml, undeclared outputs, etc) generated by that test
       * action.
       * </pre>
       *
       * <code>repeated .build_event_stream.File test_action_output = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getTestActionOutputOrBuilder(
          int index) {
        if (testActionOutputBuilder_ == null) {
          return testActionOutput_.get(index);  } else {
          return testActionOutputBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Files (logs, test.xml, undeclared outputs, etc) generated by that test
       * action.
       * </pre>
       *
       * <code>repeated .build_event_stream.File test_action_output = 2;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
           getTestActionOutputOrBuilderList() {
        if (testActionOutputBuilder_ != null) {
          return testActionOutputBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(testActionOutput_);
        }
      }
      /**
       * <pre>
       * Files (logs, test.xml, undeclared outputs, etc) generated by that test
       * action.
       * </pre>
       *
       * <code>repeated .build_event_stream.File test_action_output = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder addTestActionOutputBuilder() {
        return getTestActionOutputFieldBuilder().addBuilder(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance());
      }
      /**
       * <pre>
       * Files (logs, test.xml, undeclared outputs, etc) generated by that test
       * action.
       * </pre>
       *
       * <code>repeated .build_event_stream.File test_action_output = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder addTestActionOutputBuilder(
          int index) {
        return getTestActionOutputFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance());
      }
      /**
       * <pre>
       * Files (logs, test.xml, undeclared outputs, etc) generated by that test
       * action.
       * </pre>
       *
       * <code>repeated .build_event_stream.File test_action_output = 2;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder> 
           getTestActionOutputBuilderList() {
        return getTestActionOutputFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
          getTestActionOutputFieldBuilder() {
        if (testActionOutputBuilder_ == null) {
          testActionOutputBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder>(
                  testActionOutput_,
                  ((bitField0_ & 0x00000080) != 0),
                  getParentForChildren(),
                  isClean());
          testActionOutput_ = null;
        }
        return testActionOutputBuilder_;
      }

      private com.google.protobuf.LazyStringList warning_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureWarningIsMutable() {
        if (!((bitField0_ & 0x00000100) != 0)) {
          warning_ = new com.google.protobuf.LazyStringArrayList(warning_);
          bitField0_ |= 0x00000100;
         }
      }
      /**
       * <pre>
       * Warnings generated by that test action.
       * </pre>
       *
       * <code>repeated string warning = 7;</code>
       * @return A list containing the warning.
       */
      public com.google.protobuf.ProtocolStringList
          getWarningList() {
        return warning_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Warnings generated by that test action.
       * </pre>
       *
       * <code>repeated string warning = 7;</code>
       * @return The count of warning.
       */
      public int getWarningCount() {
        return warning_.size();
      }
      /**
       * <pre>
       * Warnings generated by that test action.
       * </pre>
       *
       * <code>repeated string warning = 7;</code>
       * @param index The index of the element to return.
       * @return The warning at the given index.
       */
      public java.lang.String getWarning(int index) {
        return warning_.get(index);
      }
      /**
       * <pre>
       * Warnings generated by that test action.
       * </pre>
       *
       * <code>repeated string warning = 7;</code>
       * @param index The index of the value to return.
       * @return The bytes of the warning at the given index.
       */
      public com.google.protobuf.ByteString
          getWarningBytes(int index) {
        return warning_.getByteString(index);
      }
      /**
       * <pre>
       * Warnings generated by that test action.
       * </pre>
       *
       * <code>repeated string warning = 7;</code>
       * @param index The index to set the value at.
       * @param value The warning to set.
       * @return This builder for chaining.
       */
      public Builder setWarning(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureWarningIsMutable();
        warning_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Warnings generated by that test action.
       * </pre>
       *
       * <code>repeated string warning = 7;</code>
       * @param value The warning to add.
       * @return This builder for chaining.
       */
      public Builder addWarning(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureWarningIsMutable();
        warning_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Warnings generated by that test action.
       * </pre>
       *
       * <code>repeated string warning = 7;</code>
       * @param values The warning to add.
       * @return This builder for chaining.
       */
      public Builder addAllWarning(
          java.lang.Iterable<java.lang.String> values) {
        ensureWarningIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, warning_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Warnings generated by that test action.
       * </pre>
       *
       * <code>repeated string warning = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearWarning() {
        warning_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Warnings generated by that test action.
       * </pre>
       *
       * <code>repeated string warning = 7;</code>
       * @param value The bytes of the warning to add.
       * @return This builder for chaining.
       */
      public Builder addWarningBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureWarningIsMutable();
        warning_.add(value);
        onChanged();
        return this;
      }

      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo executionInfo_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfoOrBuilder> executionInfoBuilder_;
      /**
       * <code>.build_event_stream.TestResult.ExecutionInfo execution_info = 8;</code>
       * @return Whether the executionInfo field is set.
       */
      public boolean hasExecutionInfo() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <code>.build_event_stream.TestResult.ExecutionInfo execution_info = 8;</code>
       * @return The executionInfo.
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo getExecutionInfo() {
        if (executionInfoBuilder_ == null) {
          return executionInfo_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.getDefaultInstance() : executionInfo_;
        } else {
          return executionInfoBuilder_.getMessage();
        }
      }
      /**
       * <code>.build_event_stream.TestResult.ExecutionInfo execution_info = 8;</code>
       */
      public Builder setExecutionInfo(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo value) {
        if (executionInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          executionInfo_ = value;
        } else {
          executionInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.TestResult.ExecutionInfo execution_info = 8;</code>
       */
      public Builder setExecutionInfo(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.Builder builderForValue) {
        if (executionInfoBuilder_ == null) {
          executionInfo_ = builderForValue.build();
        } else {
          executionInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.TestResult.ExecutionInfo execution_info = 8;</code>
       */
      public Builder mergeExecutionInfo(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo value) {
        if (executionInfoBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0) &&
            executionInfo_ != null &&
            executionInfo_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.getDefaultInstance()) {
            getExecutionInfoBuilder().mergeFrom(value);
          } else {
            executionInfo_ = value;
          }
        } else {
          executionInfoBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.TestResult.ExecutionInfo execution_info = 8;</code>
       */
      public Builder clearExecutionInfo() {
        bitField0_ = (bitField0_ & ~0x00000200);
        executionInfo_ = null;
        if (executionInfoBuilder_ != null) {
          executionInfoBuilder_.dispose();
          executionInfoBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.TestResult.ExecutionInfo execution_info = 8;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.Builder getExecutionInfoBuilder() {
        bitField0_ |= 0x00000200;
        onChanged();
        return getExecutionInfoFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.TestResult.ExecutionInfo execution_info = 8;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfoOrBuilder getExecutionInfoOrBuilder() {
        if (executionInfoBuilder_ != null) {
          return executionInfoBuilder_.getMessageOrBuilder();
        } else {
          return executionInfo_ == null ?
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.getDefaultInstance() : executionInfo_;
        }
      }
      /**
       * <code>.build_event_stream.TestResult.ExecutionInfo execution_info = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfoOrBuilder> 
          getExecutionInfoFieldBuilder() {
        if (executionInfoBuilder_ == null) {
          executionInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfo.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.ExecutionInfoOrBuilder>(
                  getExecutionInfo(),
                  getParentForChildren(),
                  isClean());
          executionInfo_ = null;
        }
        return executionInfoBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:build_event_stream.TestResult)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.TestResult)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TestSummaryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.TestSummary)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Wrapper around BlazeTestStatus to support importing that enum to proto3.
     * Overall status of test, accumulated over all runs, shards, and attempts.
     * </pre>
     *
     * <code>.build_event_stream.TestStatus overall_status = 5;</code>
     * @return The enum numeric value on the wire for overallStatus.
     */
    int getOverallStatusValue();
    /**
     * <pre>
     * Wrapper around BlazeTestStatus to support importing that enum to proto3.
     * Overall status of test, accumulated over all runs, shards, and attempts.
     * </pre>
     *
     * <code>.build_event_stream.TestStatus overall_status = 5;</code>
     * @return The overallStatus.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus getOverallStatus();

    /**
     * <pre>
     * Total number of shard attempts.
     * E.g., if a target has 4 runs, 3 shards, each with 2 attempts,
     * then total_run_count will be 4*3*2 = 24.
     * </pre>
     *
     * <code>int32 total_run_count = 1;</code>
     * @return The totalRunCount.
     */
    int getTotalRunCount();

    /**
     * <pre>
     * Value of runs_per_test for the test.
     * </pre>
     *
     * <code>int32 run_count = 10;</code>
     * @return The runCount.
     */
    int getRunCount();

    /**
     * <pre>
     * Number of attempts.
     * If there are a different number of attempts per shard, the highest attempt
     * count across all shards for each run is used.
     * </pre>
     *
     * <code>int32 attempt_count = 15;</code>
     * @return The attemptCount.
     */
    int getAttemptCount();

    /**
     * <pre>
     * Number of shards.
     * </pre>
     *
     * <code>int32 shard_count = 11;</code>
     * @return The shardCount.
     */
    int getShardCount();

    /**
     * <pre>
     * Path to logs of passed runs.
     * </pre>
     *
     * <code>repeated .build_event_stream.File passed = 3;</code>
     */
    java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> 
        getPassedList();
    /**
     * <pre>
     * Path to logs of passed runs.
     * </pre>
     *
     * <code>repeated .build_event_stream.File passed = 3;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getPassed(int index);
    /**
     * <pre>
     * Path to logs of passed runs.
     * </pre>
     *
     * <code>repeated .build_event_stream.File passed = 3;</code>
     */
    int getPassedCount();
    /**
     * <pre>
     * Path to logs of passed runs.
     * </pre>
     *
     * <code>repeated .build_event_stream.File passed = 3;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
        getPassedOrBuilderList();
    /**
     * <pre>
     * Path to logs of passed runs.
     * </pre>
     *
     * <code>repeated .build_event_stream.File passed = 3;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getPassedOrBuilder(
        int index);

    /**
     * <pre>
     * Path to logs of failed runs;
     * </pre>
     *
     * <code>repeated .build_event_stream.File failed = 4;</code>
     */
    java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> 
        getFailedList();
    /**
     * <pre>
     * Path to logs of failed runs;
     * </pre>
     *
     * <code>repeated .build_event_stream.File failed = 4;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getFailed(int index);
    /**
     * <pre>
     * Path to logs of failed runs;
     * </pre>
     *
     * <code>repeated .build_event_stream.File failed = 4;</code>
     */
    int getFailedCount();
    /**
     * <pre>
     * Path to logs of failed runs;
     * </pre>
     *
     * <code>repeated .build_event_stream.File failed = 4;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
        getFailedOrBuilderList();
    /**
     * <pre>
     * Path to logs of failed runs;
     * </pre>
     *
     * <code>repeated .build_event_stream.File failed = 4;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getFailedOrBuilder(
        int index);

    /**
     * <pre>
     * Total number of cached test actions
     * </pre>
     *
     * <code>int32 total_num_cached = 6;</code>
     * @return The totalNumCached.
     */
    int getTotalNumCached();

    /**
     * <pre>
     * When the test first started running.
     * Deprecated, use `first_start_time` instead.
     * TODO(yannic): Remove.
     * </pre>
     *
     * <code>int64 first_start_time_millis = 7 [deprecated = true];</code>
     * @deprecated build_event_stream.TestSummary.first_start_time_millis is deprecated.
     *     See bazel/build_event_stream.proto;l=748
     * @return The firstStartTimeMillis.
     */
    @java.lang.Deprecated long getFirstStartTimeMillis();

    /**
     * <pre>
     * When the test first started running.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp first_start_time = 13;</code>
     * @return Whether the firstStartTime field is set.
     */
    boolean hasFirstStartTime();
    /**
     * <pre>
     * When the test first started running.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp first_start_time = 13;</code>
     * @return The firstStartTime.
     */
    com.google.protobuf.Timestamp getFirstStartTime();
    /**
     * <pre>
     * When the test first started running.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp first_start_time = 13;</code>
     */
    com.google.protobuf.TimestampOrBuilder getFirstStartTimeOrBuilder();

    /**
     * <pre>
     * When the last test action completed.
     * Deprecated, use `last_stop_time` instead.
     * TODO(yannic): Remove.
     * </pre>
     *
     * <code>int64 last_stop_time_millis = 8 [deprecated = true];</code>
     * @deprecated build_event_stream.TestSummary.last_stop_time_millis is deprecated.
     *     See bazel/build_event_stream.proto;l=758
     * @return The lastStopTimeMillis.
     */
    @java.lang.Deprecated long getLastStopTimeMillis();

    /**
     * <pre>
     * When the test first started running.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp last_stop_time = 14;</code>
     * @return Whether the lastStopTime field is set.
     */
    boolean hasLastStopTime();
    /**
     * <pre>
     * When the test first started running.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp last_stop_time = 14;</code>
     * @return The lastStopTime.
     */
    com.google.protobuf.Timestamp getLastStopTime();
    /**
     * <pre>
     * When the test first started running.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp last_stop_time = 14;</code>
     */
    com.google.protobuf.TimestampOrBuilder getLastStopTimeOrBuilder();

    /**
     * <pre>
     * The total runtime of the test.
     * Deprecated, use `total_run` instead.
     * TODO(yannic): Remove.
     * </pre>
     *
     * <code>int64 total_run_duration_millis = 9 [deprecated = true];</code>
     * @deprecated build_event_stream.TestSummary.total_run_duration_millis is deprecated.
     *     See bazel/build_event_stream.proto;l=768
     * @return The totalRunDurationMillis.
     */
    @java.lang.Deprecated long getTotalRunDurationMillis();

    /**
     * <pre>
     * The total runtime of the test.
     * </pre>
     *
     * <code>.google.protobuf.Duration total_run_duration = 12;</code>
     * @return Whether the totalRunDuration field is set.
     */
    boolean hasTotalRunDuration();
    /**
     * <pre>
     * The total runtime of the test.
     * </pre>
     *
     * <code>.google.protobuf.Duration total_run_duration = 12;</code>
     * @return The totalRunDuration.
     */
    com.google.protobuf.Duration getTotalRunDuration();
    /**
     * <pre>
     * The total runtime of the test.
     * </pre>
     *
     * <code>.google.protobuf.Duration total_run_duration = 12;</code>
     */
    com.google.protobuf.DurationOrBuilder getTotalRunDurationOrBuilder();
  }
  /**
   * <pre>
   * Payload of the event summarizing a test.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.TestSummary}
   */
  public static final class TestSummary extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.TestSummary)
      TestSummaryOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TestSummary.newBuilder() to construct.
    private TestSummary(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TestSummary() {
      overallStatus_ = 0;
      passed_ = java.util.Collections.emptyList();
      failed_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestSummary_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestSummary_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary.Builder.class);
    }

    public static final int OVERALL_STATUS_FIELD_NUMBER = 5;
    private int overallStatus_ = 0;
    /**
     * <pre>
     * Wrapper around BlazeTestStatus to support importing that enum to proto3.
     * Overall status of test, accumulated over all runs, shards, and attempts.
     * </pre>
     *
     * <code>.build_event_stream.TestStatus overall_status = 5;</code>
     * @return The enum numeric value on the wire for overallStatus.
     */
    @java.lang.Override public int getOverallStatusValue() {
      return overallStatus_;
    }
    /**
     * <pre>
     * Wrapper around BlazeTestStatus to support importing that enum to proto3.
     * Overall status of test, accumulated over all runs, shards, and attempts.
     * </pre>
     *
     * <code>.build_event_stream.TestStatus overall_status = 5;</code>
     * @return The overallStatus.
     */
    @java.lang.Override public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus getOverallStatus() {
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus result = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus.forNumber(overallStatus_);
      return result == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus.UNRECOGNIZED : result;
    }

    public static final int TOTAL_RUN_COUNT_FIELD_NUMBER = 1;
    private int totalRunCount_ = 0;
    /**
     * <pre>
     * Total number of shard attempts.
     * E.g., if a target has 4 runs, 3 shards, each with 2 attempts,
     * then total_run_count will be 4*3*2 = 24.
     * </pre>
     *
     * <code>int32 total_run_count = 1;</code>
     * @return The totalRunCount.
     */
    @java.lang.Override
    public int getTotalRunCount() {
      return totalRunCount_;
    }

    public static final int RUN_COUNT_FIELD_NUMBER = 10;
    private int runCount_ = 0;
    /**
     * <pre>
     * Value of runs_per_test for the test.
     * </pre>
     *
     * <code>int32 run_count = 10;</code>
     * @return The runCount.
     */
    @java.lang.Override
    public int getRunCount() {
      return runCount_;
    }

    public static final int ATTEMPT_COUNT_FIELD_NUMBER = 15;
    private int attemptCount_ = 0;
    /**
     * <pre>
     * Number of attempts.
     * If there are a different number of attempts per shard, the highest attempt
     * count across all shards for each run is used.
     * </pre>
     *
     * <code>int32 attempt_count = 15;</code>
     * @return The attemptCount.
     */
    @java.lang.Override
    public int getAttemptCount() {
      return attemptCount_;
    }

    public static final int SHARD_COUNT_FIELD_NUMBER = 11;
    private int shardCount_ = 0;
    /**
     * <pre>
     * Number of shards.
     * </pre>
     *
     * <code>int32 shard_count = 11;</code>
     * @return The shardCount.
     */
    @java.lang.Override
    public int getShardCount() {
      return shardCount_;
    }

    public static final int PASSED_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> passed_;
    /**
     * <pre>
     * Path to logs of passed runs.
     * </pre>
     *
     * <code>repeated .build_event_stream.File passed = 3;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> getPassedList() {
      return passed_;
    }
    /**
     * <pre>
     * Path to logs of passed runs.
     * </pre>
     *
     * <code>repeated .build_event_stream.File passed = 3;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
        getPassedOrBuilderList() {
      return passed_;
    }
    /**
     * <pre>
     * Path to logs of passed runs.
     * </pre>
     *
     * <code>repeated .build_event_stream.File passed = 3;</code>
     */
    @java.lang.Override
    public int getPassedCount() {
      return passed_.size();
    }
    /**
     * <pre>
     * Path to logs of passed runs.
     * </pre>
     *
     * <code>repeated .build_event_stream.File passed = 3;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getPassed(int index) {
      return passed_.get(index);
    }
    /**
     * <pre>
     * Path to logs of passed runs.
     * </pre>
     *
     * <code>repeated .build_event_stream.File passed = 3;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getPassedOrBuilder(
        int index) {
      return passed_.get(index);
    }

    public static final int FAILED_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> failed_;
    /**
     * <pre>
     * Path to logs of failed runs;
     * </pre>
     *
     * <code>repeated .build_event_stream.File failed = 4;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> getFailedList() {
      return failed_;
    }
    /**
     * <pre>
     * Path to logs of failed runs;
     * </pre>
     *
     * <code>repeated .build_event_stream.File failed = 4;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
        getFailedOrBuilderList() {
      return failed_;
    }
    /**
     * <pre>
     * Path to logs of failed runs;
     * </pre>
     *
     * <code>repeated .build_event_stream.File failed = 4;</code>
     */
    @java.lang.Override
    public int getFailedCount() {
      return failed_.size();
    }
    /**
     * <pre>
     * Path to logs of failed runs;
     * </pre>
     *
     * <code>repeated .build_event_stream.File failed = 4;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getFailed(int index) {
      return failed_.get(index);
    }
    /**
     * <pre>
     * Path to logs of failed runs;
     * </pre>
     *
     * <code>repeated .build_event_stream.File failed = 4;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getFailedOrBuilder(
        int index) {
      return failed_.get(index);
    }

    public static final int TOTAL_NUM_CACHED_FIELD_NUMBER = 6;
    private int totalNumCached_ = 0;
    /**
     * <pre>
     * Total number of cached test actions
     * </pre>
     *
     * <code>int32 total_num_cached = 6;</code>
     * @return The totalNumCached.
     */
    @java.lang.Override
    public int getTotalNumCached() {
      return totalNumCached_;
    }

    public static final int FIRST_START_TIME_MILLIS_FIELD_NUMBER = 7;
    private long firstStartTimeMillis_ = 0L;
    /**
     * <pre>
     * When the test first started running.
     * Deprecated, use `first_start_time` instead.
     * TODO(yannic): Remove.
     * </pre>
     *
     * <code>int64 first_start_time_millis = 7 [deprecated = true];</code>
     * @deprecated build_event_stream.TestSummary.first_start_time_millis is deprecated.
     *     See bazel/build_event_stream.proto;l=748
     * @return The firstStartTimeMillis.
     */
    @java.lang.Override
    @java.lang.Deprecated public long getFirstStartTimeMillis() {
      return firstStartTimeMillis_;
    }

    public static final int FIRST_START_TIME_FIELD_NUMBER = 13;
    private com.google.protobuf.Timestamp firstStartTime_;
    /**
     * <pre>
     * When the test first started running.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp first_start_time = 13;</code>
     * @return Whether the firstStartTime field is set.
     */
    @java.lang.Override
    public boolean hasFirstStartTime() {
      return firstStartTime_ != null;
    }
    /**
     * <pre>
     * When the test first started running.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp first_start_time = 13;</code>
     * @return The firstStartTime.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getFirstStartTime() {
      return firstStartTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : firstStartTime_;
    }
    /**
     * <pre>
     * When the test first started running.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp first_start_time = 13;</code>
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getFirstStartTimeOrBuilder() {
      return firstStartTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : firstStartTime_;
    }

    public static final int LAST_STOP_TIME_MILLIS_FIELD_NUMBER = 8;
    private long lastStopTimeMillis_ = 0L;
    /**
     * <pre>
     * When the last test action completed.
     * Deprecated, use `last_stop_time` instead.
     * TODO(yannic): Remove.
     * </pre>
     *
     * <code>int64 last_stop_time_millis = 8 [deprecated = true];</code>
     * @deprecated build_event_stream.TestSummary.last_stop_time_millis is deprecated.
     *     See bazel/build_event_stream.proto;l=758
     * @return The lastStopTimeMillis.
     */
    @java.lang.Override
    @java.lang.Deprecated public long getLastStopTimeMillis() {
      return lastStopTimeMillis_;
    }

    public static final int LAST_STOP_TIME_FIELD_NUMBER = 14;
    private com.google.protobuf.Timestamp lastStopTime_;
    /**
     * <pre>
     * When the test first started running.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp last_stop_time = 14;</code>
     * @return Whether the lastStopTime field is set.
     */
    @java.lang.Override
    public boolean hasLastStopTime() {
      return lastStopTime_ != null;
    }
    /**
     * <pre>
     * When the test first started running.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp last_stop_time = 14;</code>
     * @return The lastStopTime.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getLastStopTime() {
      return lastStopTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : lastStopTime_;
    }
    /**
     * <pre>
     * When the test first started running.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp last_stop_time = 14;</code>
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getLastStopTimeOrBuilder() {
      return lastStopTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : lastStopTime_;
    }

    public static final int TOTAL_RUN_DURATION_MILLIS_FIELD_NUMBER = 9;
    private long totalRunDurationMillis_ = 0L;
    /**
     * <pre>
     * The total runtime of the test.
     * Deprecated, use `total_run` instead.
     * TODO(yannic): Remove.
     * </pre>
     *
     * <code>int64 total_run_duration_millis = 9 [deprecated = true];</code>
     * @deprecated build_event_stream.TestSummary.total_run_duration_millis is deprecated.
     *     See bazel/build_event_stream.proto;l=768
     * @return The totalRunDurationMillis.
     */
    @java.lang.Override
    @java.lang.Deprecated public long getTotalRunDurationMillis() {
      return totalRunDurationMillis_;
    }

    public static final int TOTAL_RUN_DURATION_FIELD_NUMBER = 12;
    private com.google.protobuf.Duration totalRunDuration_;
    /**
     * <pre>
     * The total runtime of the test.
     * </pre>
     *
     * <code>.google.protobuf.Duration total_run_duration = 12;</code>
     * @return Whether the totalRunDuration field is set.
     */
    @java.lang.Override
    public boolean hasTotalRunDuration() {
      return totalRunDuration_ != null;
    }
    /**
     * <pre>
     * The total runtime of the test.
     * </pre>
     *
     * <code>.google.protobuf.Duration total_run_duration = 12;</code>
     * @return The totalRunDuration.
     */
    @java.lang.Override
    public com.google.protobuf.Duration getTotalRunDuration() {
      return totalRunDuration_ == null ? com.google.protobuf.Duration.getDefaultInstance() : totalRunDuration_;
    }
    /**
     * <pre>
     * The total runtime of the test.
     * </pre>
     *
     * <code>.google.protobuf.Duration total_run_duration = 12;</code>
     */
    @java.lang.Override
    public com.google.protobuf.DurationOrBuilder getTotalRunDurationOrBuilder() {
      return totalRunDuration_ == null ? com.google.protobuf.Duration.getDefaultInstance() : totalRunDuration_;
    }

    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 (totalRunCount_ != 0) {
        output.writeInt32(1, totalRunCount_);
      }
      for (int i = 0; i < passed_.size(); i++) {
        output.writeMessage(3, passed_.get(i));
      }
      for (int i = 0; i < failed_.size(); i++) {
        output.writeMessage(4, failed_.get(i));
      }
      if (overallStatus_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus.NO_STATUS.getNumber()) {
        output.writeEnum(5, overallStatus_);
      }
      if (totalNumCached_ != 0) {
        output.writeInt32(6, totalNumCached_);
      }
      if (firstStartTimeMillis_ != 0L) {
        output.writeInt64(7, firstStartTimeMillis_);
      }
      if (lastStopTimeMillis_ != 0L) {
        output.writeInt64(8, lastStopTimeMillis_);
      }
      if (totalRunDurationMillis_ != 0L) {
        output.writeInt64(9, totalRunDurationMillis_);
      }
      if (runCount_ != 0) {
        output.writeInt32(10, runCount_);
      }
      if (shardCount_ != 0) {
        output.writeInt32(11, shardCount_);
      }
      if (totalRunDuration_ != null) {
        output.writeMessage(12, getTotalRunDuration());
      }
      if (firstStartTime_ != null) {
        output.writeMessage(13, getFirstStartTime());
      }
      if (lastStopTime_ != null) {
        output.writeMessage(14, getLastStopTime());
      }
      if (attemptCount_ != 0) {
        output.writeInt32(15, attemptCount_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (totalRunCount_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, totalRunCount_);
      }
      for (int i = 0; i < passed_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, passed_.get(i));
      }
      for (int i = 0; i < failed_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, failed_.get(i));
      }
      if (overallStatus_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus.NO_STATUS.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(5, overallStatus_);
      }
      if (totalNumCached_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, totalNumCached_);
      }
      if (firstStartTimeMillis_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, firstStartTimeMillis_);
      }
      if (lastStopTimeMillis_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(8, lastStopTimeMillis_);
      }
      if (totalRunDurationMillis_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(9, totalRunDurationMillis_);
      }
      if (runCount_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(10, runCount_);
      }
      if (shardCount_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(11, shardCount_);
      }
      if (totalRunDuration_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, getTotalRunDuration());
      }
      if (firstStartTime_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, getFirstStartTime());
      }
      if (lastStopTime_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, getLastStopTime());
      }
      if (attemptCount_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(15, attemptCount_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (overallStatus_ != other.overallStatus_) return false;
      if (getTotalRunCount()
          != other.getTotalRunCount()) return false;
      if (getRunCount()
          != other.getRunCount()) return false;
      if (getAttemptCount()
          != other.getAttemptCount()) return false;
      if (getShardCount()
          != other.getShardCount()) return false;
      if (!getPassedList()
          .equals(other.getPassedList())) return false;
      if (!getFailedList()
          .equals(other.getFailedList())) return false;
      if (getTotalNumCached()
          != other.getTotalNumCached()) return false;
      if (getFirstStartTimeMillis()
          != other.getFirstStartTimeMillis()) return false;
      if (hasFirstStartTime() != other.hasFirstStartTime()) return false;
      if (hasFirstStartTime()) {
        if (!getFirstStartTime()
            .equals(other.getFirstStartTime())) return false;
      }
      if (getLastStopTimeMillis()
          != other.getLastStopTimeMillis()) return false;
      if (hasLastStopTime() != other.hasLastStopTime()) return false;
      if (hasLastStopTime()) {
        if (!getLastStopTime()
            .equals(other.getLastStopTime())) return false;
      }
      if (getTotalRunDurationMillis()
          != other.getTotalRunDurationMillis()) return false;
      if (hasTotalRunDuration() != other.hasTotalRunDuration()) return false;
      if (hasTotalRunDuration()) {
        if (!getTotalRunDuration()
            .equals(other.getTotalRunDuration())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + OVERALL_STATUS_FIELD_NUMBER;
      hash = (53 * hash) + overallStatus_;
      hash = (37 * hash) + TOTAL_RUN_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + getTotalRunCount();
      hash = (37 * hash) + RUN_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + getRunCount();
      hash = (37 * hash) + ATTEMPT_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + getAttemptCount();
      hash = (37 * hash) + SHARD_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + getShardCount();
      if (getPassedCount() > 0) {
        hash = (37 * hash) + PASSED_FIELD_NUMBER;
        hash = (53 * hash) + getPassedList().hashCode();
      }
      if (getFailedCount() > 0) {
        hash = (37 * hash) + FAILED_FIELD_NUMBER;
        hash = (53 * hash) + getFailedList().hashCode();
      }
      hash = (37 * hash) + TOTAL_NUM_CACHED_FIELD_NUMBER;
      hash = (53 * hash) + getTotalNumCached();
      hash = (37 * hash) + FIRST_START_TIME_MILLIS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getFirstStartTimeMillis());
      if (hasFirstStartTime()) {
        hash = (37 * hash) + FIRST_START_TIME_FIELD_NUMBER;
        hash = (53 * hash) + getFirstStartTime().hashCode();
      }
      hash = (37 * hash) + LAST_STOP_TIME_MILLIS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getLastStopTimeMillis());
      if (hasLastStopTime()) {
        hash = (37 * hash) + LAST_STOP_TIME_FIELD_NUMBER;
        hash = (53 * hash) + getLastStopTime().hashCode();
      }
      hash = (37 * hash) + TOTAL_RUN_DURATION_MILLIS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTotalRunDurationMillis());
      if (hasTotalRunDuration()) {
        hash = (37 * hash) + TOTAL_RUN_DURATION_FIELD_NUMBER;
        hash = (53 * hash) + getTotalRunDuration().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary 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.buildeventstream.BuildEventStreamProtos.TestSummary parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary 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.buildeventstream.BuildEventStreamProtos.TestSummary parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary 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.buildeventstream.BuildEventStreamProtos.TestSummary parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary 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.buildeventstream.BuildEventStreamProtos.TestSummary parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary 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.buildeventstream.BuildEventStreamProtos.TestSummary 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.buildeventstream.BuildEventStreamProtos.TestSummary 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.buildeventstream.BuildEventStreamProtos.TestSummary 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>
     * Payload of the event summarizing a test.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.TestSummary}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.TestSummary)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummaryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestSummary_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestSummary_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        overallStatus_ = 0;
        totalRunCount_ = 0;
        runCount_ = 0;
        attemptCount_ = 0;
        shardCount_ = 0;
        if (passedBuilder_ == null) {
          passed_ = java.util.Collections.emptyList();
        } else {
          passed_ = null;
          passedBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        if (failedBuilder_ == null) {
          failed_ = java.util.Collections.emptyList();
        } else {
          failed_ = null;
          failedBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        totalNumCached_ = 0;
        firstStartTimeMillis_ = 0L;
        firstStartTime_ = null;
        if (firstStartTimeBuilder_ != null) {
          firstStartTimeBuilder_.dispose();
          firstStartTimeBuilder_ = null;
        }
        lastStopTimeMillis_ = 0L;
        lastStopTime_ = null;
        if (lastStopTimeBuilder_ != null) {
          lastStopTimeBuilder_.dispose();
          lastStopTimeBuilder_ = null;
        }
        totalRunDurationMillis_ = 0L;
        totalRunDuration_ = null;
        if (totalRunDurationBuilder_ != null) {
          totalRunDurationBuilder_.dispose();
          totalRunDurationBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TestSummary_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary result) {
        if (passedBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0)) {
            passed_ = java.util.Collections.unmodifiableList(passed_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.passed_ = passed_;
        } else {
          result.passed_ = passedBuilder_.build();
        }
        if (failedBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0)) {
            failed_ = java.util.Collections.unmodifiableList(failed_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.failed_ = failed_;
        } else {
          result.failed_ = failedBuilder_.build();
        }
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.overallStatus_ = overallStatus_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.totalRunCount_ = totalRunCount_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.runCount_ = runCount_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.attemptCount_ = attemptCount_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.shardCount_ = shardCount_;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.totalNumCached_ = totalNumCached_;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.firstStartTimeMillis_ = firstStartTimeMillis_;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.firstStartTime_ = firstStartTimeBuilder_ == null
              ? firstStartTime_
              : firstStartTimeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.lastStopTimeMillis_ = lastStopTimeMillis_;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.lastStopTime_ = lastStopTimeBuilder_ == null
              ? lastStopTime_
              : lastStopTimeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.totalRunDurationMillis_ = totalRunDurationMillis_;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.totalRunDuration_ = totalRunDurationBuilder_ == null
              ? totalRunDuration_
              : totalRunDurationBuilder_.build();
        }
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary.getDefaultInstance()) return this;
        if (other.overallStatus_ != 0) {
          setOverallStatusValue(other.getOverallStatusValue());
        }
        if (other.getTotalRunCount() != 0) {
          setTotalRunCount(other.getTotalRunCount());
        }
        if (other.getRunCount() != 0) {
          setRunCount(other.getRunCount());
        }
        if (other.getAttemptCount() != 0) {
          setAttemptCount(other.getAttemptCount());
        }
        if (other.getShardCount() != 0) {
          setShardCount(other.getShardCount());
        }
        if (passedBuilder_ == null) {
          if (!other.passed_.isEmpty()) {
            if (passed_.isEmpty()) {
              passed_ = other.passed_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensurePassedIsMutable();
              passed_.addAll(other.passed_);
            }
            onChanged();
          }
        } else {
          if (!other.passed_.isEmpty()) {
            if (passedBuilder_.isEmpty()) {
              passedBuilder_.dispose();
              passedBuilder_ = null;
              passed_ = other.passed_;
              bitField0_ = (bitField0_ & ~0x00000020);
              passedBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getPassedFieldBuilder() : null;
            } else {
              passedBuilder_.addAllMessages(other.passed_);
            }
          }
        }
        if (failedBuilder_ == null) {
          if (!other.failed_.isEmpty()) {
            if (failed_.isEmpty()) {
              failed_ = other.failed_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureFailedIsMutable();
              failed_.addAll(other.failed_);
            }
            onChanged();
          }
        } else {
          if (!other.failed_.isEmpty()) {
            if (failedBuilder_.isEmpty()) {
              failedBuilder_.dispose();
              failedBuilder_ = null;
              failed_ = other.failed_;
              bitField0_ = (bitField0_ & ~0x00000040);
              failedBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getFailedFieldBuilder() : null;
            } else {
              failedBuilder_.addAllMessages(other.failed_);
            }
          }
        }
        if (other.getTotalNumCached() != 0) {
          setTotalNumCached(other.getTotalNumCached());
        }
        if (other.getFirstStartTimeMillis() != 0L) {
          setFirstStartTimeMillis(other.getFirstStartTimeMillis());
        }
        if (other.hasFirstStartTime()) {
          mergeFirstStartTime(other.getFirstStartTime());
        }
        if (other.getLastStopTimeMillis() != 0L) {
          setLastStopTimeMillis(other.getLastStopTimeMillis());
        }
        if (other.hasLastStopTime()) {
          mergeLastStopTime(other.getLastStopTime());
        }
        if (other.getTotalRunDurationMillis() != 0L) {
          setTotalRunDurationMillis(other.getTotalRunDurationMillis());
        }
        if (other.hasTotalRunDuration()) {
          mergeTotalRunDuration(other.getTotalRunDuration());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                totalRunCount_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 8
              case 26: {
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File m =
                    input.readMessage(
                        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.parser(),
                        extensionRegistry);
                if (passedBuilder_ == null) {
                  ensurePassedIsMutable();
                  passed_.add(m);
                } else {
                  passedBuilder_.addMessage(m);
                }
                break;
              } // case 26
              case 34: {
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File m =
                    input.readMessage(
                        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.parser(),
                        extensionRegistry);
                if (failedBuilder_ == null) {
                  ensureFailedIsMutable();
                  failed_.add(m);
                } else {
                  failedBuilder_.addMessage(m);
                }
                break;
              } // case 34
              case 40: {
                overallStatus_ = input.readEnum();
                bitField0_ |= 0x00000001;
                break;
              } // case 40
              case 48: {
                totalNumCached_ = input.readInt32();
                bitField0_ |= 0x00000080;
                break;
              } // case 48
              case 56: {
                firstStartTimeMillis_ = input.readInt64();
                bitField0_ |= 0x00000100;
                break;
              } // case 56
              case 64: {
                lastStopTimeMillis_ = input.readInt64();
                bitField0_ |= 0x00000400;
                break;
              } // case 64
              case 72: {
                totalRunDurationMillis_ = input.readInt64();
                bitField0_ |= 0x00001000;
                break;
              } // case 72
              case 80: {
                runCount_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 80
              case 88: {
                shardCount_ = input.readInt32();
                bitField0_ |= 0x00000010;
                break;
              } // case 88
              case 98: {
                input.readMessage(
                    getTotalRunDurationFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00002000;
                break;
              } // case 98
              case 106: {
                input.readMessage(
                    getFirstStartTimeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000200;
                break;
              } // case 106
              case 114: {
                input.readMessage(
                    getLastStopTimeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000800;
                break;
              } // case 114
              case 120: {
                attemptCount_ = input.readInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 120
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int overallStatus_ = 0;
      /**
       * <pre>
       * Wrapper around BlazeTestStatus to support importing that enum to proto3.
       * Overall status of test, accumulated over all runs, shards, and attempts.
       * </pre>
       *
       * <code>.build_event_stream.TestStatus overall_status = 5;</code>
       * @return The enum numeric value on the wire for overallStatus.
       */
      @java.lang.Override public int getOverallStatusValue() {
        return overallStatus_;
      }
      /**
       * <pre>
       * Wrapper around BlazeTestStatus to support importing that enum to proto3.
       * Overall status of test, accumulated over all runs, shards, and attempts.
       * </pre>
       *
       * <code>.build_event_stream.TestStatus overall_status = 5;</code>
       * @param value The enum numeric value on the wire for overallStatus to set.
       * @return This builder for chaining.
       */
      public Builder setOverallStatusValue(int value) {
        overallStatus_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Wrapper around BlazeTestStatus to support importing that enum to proto3.
       * Overall status of test, accumulated over all runs, shards, and attempts.
       * </pre>
       *
       * <code>.build_event_stream.TestStatus overall_status = 5;</code>
       * @return The overallStatus.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus getOverallStatus() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus result = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus.forNumber(overallStatus_);
        return result == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Wrapper around BlazeTestStatus to support importing that enum to proto3.
       * Overall status of test, accumulated over all runs, shards, and attempts.
       * </pre>
       *
       * <code>.build_event_stream.TestStatus overall_status = 5;</code>
       * @param value The overallStatus to set.
       * @return This builder for chaining.
       */
      public Builder setOverallStatus(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        overallStatus_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Wrapper around BlazeTestStatus to support importing that enum to proto3.
       * Overall status of test, accumulated over all runs, shards, and attempts.
       * </pre>
       *
       * <code>.build_event_stream.TestStatus overall_status = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearOverallStatus() {
        bitField0_ = (bitField0_ & ~0x00000001);
        overallStatus_ = 0;
        onChanged();
        return this;
      }

      private int totalRunCount_ ;
      /**
       * <pre>
       * Total number of shard attempts.
       * E.g., if a target has 4 runs, 3 shards, each with 2 attempts,
       * then total_run_count will be 4*3*2 = 24.
       * </pre>
       *
       * <code>int32 total_run_count = 1;</code>
       * @return The totalRunCount.
       */
      @java.lang.Override
      public int getTotalRunCount() {
        return totalRunCount_;
      }
      /**
       * <pre>
       * Total number of shard attempts.
       * E.g., if a target has 4 runs, 3 shards, each with 2 attempts,
       * then total_run_count will be 4*3*2 = 24.
       * </pre>
       *
       * <code>int32 total_run_count = 1;</code>
       * @param value The totalRunCount to set.
       * @return This builder for chaining.
       */
      public Builder setTotalRunCount(int value) {
        
        totalRunCount_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Total number of shard attempts.
       * E.g., if a target has 4 runs, 3 shards, each with 2 attempts,
       * then total_run_count will be 4*3*2 = 24.
       * </pre>
       *
       * <code>int32 total_run_count = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTotalRunCount() {
        bitField0_ = (bitField0_ & ~0x00000002);
        totalRunCount_ = 0;
        onChanged();
        return this;
      }

      private int runCount_ ;
      /**
       * <pre>
       * Value of runs_per_test for the test.
       * </pre>
       *
       * <code>int32 run_count = 10;</code>
       * @return The runCount.
       */
      @java.lang.Override
      public int getRunCount() {
        return runCount_;
      }
      /**
       * <pre>
       * Value of runs_per_test for the test.
       * </pre>
       *
       * <code>int32 run_count = 10;</code>
       * @param value The runCount to set.
       * @return This builder for chaining.
       */
      public Builder setRunCount(int value) {
        
        runCount_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Value of runs_per_test for the test.
       * </pre>
       *
       * <code>int32 run_count = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearRunCount() {
        bitField0_ = (bitField0_ & ~0x00000004);
        runCount_ = 0;
        onChanged();
        return this;
      }

      private int attemptCount_ ;
      /**
       * <pre>
       * Number of attempts.
       * If there are a different number of attempts per shard, the highest attempt
       * count across all shards for each run is used.
       * </pre>
       *
       * <code>int32 attempt_count = 15;</code>
       * @return The attemptCount.
       */
      @java.lang.Override
      public int getAttemptCount() {
        return attemptCount_;
      }
      /**
       * <pre>
       * Number of attempts.
       * If there are a different number of attempts per shard, the highest attempt
       * count across all shards for each run is used.
       * </pre>
       *
       * <code>int32 attempt_count = 15;</code>
       * @param value The attemptCount to set.
       * @return This builder for chaining.
       */
      public Builder setAttemptCount(int value) {
        
        attemptCount_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of attempts.
       * If there are a different number of attempts per shard, the highest attempt
       * count across all shards for each run is used.
       * </pre>
       *
       * <code>int32 attempt_count = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearAttemptCount() {
        bitField0_ = (bitField0_ & ~0x00000008);
        attemptCount_ = 0;
        onChanged();
        return this;
      }

      private int shardCount_ ;
      /**
       * <pre>
       * Number of shards.
       * </pre>
       *
       * <code>int32 shard_count = 11;</code>
       * @return The shardCount.
       */
      @java.lang.Override
      public int getShardCount() {
        return shardCount_;
      }
      /**
       * <pre>
       * Number of shards.
       * </pre>
       *
       * <code>int32 shard_count = 11;</code>
       * @param value The shardCount to set.
       * @return This builder for chaining.
       */
      public Builder setShardCount(int value) {
        
        shardCount_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of shards.
       * </pre>
       *
       * <code>int32 shard_count = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearShardCount() {
        bitField0_ = (bitField0_ & ~0x00000010);
        shardCount_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> passed_ =
        java.util.Collections.emptyList();
      private void ensurePassedIsMutable() {
        if (!((bitField0_ & 0x00000020) != 0)) {
          passed_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File>(passed_);
          bitField0_ |= 0x00000020;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> passedBuilder_;

      /**
       * <pre>
       * Path to logs of passed runs.
       * </pre>
       *
       * <code>repeated .build_event_stream.File passed = 3;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> getPassedList() {
        if (passedBuilder_ == null) {
          return java.util.Collections.unmodifiableList(passed_);
        } else {
          return passedBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Path to logs of passed runs.
       * </pre>
       *
       * <code>repeated .build_event_stream.File passed = 3;</code>
       */
      public int getPassedCount() {
        if (passedBuilder_ == null) {
          return passed_.size();
        } else {
          return passedBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Path to logs of passed runs.
       * </pre>
       *
       * <code>repeated .build_event_stream.File passed = 3;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getPassed(int index) {
        if (passedBuilder_ == null) {
          return passed_.get(index);
        } else {
          return passedBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Path to logs of passed runs.
       * </pre>
       *
       * <code>repeated .build_event_stream.File passed = 3;</code>
       */
      public Builder setPassed(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (passedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePassedIsMutable();
          passed_.set(index, value);
          onChanged();
        } else {
          passedBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Path to logs of passed runs.
       * </pre>
       *
       * <code>repeated .build_event_stream.File passed = 3;</code>
       */
      public Builder setPassed(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (passedBuilder_ == null) {
          ensurePassedIsMutable();
          passed_.set(index, builderForValue.build());
          onChanged();
        } else {
          passedBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Path to logs of passed runs.
       * </pre>
       *
       * <code>repeated .build_event_stream.File passed = 3;</code>
       */
      public Builder addPassed(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (passedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePassedIsMutable();
          passed_.add(value);
          onChanged();
        } else {
          passedBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Path to logs of passed runs.
       * </pre>
       *
       * <code>repeated .build_event_stream.File passed = 3;</code>
       */
      public Builder addPassed(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (passedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePassedIsMutable();
          passed_.add(index, value);
          onChanged();
        } else {
          passedBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Path to logs of passed runs.
       * </pre>
       *
       * <code>repeated .build_event_stream.File passed = 3;</code>
       */
      public Builder addPassed(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (passedBuilder_ == null) {
          ensurePassedIsMutable();
          passed_.add(builderForValue.build());
          onChanged();
        } else {
          passedBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Path to logs of passed runs.
       * </pre>
       *
       * <code>repeated .build_event_stream.File passed = 3;</code>
       */
      public Builder addPassed(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (passedBuilder_ == null) {
          ensurePassedIsMutable();
          passed_.add(index, builderForValue.build());
          onChanged();
        } else {
          passedBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Path to logs of passed runs.
       * </pre>
       *
       * <code>repeated .build_event_stream.File passed = 3;</code>
       */
      public Builder addAllPassed(
          java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> values) {
        if (passedBuilder_ == null) {
          ensurePassedIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, passed_);
          onChanged();
        } else {
          passedBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Path to logs of passed runs.
       * </pre>
       *
       * <code>repeated .build_event_stream.File passed = 3;</code>
       */
      public Builder clearPassed() {
        if (passedBuilder_ == null) {
          passed_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          passedBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Path to logs of passed runs.
       * </pre>
       *
       * <code>repeated .build_event_stream.File passed = 3;</code>
       */
      public Builder removePassed(int index) {
        if (passedBuilder_ == null) {
          ensurePassedIsMutable();
          passed_.remove(index);
          onChanged();
        } else {
          passedBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Path to logs of passed runs.
       * </pre>
       *
       * <code>repeated .build_event_stream.File passed = 3;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder getPassedBuilder(
          int index) {
        return getPassedFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Path to logs of passed runs.
       * </pre>
       *
       * <code>repeated .build_event_stream.File passed = 3;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getPassedOrBuilder(
          int index) {
        if (passedBuilder_ == null) {
          return passed_.get(index);  } else {
          return passedBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Path to logs of passed runs.
       * </pre>
       *
       * <code>repeated .build_event_stream.File passed = 3;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
           getPassedOrBuilderList() {
        if (passedBuilder_ != null) {
          return passedBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(passed_);
        }
      }
      /**
       * <pre>
       * Path to logs of passed runs.
       * </pre>
       *
       * <code>repeated .build_event_stream.File passed = 3;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder addPassedBuilder() {
        return getPassedFieldBuilder().addBuilder(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance());
      }
      /**
       * <pre>
       * Path to logs of passed runs.
       * </pre>
       *
       * <code>repeated .build_event_stream.File passed = 3;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder addPassedBuilder(
          int index) {
        return getPassedFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance());
      }
      /**
       * <pre>
       * Path to logs of passed runs.
       * </pre>
       *
       * <code>repeated .build_event_stream.File passed = 3;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder> 
           getPassedBuilderList() {
        return getPassedFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
          getPassedFieldBuilder() {
        if (passedBuilder_ == null) {
          passedBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder>(
                  passed_,
                  ((bitField0_ & 0x00000020) != 0),
                  getParentForChildren(),
                  isClean());
          passed_ = null;
        }
        return passedBuilder_;
      }

      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> failed_ =
        java.util.Collections.emptyList();
      private void ensureFailedIsMutable() {
        if (!((bitField0_ & 0x00000040) != 0)) {
          failed_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File>(failed_);
          bitField0_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> failedBuilder_;

      /**
       * <pre>
       * Path to logs of failed runs;
       * </pre>
       *
       * <code>repeated .build_event_stream.File failed = 4;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> getFailedList() {
        if (failedBuilder_ == null) {
          return java.util.Collections.unmodifiableList(failed_);
        } else {
          return failedBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Path to logs of failed runs;
       * </pre>
       *
       * <code>repeated .build_event_stream.File failed = 4;</code>
       */
      public int getFailedCount() {
        if (failedBuilder_ == null) {
          return failed_.size();
        } else {
          return failedBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Path to logs of failed runs;
       * </pre>
       *
       * <code>repeated .build_event_stream.File failed = 4;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getFailed(int index) {
        if (failedBuilder_ == null) {
          return failed_.get(index);
        } else {
          return failedBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Path to logs of failed runs;
       * </pre>
       *
       * <code>repeated .build_event_stream.File failed = 4;</code>
       */
      public Builder setFailed(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (failedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFailedIsMutable();
          failed_.set(index, value);
          onChanged();
        } else {
          failedBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Path to logs of failed runs;
       * </pre>
       *
       * <code>repeated .build_event_stream.File failed = 4;</code>
       */
      public Builder setFailed(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (failedBuilder_ == null) {
          ensureFailedIsMutable();
          failed_.set(index, builderForValue.build());
          onChanged();
        } else {
          failedBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Path to logs of failed runs;
       * </pre>
       *
       * <code>repeated .build_event_stream.File failed = 4;</code>
       */
      public Builder addFailed(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (failedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFailedIsMutable();
          failed_.add(value);
          onChanged();
        } else {
          failedBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Path to logs of failed runs;
       * </pre>
       *
       * <code>repeated .build_event_stream.File failed = 4;</code>
       */
      public Builder addFailed(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (failedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFailedIsMutable();
          failed_.add(index, value);
          onChanged();
        } else {
          failedBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Path to logs of failed runs;
       * </pre>
       *
       * <code>repeated .build_event_stream.File failed = 4;</code>
       */
      public Builder addFailed(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (failedBuilder_ == null) {
          ensureFailedIsMutable();
          failed_.add(builderForValue.build());
          onChanged();
        } else {
          failedBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Path to logs of failed runs;
       * </pre>
       *
       * <code>repeated .build_event_stream.File failed = 4;</code>
       */
      public Builder addFailed(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (failedBuilder_ == null) {
          ensureFailedIsMutable();
          failed_.add(index, builderForValue.build());
          onChanged();
        } else {
          failedBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Path to logs of failed runs;
       * </pre>
       *
       * <code>repeated .build_event_stream.File failed = 4;</code>
       */
      public Builder addAllFailed(
          java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> values) {
        if (failedBuilder_ == null) {
          ensureFailedIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, failed_);
          onChanged();
        } else {
          failedBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Path to logs of failed runs;
       * </pre>
       *
       * <code>repeated .build_event_stream.File failed = 4;</code>
       */
      public Builder clearFailed() {
        if (failedBuilder_ == null) {
          failed_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          failedBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Path to logs of failed runs;
       * </pre>
       *
       * <code>repeated .build_event_stream.File failed = 4;</code>
       */
      public Builder removeFailed(int index) {
        if (failedBuilder_ == null) {
          ensureFailedIsMutable();
          failed_.remove(index);
          onChanged();
        } else {
          failedBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Path to logs of failed runs;
       * </pre>
       *
       * <code>repeated .build_event_stream.File failed = 4;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder getFailedBuilder(
          int index) {
        return getFailedFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Path to logs of failed runs;
       * </pre>
       *
       * <code>repeated .build_event_stream.File failed = 4;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getFailedOrBuilder(
          int index) {
        if (failedBuilder_ == null) {
          return failed_.get(index);  } else {
          return failedBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Path to logs of failed runs;
       * </pre>
       *
       * <code>repeated .build_event_stream.File failed = 4;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
           getFailedOrBuilderList() {
        if (failedBuilder_ != null) {
          return failedBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(failed_);
        }
      }
      /**
       * <pre>
       * Path to logs of failed runs;
       * </pre>
       *
       * <code>repeated .build_event_stream.File failed = 4;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder addFailedBuilder() {
        return getFailedFieldBuilder().addBuilder(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance());
      }
      /**
       * <pre>
       * Path to logs of failed runs;
       * </pre>
       *
       * <code>repeated .build_event_stream.File failed = 4;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder addFailedBuilder(
          int index) {
        return getFailedFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance());
      }
      /**
       * <pre>
       * Path to logs of failed runs;
       * </pre>
       *
       * <code>repeated .build_event_stream.File failed = 4;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder> 
           getFailedBuilderList() {
        return getFailedFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
          getFailedFieldBuilder() {
        if (failedBuilder_ == null) {
          failedBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder>(
                  failed_,
                  ((bitField0_ & 0x00000040) != 0),
                  getParentForChildren(),
                  isClean());
          failed_ = null;
        }
        return failedBuilder_;
      }

      private int totalNumCached_ ;
      /**
       * <pre>
       * Total number of cached test actions
       * </pre>
       *
       * <code>int32 total_num_cached = 6;</code>
       * @return The totalNumCached.
       */
      @java.lang.Override
      public int getTotalNumCached() {
        return totalNumCached_;
      }
      /**
       * <pre>
       * Total number of cached test actions
       * </pre>
       *
       * <code>int32 total_num_cached = 6;</code>
       * @param value The totalNumCached to set.
       * @return This builder for chaining.
       */
      public Builder setTotalNumCached(int value) {
        
        totalNumCached_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Total number of cached test actions
       * </pre>
       *
       * <code>int32 total_num_cached = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearTotalNumCached() {
        bitField0_ = (bitField0_ & ~0x00000080);
        totalNumCached_ = 0;
        onChanged();
        return this;
      }

      private long firstStartTimeMillis_ ;
      /**
       * <pre>
       * When the test first started running.
       * Deprecated, use `first_start_time` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 first_start_time_millis = 7 [deprecated = true];</code>
       * @deprecated build_event_stream.TestSummary.first_start_time_millis is deprecated.
       *     See bazel/build_event_stream.proto;l=748
       * @return The firstStartTimeMillis.
       */
      @java.lang.Override
      @java.lang.Deprecated public long getFirstStartTimeMillis() {
        return firstStartTimeMillis_;
      }
      /**
       * <pre>
       * When the test first started running.
       * Deprecated, use `first_start_time` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 first_start_time_millis = 7 [deprecated = true];</code>
       * @deprecated build_event_stream.TestSummary.first_start_time_millis is deprecated.
       *     See bazel/build_event_stream.proto;l=748
       * @param value The firstStartTimeMillis to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setFirstStartTimeMillis(long value) {
        
        firstStartTimeMillis_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * When the test first started running.
       * Deprecated, use `first_start_time` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 first_start_time_millis = 7 [deprecated = true];</code>
       * @deprecated build_event_stream.TestSummary.first_start_time_millis is deprecated.
       *     See bazel/build_event_stream.proto;l=748
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder clearFirstStartTimeMillis() {
        bitField0_ = (bitField0_ & ~0x00000100);
        firstStartTimeMillis_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.Timestamp firstStartTime_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> firstStartTimeBuilder_;
      /**
       * <pre>
       * When the test first started running.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp first_start_time = 13;</code>
       * @return Whether the firstStartTime field is set.
       */
      public boolean hasFirstStartTime() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * When the test first started running.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp first_start_time = 13;</code>
       * @return The firstStartTime.
       */
      public com.google.protobuf.Timestamp getFirstStartTime() {
        if (firstStartTimeBuilder_ == null) {
          return firstStartTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : firstStartTime_;
        } else {
          return firstStartTimeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * When the test first started running.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp first_start_time = 13;</code>
       */
      public Builder setFirstStartTime(com.google.protobuf.Timestamp value) {
        if (firstStartTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          firstStartTime_ = value;
        } else {
          firstStartTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * When the test first started running.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp first_start_time = 13;</code>
       */
      public Builder setFirstStartTime(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (firstStartTimeBuilder_ == null) {
          firstStartTime_ = builderForValue.build();
        } else {
          firstStartTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * When the test first started running.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp first_start_time = 13;</code>
       */
      public Builder mergeFirstStartTime(com.google.protobuf.Timestamp value) {
        if (firstStartTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0) &&
            firstStartTime_ != null &&
            firstStartTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
            getFirstStartTimeBuilder().mergeFrom(value);
          } else {
            firstStartTime_ = value;
          }
        } else {
          firstStartTimeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * When the test first started running.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp first_start_time = 13;</code>
       */
      public Builder clearFirstStartTime() {
        bitField0_ = (bitField0_ & ~0x00000200);
        firstStartTime_ = null;
        if (firstStartTimeBuilder_ != null) {
          firstStartTimeBuilder_.dispose();
          firstStartTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * When the test first started running.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp first_start_time = 13;</code>
       */
      public com.google.protobuf.Timestamp.Builder getFirstStartTimeBuilder() {
        bitField0_ |= 0x00000200;
        onChanged();
        return getFirstStartTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * When the test first started running.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp first_start_time = 13;</code>
       */
      public com.google.protobuf.TimestampOrBuilder getFirstStartTimeOrBuilder() {
        if (firstStartTimeBuilder_ != null) {
          return firstStartTimeBuilder_.getMessageOrBuilder();
        } else {
          return firstStartTime_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : firstStartTime_;
        }
      }
      /**
       * <pre>
       * When the test first started running.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp first_start_time = 13;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getFirstStartTimeFieldBuilder() {
        if (firstStartTimeBuilder_ == null) {
          firstStartTimeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getFirstStartTime(),
                  getParentForChildren(),
                  isClean());
          firstStartTime_ = null;
        }
        return firstStartTimeBuilder_;
      }

      private long lastStopTimeMillis_ ;
      /**
       * <pre>
       * When the last test action completed.
       * Deprecated, use `last_stop_time` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 last_stop_time_millis = 8 [deprecated = true];</code>
       * @deprecated build_event_stream.TestSummary.last_stop_time_millis is deprecated.
       *     See bazel/build_event_stream.proto;l=758
       * @return The lastStopTimeMillis.
       */
      @java.lang.Override
      @java.lang.Deprecated public long getLastStopTimeMillis() {
        return lastStopTimeMillis_;
      }
      /**
       * <pre>
       * When the last test action completed.
       * Deprecated, use `last_stop_time` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 last_stop_time_millis = 8 [deprecated = true];</code>
       * @deprecated build_event_stream.TestSummary.last_stop_time_millis is deprecated.
       *     See bazel/build_event_stream.proto;l=758
       * @param value The lastStopTimeMillis to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setLastStopTimeMillis(long value) {
        
        lastStopTimeMillis_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * When the last test action completed.
       * Deprecated, use `last_stop_time` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 last_stop_time_millis = 8 [deprecated = true];</code>
       * @deprecated build_event_stream.TestSummary.last_stop_time_millis is deprecated.
       *     See bazel/build_event_stream.proto;l=758
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder clearLastStopTimeMillis() {
        bitField0_ = (bitField0_ & ~0x00000400);
        lastStopTimeMillis_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.Timestamp lastStopTime_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> lastStopTimeBuilder_;
      /**
       * <pre>
       * When the test first started running.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp last_stop_time = 14;</code>
       * @return Whether the lastStopTime field is set.
       */
      public boolean hasLastStopTime() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <pre>
       * When the test first started running.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp last_stop_time = 14;</code>
       * @return The lastStopTime.
       */
      public com.google.protobuf.Timestamp getLastStopTime() {
        if (lastStopTimeBuilder_ == null) {
          return lastStopTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : lastStopTime_;
        } else {
          return lastStopTimeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * When the test first started running.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp last_stop_time = 14;</code>
       */
      public Builder setLastStopTime(com.google.protobuf.Timestamp value) {
        if (lastStopTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          lastStopTime_ = value;
        } else {
          lastStopTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * When the test first started running.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp last_stop_time = 14;</code>
       */
      public Builder setLastStopTime(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (lastStopTimeBuilder_ == null) {
          lastStopTime_ = builderForValue.build();
        } else {
          lastStopTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * When the test first started running.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp last_stop_time = 14;</code>
       */
      public Builder mergeLastStopTime(com.google.protobuf.Timestamp value) {
        if (lastStopTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000800) != 0) &&
            lastStopTime_ != null &&
            lastStopTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
            getLastStopTimeBuilder().mergeFrom(value);
          } else {
            lastStopTime_ = value;
          }
        } else {
          lastStopTimeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * When the test first started running.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp last_stop_time = 14;</code>
       */
      public Builder clearLastStopTime() {
        bitField0_ = (bitField0_ & ~0x00000800);
        lastStopTime_ = null;
        if (lastStopTimeBuilder_ != null) {
          lastStopTimeBuilder_.dispose();
          lastStopTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * When the test first started running.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp last_stop_time = 14;</code>
       */
      public com.google.protobuf.Timestamp.Builder getLastStopTimeBuilder() {
        bitField0_ |= 0x00000800;
        onChanged();
        return getLastStopTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * When the test first started running.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp last_stop_time = 14;</code>
       */
      public com.google.protobuf.TimestampOrBuilder getLastStopTimeOrBuilder() {
        if (lastStopTimeBuilder_ != null) {
          return lastStopTimeBuilder_.getMessageOrBuilder();
        } else {
          return lastStopTime_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : lastStopTime_;
        }
      }
      /**
       * <pre>
       * When the test first started running.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp last_stop_time = 14;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getLastStopTimeFieldBuilder() {
        if (lastStopTimeBuilder_ == null) {
          lastStopTimeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getLastStopTime(),
                  getParentForChildren(),
                  isClean());
          lastStopTime_ = null;
        }
        return lastStopTimeBuilder_;
      }

      private long totalRunDurationMillis_ ;
      /**
       * <pre>
       * The total runtime of the test.
       * Deprecated, use `total_run` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 total_run_duration_millis = 9 [deprecated = true];</code>
       * @deprecated build_event_stream.TestSummary.total_run_duration_millis is deprecated.
       *     See bazel/build_event_stream.proto;l=768
       * @return The totalRunDurationMillis.
       */
      @java.lang.Override
      @java.lang.Deprecated public long getTotalRunDurationMillis() {
        return totalRunDurationMillis_;
      }
      /**
       * <pre>
       * The total runtime of the test.
       * Deprecated, use `total_run` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 total_run_duration_millis = 9 [deprecated = true];</code>
       * @deprecated build_event_stream.TestSummary.total_run_duration_millis is deprecated.
       *     See bazel/build_event_stream.proto;l=768
       * @param value The totalRunDurationMillis to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setTotalRunDurationMillis(long value) {
        
        totalRunDurationMillis_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The total runtime of the test.
       * Deprecated, use `total_run` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 total_run_duration_millis = 9 [deprecated = true];</code>
       * @deprecated build_event_stream.TestSummary.total_run_duration_millis is deprecated.
       *     See bazel/build_event_stream.proto;l=768
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder clearTotalRunDurationMillis() {
        bitField0_ = (bitField0_ & ~0x00001000);
        totalRunDurationMillis_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.Duration totalRunDuration_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> totalRunDurationBuilder_;
      /**
       * <pre>
       * The total runtime of the test.
       * </pre>
       *
       * <code>.google.protobuf.Duration total_run_duration = 12;</code>
       * @return Whether the totalRunDuration field is set.
       */
      public boolean hasTotalRunDuration() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * <pre>
       * The total runtime of the test.
       * </pre>
       *
       * <code>.google.protobuf.Duration total_run_duration = 12;</code>
       * @return The totalRunDuration.
       */
      public com.google.protobuf.Duration getTotalRunDuration() {
        if (totalRunDurationBuilder_ == null) {
          return totalRunDuration_ == null ? com.google.protobuf.Duration.getDefaultInstance() : totalRunDuration_;
        } else {
          return totalRunDurationBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The total runtime of the test.
       * </pre>
       *
       * <code>.google.protobuf.Duration total_run_duration = 12;</code>
       */
      public Builder setTotalRunDuration(com.google.protobuf.Duration value) {
        if (totalRunDurationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          totalRunDuration_ = value;
        } else {
          totalRunDurationBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The total runtime of the test.
       * </pre>
       *
       * <code>.google.protobuf.Duration total_run_duration = 12;</code>
       */
      public Builder setTotalRunDuration(
          com.google.protobuf.Duration.Builder builderForValue) {
        if (totalRunDurationBuilder_ == null) {
          totalRunDuration_ = builderForValue.build();
        } else {
          totalRunDurationBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The total runtime of the test.
       * </pre>
       *
       * <code>.google.protobuf.Duration total_run_duration = 12;</code>
       */
      public Builder mergeTotalRunDuration(com.google.protobuf.Duration value) {
        if (totalRunDurationBuilder_ == null) {
          if (((bitField0_ & 0x00002000) != 0) &&
            totalRunDuration_ != null &&
            totalRunDuration_ != com.google.protobuf.Duration.getDefaultInstance()) {
            getTotalRunDurationBuilder().mergeFrom(value);
          } else {
            totalRunDuration_ = value;
          }
        } else {
          totalRunDurationBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The total runtime of the test.
       * </pre>
       *
       * <code>.google.protobuf.Duration total_run_duration = 12;</code>
       */
      public Builder clearTotalRunDuration() {
        bitField0_ = (bitField0_ & ~0x00002000);
        totalRunDuration_ = null;
        if (totalRunDurationBuilder_ != null) {
          totalRunDurationBuilder_.dispose();
          totalRunDurationBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The total runtime of the test.
       * </pre>
       *
       * <code>.google.protobuf.Duration total_run_duration = 12;</code>
       */
      public com.google.protobuf.Duration.Builder getTotalRunDurationBuilder() {
        bitField0_ |= 0x00002000;
        onChanged();
        return getTotalRunDurationFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The total runtime of the test.
       * </pre>
       *
       * <code>.google.protobuf.Duration total_run_duration = 12;</code>
       */
      public com.google.protobuf.DurationOrBuilder getTotalRunDurationOrBuilder() {
        if (totalRunDurationBuilder_ != null) {
          return totalRunDurationBuilder_.getMessageOrBuilder();
        } else {
          return totalRunDuration_ == null ?
              com.google.protobuf.Duration.getDefaultInstance() : totalRunDuration_;
        }
      }
      /**
       * <pre>
       * The total runtime of the test.
       * </pre>
       *
       * <code>.google.protobuf.Duration total_run_duration = 12;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> 
          getTotalRunDurationFieldBuilder() {
        if (totalRunDurationBuilder_ == null) {
          totalRunDurationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>(
                  getTotalRunDuration(),
                  getParentForChildren(),
                  isClean());
          totalRunDuration_ = null;
        }
        return totalRunDurationBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:build_event_stream.TestSummary)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.TestSummary)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TargetSummaryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.TargetSummary)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Conjunction of TargetComplete events for this target, including aspects.
     * </pre>
     *
     * <code>bool overall_build_success = 1;</code>
     * @return The overallBuildSuccess.
     */
    boolean getOverallBuildSuccess();

    /**
     * <pre>
     * Repeats TestSummary's overall_status if available.
     * </pre>
     *
     * <code>.build_event_stream.TestStatus overall_test_status = 2;</code>
     * @return The enum numeric value on the wire for overallTestStatus.
     */
    int getOverallTestStatusValue();
    /**
     * <pre>
     * Repeats TestSummary's overall_status if available.
     * </pre>
     *
     * <code>.build_event_stream.TestStatus overall_test_status = 2;</code>
     * @return The overallTestStatus.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus getOverallTestStatus();
  }
  /**
   * <pre>
   * Payload of the event summarizing a target (test or non-test).
   * </pre>
   *
   * Protobuf type {@code build_event_stream.TargetSummary}
   */
  public static final class TargetSummary extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.TargetSummary)
      TargetSummaryOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TargetSummary.newBuilder() to construct.
    private TargetSummary(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TargetSummary() {
      overallTestStatus_ = 0;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TargetSummary_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TargetSummary_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary.Builder.class);
    }

    public static final int OVERALL_BUILD_SUCCESS_FIELD_NUMBER = 1;
    private boolean overallBuildSuccess_ = false;
    /**
     * <pre>
     * Conjunction of TargetComplete events for this target, including aspects.
     * </pre>
     *
     * <code>bool overall_build_success = 1;</code>
     * @return The overallBuildSuccess.
     */
    @java.lang.Override
    public boolean getOverallBuildSuccess() {
      return overallBuildSuccess_;
    }

    public static final int OVERALL_TEST_STATUS_FIELD_NUMBER = 2;
    private int overallTestStatus_ = 0;
    /**
     * <pre>
     * Repeats TestSummary's overall_status if available.
     * </pre>
     *
     * <code>.build_event_stream.TestStatus overall_test_status = 2;</code>
     * @return The enum numeric value on the wire for overallTestStatus.
     */
    @java.lang.Override public int getOverallTestStatusValue() {
      return overallTestStatus_;
    }
    /**
     * <pre>
     * Repeats TestSummary's overall_status if available.
     * </pre>
     *
     * <code>.build_event_stream.TestStatus overall_test_status = 2;</code>
     * @return The overallTestStatus.
     */
    @java.lang.Override public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus getOverallTestStatus() {
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus result = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus.forNumber(overallTestStatus_);
      return result == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus.UNRECOGNIZED : result;
    }

    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 (overallBuildSuccess_ != false) {
        output.writeBool(1, overallBuildSuccess_);
      }
      if (overallTestStatus_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus.NO_STATUS.getNumber()) {
        output.writeEnum(2, overallTestStatus_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (overallBuildSuccess_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, overallBuildSuccess_);
      }
      if (overallTestStatus_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus.NO_STATUS.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, overallTestStatus_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (getOverallBuildSuccess()
          != other.getOverallBuildSuccess()) return false;
      if (overallTestStatus_ != other.overallTestStatus_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + OVERALL_BUILD_SUCCESS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getOverallBuildSuccess());
      hash = (37 * hash) + OVERALL_TEST_STATUS_FIELD_NUMBER;
      hash = (53 * hash) + overallTestStatus_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary 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.buildeventstream.BuildEventStreamProtos.TargetSummary parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary 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.buildeventstream.BuildEventStreamProtos.TargetSummary parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary 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.buildeventstream.BuildEventStreamProtos.TargetSummary parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary 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.buildeventstream.BuildEventStreamProtos.TargetSummary parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary 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.buildeventstream.BuildEventStreamProtos.TargetSummary 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.buildeventstream.BuildEventStreamProtos.TargetSummary 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.buildeventstream.BuildEventStreamProtos.TargetSummary 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>
     * Payload of the event summarizing a target (test or non-test).
     * </pre>
     *
     * Protobuf type {@code build_event_stream.TargetSummary}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.TargetSummary)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummaryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TargetSummary_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TargetSummary_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        overallBuildSuccess_ = false;
        overallTestStatus_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_TargetSummary_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.overallBuildSuccess_ = overallBuildSuccess_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.overallTestStatus_ = overallTestStatus_;
        }
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary.getDefaultInstance()) return this;
        if (other.getOverallBuildSuccess() != false) {
          setOverallBuildSuccess(other.getOverallBuildSuccess());
        }
        if (other.overallTestStatus_ != 0) {
          setOverallTestStatusValue(other.getOverallTestStatusValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                overallBuildSuccess_ = input.readBool();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                overallTestStatus_ = input.readEnum();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private boolean overallBuildSuccess_ ;
      /**
       * <pre>
       * Conjunction of TargetComplete events for this target, including aspects.
       * </pre>
       *
       * <code>bool overall_build_success = 1;</code>
       * @return The overallBuildSuccess.
       */
      @java.lang.Override
      public boolean getOverallBuildSuccess() {
        return overallBuildSuccess_;
      }
      /**
       * <pre>
       * Conjunction of TargetComplete events for this target, including aspects.
       * </pre>
       *
       * <code>bool overall_build_success = 1;</code>
       * @param value The overallBuildSuccess to set.
       * @return This builder for chaining.
       */
      public Builder setOverallBuildSuccess(boolean value) {
        
        overallBuildSuccess_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Conjunction of TargetComplete events for this target, including aspects.
       * </pre>
       *
       * <code>bool overall_build_success = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearOverallBuildSuccess() {
        bitField0_ = (bitField0_ & ~0x00000001);
        overallBuildSuccess_ = false;
        onChanged();
        return this;
      }

      private int overallTestStatus_ = 0;
      /**
       * <pre>
       * Repeats TestSummary's overall_status if available.
       * </pre>
       *
       * <code>.build_event_stream.TestStatus overall_test_status = 2;</code>
       * @return The enum numeric value on the wire for overallTestStatus.
       */
      @java.lang.Override public int getOverallTestStatusValue() {
        return overallTestStatus_;
      }
      /**
       * <pre>
       * Repeats TestSummary's overall_status if available.
       * </pre>
       *
       * <code>.build_event_stream.TestStatus overall_test_status = 2;</code>
       * @param value The enum numeric value on the wire for overallTestStatus to set.
       * @return This builder for chaining.
       */
      public Builder setOverallTestStatusValue(int value) {
        overallTestStatus_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Repeats TestSummary's overall_status if available.
       * </pre>
       *
       * <code>.build_event_stream.TestStatus overall_test_status = 2;</code>
       * @return The overallTestStatus.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus getOverallTestStatus() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus result = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus.forNumber(overallTestStatus_);
        return result == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Repeats TestSummary's overall_status if available.
       * </pre>
       *
       * <code>.build_event_stream.TestStatus overall_test_status = 2;</code>
       * @param value The overallTestStatus to set.
       * @return This builder for chaining.
       */
      public Builder setOverallTestStatus(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        overallTestStatus_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Repeats TestSummary's overall_status if available.
       * </pre>
       *
       * <code>.build_event_stream.TestStatus overall_test_status = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearOverallTestStatus() {
        bitField0_ = (bitField0_ & ~0x00000002);
        overallTestStatus_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:build_event_stream.TargetSummary)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.TargetSummary)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BuildFinishedOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.BuildFinished)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * If the build succeeded or failed.
     * </pre>
     *
     * <code>bool overall_success = 1 [deprecated = true];</code>
     * @deprecated build_event_stream.BuildFinished.overall_success is deprecated.
     *     See bazel/build_event_stream.proto;l=810
     * @return The overallSuccess.
     */
    @java.lang.Deprecated boolean getOverallSuccess();

    /**
     * <pre>
     * The overall status of the build. A build was successful iff
     * ExitCode.code equals 0.
     * </pre>
     *
     * <code>.build_event_stream.BuildFinished.ExitCode exit_code = 3;</code>
     * @return Whether the exitCode field is set.
     */
    boolean hasExitCode();
    /**
     * <pre>
     * The overall status of the build. A build was successful iff
     * ExitCode.code equals 0.
     * </pre>
     *
     * <code>.build_event_stream.BuildFinished.ExitCode exit_code = 3;</code>
     * @return The exitCode.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode getExitCode();
    /**
     * <pre>
     * The overall status of the build. A build was successful iff
     * ExitCode.code equals 0.
     * </pre>
     *
     * <code>.build_event_stream.BuildFinished.ExitCode exit_code = 3;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCodeOrBuilder getExitCodeOrBuilder();

    /**
     * <pre>
     * End of the build in ms since the epoch.
     * Deprecated, use `finish_time` instead.
     * TODO(yannic): Remove.
     * </pre>
     *
     * <code>int64 finish_time_millis = 2 [deprecated = true];</code>
     * @deprecated build_event_stream.BuildFinished.finish_time_millis is deprecated.
     *     See bazel/build_event_stream.proto;l=821
     * @return The finishTimeMillis.
     */
    @java.lang.Deprecated long getFinishTimeMillis();

    /**
     * <pre>
     * End of the build.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp finish_time = 5;</code>
     * @return Whether the finishTime field is set.
     */
    boolean hasFinishTime();
    /**
     * <pre>
     * End of the build.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp finish_time = 5;</code>
     * @return The finishTime.
     */
    com.google.protobuf.Timestamp getFinishTime();
    /**
     * <pre>
     * End of the build.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp finish_time = 5;</code>
     */
    com.google.protobuf.TimestampOrBuilder getFinishTimeOrBuilder();

    /**
     * <code>.build_event_stream.BuildFinished.AnomalyReport anomaly_report = 4 [deprecated = true];</code>
     * @deprecated build_event_stream.BuildFinished.anomaly_report is deprecated.
     *     See bazel/build_event_stream.proto;l=826
     * @return Whether the anomalyReport field is set.
     */
    @java.lang.Deprecated boolean hasAnomalyReport();
    /**
     * <code>.build_event_stream.BuildFinished.AnomalyReport anomaly_report = 4 [deprecated = true];</code>
     * @deprecated build_event_stream.BuildFinished.anomaly_report is deprecated.
     *     See bazel/build_event_stream.proto;l=826
     * @return The anomalyReport.
     */
    @java.lang.Deprecated com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport getAnomalyReport();
    /**
     * <code>.build_event_stream.BuildFinished.AnomalyReport anomaly_report = 4 [deprecated = true];</code>
     */
    @java.lang.Deprecated com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReportOrBuilder getAnomalyReportOrBuilder();
  }
  /**
   * <pre>
   * Event indicating the end of a build.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.BuildFinished}
   */
  public static final class BuildFinished extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.BuildFinished)
      BuildFinishedOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BuildFinished.newBuilder() to construct.
    private BuildFinished(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BuildFinished() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildFinished_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildFinished_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.Builder.class);
    }

    public interface ExitCodeOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildFinished.ExitCode)
        com.google.protobuf.MessageOrBuilder {

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

      /**
       * <pre>
       * The exit code.
       * </pre>
       *
       * <code>int32 code = 2;</code>
       * @return The code.
       */
      int getCode();
    }
    /**
     * <pre>
     * Exit code of a build. The possible values correspond to the predefined
     * codes in bazel's lib.ExitCode class, as well as any custom exit code a
     * module might define. The predefined exit codes are subject to change (but
     * rarely do) and are not part of the public API.
     * A build was successful iff ExitCode.code equals 0.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildFinished.ExitCode}
     */
    public static final class ExitCode extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildFinished.ExitCode)
        ExitCodeOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ExitCode.newBuilder() to construct.
      private ExitCode(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ExitCode() {
        name_ = "";
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildFinished_ExitCode_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildFinished_ExitCode_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode.Builder.class);
      }

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

      public static final int CODE_FIELD_NUMBER = 2;
      private int code_ = 0;
      /**
       * <pre>
       * The exit code.
       * </pre>
       *
       * <code>int32 code = 2;</code>
       * @return The code.
       */
      @java.lang.Override
      public int getCode() {
        return code_;
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
        }
        if (code_ != 0) {
          output.writeInt32(2, code_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
        }
        if (code_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, code_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (!getName()
            .equals(other.getName())) return false;
        if (getCode()
            != other.getCode()) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

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

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode 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.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode 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.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode 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.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode 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.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode 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.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode 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.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode 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.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode 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>
       * Exit code of a build. The possible values correspond to the predefined
       * codes in bazel's lib.ExitCode class, as well as any custom exit code a
       * module might define. The predefined exit codes are subject to change (but
       * rarely do) and are not part of the public API.
       * A build was successful iff ExitCode.code equals 0.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildFinished.ExitCode}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildFinished.ExitCode)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCodeOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildFinished_ExitCode_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildFinished_ExitCode_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          name_ = "";
          code_ = 0;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildFinished_ExitCode_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.name_ = name_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.code_ = code_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode.getDefaultInstance()) return this;
          if (!other.getName().isEmpty()) {
            name_ = other.name_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.getCode() != 0) {
            setCode(other.getCode());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  name_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 16: {
                  code_ = input.readInt32();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 16
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

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

        private int code_ ;
        /**
         * <pre>
         * The exit code.
         * </pre>
         *
         * <code>int32 code = 2;</code>
         * @return The code.
         */
        @java.lang.Override
        public int getCode() {
          return code_;
        }
        /**
         * <pre>
         * The exit code.
         * </pre>
         *
         * <code>int32 code = 2;</code>
         * @param value The code to set.
         * @return This builder for chaining.
         */
        public Builder setCode(int value) {
          
          code_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The exit code.
         * </pre>
         *
         * <code>int32 code = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearCode() {
          bitField0_ = (bitField0_ & ~0x00000002);
          code_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildFinished.ExitCode)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildFinished.ExitCode)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface AnomalyReportOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildFinished.AnomalyReport)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Was the build suspended at any time during the build.
       * Examples of suspensions are SIGSTOP, or the hardware being put to sleep.
       * If was_suspended is true, then most of the timings for this build are
       * suspect.
       * NOTE: This is no longer set and is deprecated.
       * </pre>
       *
       * <code>bool was_suspended = 1;</code>
       * @return The wasSuspended.
       */
      boolean getWasSuspended();
    }
    /**
     * <pre>
     * Things that happened during the build that could be of interest.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildFinished.AnomalyReport}
     */
    public static final class AnomalyReport extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildFinished.AnomalyReport)
        AnomalyReportOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use AnomalyReport.newBuilder() to construct.
      private AnomalyReport(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private AnomalyReport() {
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildFinished_AnomalyReport_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildFinished_AnomalyReport_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport.Builder.class);
      }

      public static final int WAS_SUSPENDED_FIELD_NUMBER = 1;
      private boolean wasSuspended_ = false;
      /**
       * <pre>
       * Was the build suspended at any time during the build.
       * Examples of suspensions are SIGSTOP, or the hardware being put to sleep.
       * If was_suspended is true, then most of the timings for this build are
       * suspect.
       * NOTE: This is no longer set and is deprecated.
       * </pre>
       *
       * <code>bool was_suspended = 1;</code>
       * @return The wasSuspended.
       */
      @java.lang.Override
      public boolean getWasSuspended() {
        return wasSuspended_;
      }

      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 (wasSuspended_ != false) {
          output.writeBool(1, wasSuspended_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (wasSuspended_ != false) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(1, wasSuspended_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

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

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

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport 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.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport 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.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport 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.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport 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.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport 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.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport 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.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport 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.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport 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>
       * Things that happened during the build that could be of interest.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildFinished.AnomalyReport}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildFinished.AnomalyReport)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReportOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildFinished_AnomalyReport_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildFinished_AnomalyReport_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          wasSuspended_ = false;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildFinished_AnomalyReport_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.wasSuspended_ = wasSuspended_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport.getDefaultInstance()) return this;
          if (other.getWasSuspended() != false) {
            setWasSuspended(other.getWasSuspended());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  wasSuspended_ = input.readBool();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private boolean wasSuspended_ ;
        /**
         * <pre>
         * Was the build suspended at any time during the build.
         * Examples of suspensions are SIGSTOP, or the hardware being put to sleep.
         * If was_suspended is true, then most of the timings for this build are
         * suspect.
         * NOTE: This is no longer set and is deprecated.
         * </pre>
         *
         * <code>bool was_suspended = 1;</code>
         * @return The wasSuspended.
         */
        @java.lang.Override
        public boolean getWasSuspended() {
          return wasSuspended_;
        }
        /**
         * <pre>
         * Was the build suspended at any time during the build.
         * Examples of suspensions are SIGSTOP, or the hardware being put to sleep.
         * If was_suspended is true, then most of the timings for this build are
         * suspect.
         * NOTE: This is no longer set and is deprecated.
         * </pre>
         *
         * <code>bool was_suspended = 1;</code>
         * @param value The wasSuspended to set.
         * @return This builder for chaining.
         */
        public Builder setWasSuspended(boolean value) {
          
          wasSuspended_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Was the build suspended at any time during the build.
         * Examples of suspensions are SIGSTOP, or the hardware being put to sleep.
         * If was_suspended is true, then most of the timings for this build are
         * suspect.
         * NOTE: This is no longer set and is deprecated.
         * </pre>
         *
         * <code>bool was_suspended = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearWasSuspended() {
          bitField0_ = (bitField0_ & ~0x00000001);
          wasSuspended_ = false;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildFinished.AnomalyReport)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildFinished.AnomalyReport)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int OVERALL_SUCCESS_FIELD_NUMBER = 1;
    private boolean overallSuccess_ = false;
    /**
     * <pre>
     * If the build succeeded or failed.
     * </pre>
     *
     * <code>bool overall_success = 1 [deprecated = true];</code>
     * @deprecated build_event_stream.BuildFinished.overall_success is deprecated.
     *     See bazel/build_event_stream.proto;l=810
     * @return The overallSuccess.
     */
    @java.lang.Override
    @java.lang.Deprecated public boolean getOverallSuccess() {
      return overallSuccess_;
    }

    public static final int EXIT_CODE_FIELD_NUMBER = 3;
    private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode exitCode_;
    /**
     * <pre>
     * The overall status of the build. A build was successful iff
     * ExitCode.code equals 0.
     * </pre>
     *
     * <code>.build_event_stream.BuildFinished.ExitCode exit_code = 3;</code>
     * @return Whether the exitCode field is set.
     */
    @java.lang.Override
    public boolean hasExitCode() {
      return exitCode_ != null;
    }
    /**
     * <pre>
     * The overall status of the build. A build was successful iff
     * ExitCode.code equals 0.
     * </pre>
     *
     * <code>.build_event_stream.BuildFinished.ExitCode exit_code = 3;</code>
     * @return The exitCode.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode getExitCode() {
      return exitCode_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode.getDefaultInstance() : exitCode_;
    }
    /**
     * <pre>
     * The overall status of the build. A build was successful iff
     * ExitCode.code equals 0.
     * </pre>
     *
     * <code>.build_event_stream.BuildFinished.ExitCode exit_code = 3;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCodeOrBuilder getExitCodeOrBuilder() {
      return exitCode_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode.getDefaultInstance() : exitCode_;
    }

    public static final int FINISH_TIME_MILLIS_FIELD_NUMBER = 2;
    private long finishTimeMillis_ = 0L;
    /**
     * <pre>
     * End of the build in ms since the epoch.
     * Deprecated, use `finish_time` instead.
     * TODO(yannic): Remove.
     * </pre>
     *
     * <code>int64 finish_time_millis = 2 [deprecated = true];</code>
     * @deprecated build_event_stream.BuildFinished.finish_time_millis is deprecated.
     *     See bazel/build_event_stream.proto;l=821
     * @return The finishTimeMillis.
     */
    @java.lang.Override
    @java.lang.Deprecated public long getFinishTimeMillis() {
      return finishTimeMillis_;
    }

    public static final int FINISH_TIME_FIELD_NUMBER = 5;
    private com.google.protobuf.Timestamp finishTime_;
    /**
     * <pre>
     * End of the build.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp finish_time = 5;</code>
     * @return Whether the finishTime field is set.
     */
    @java.lang.Override
    public boolean hasFinishTime() {
      return finishTime_ != null;
    }
    /**
     * <pre>
     * End of the build.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp finish_time = 5;</code>
     * @return The finishTime.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getFinishTime() {
      return finishTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : finishTime_;
    }
    /**
     * <pre>
     * End of the build.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp finish_time = 5;</code>
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getFinishTimeOrBuilder() {
      return finishTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : finishTime_;
    }

    public static final int ANOMALY_REPORT_FIELD_NUMBER = 4;
    private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport anomalyReport_;
    /**
     * <code>.build_event_stream.BuildFinished.AnomalyReport anomaly_report = 4 [deprecated = true];</code>
     * @deprecated build_event_stream.BuildFinished.anomaly_report is deprecated.
     *     See bazel/build_event_stream.proto;l=826
     * @return Whether the anomalyReport field is set.
     */
    @java.lang.Override
    @java.lang.Deprecated public boolean hasAnomalyReport() {
      return anomalyReport_ != null;
    }
    /**
     * <code>.build_event_stream.BuildFinished.AnomalyReport anomaly_report = 4 [deprecated = true];</code>
     * @deprecated build_event_stream.BuildFinished.anomaly_report is deprecated.
     *     See bazel/build_event_stream.proto;l=826
     * @return The anomalyReport.
     */
    @java.lang.Override
    @java.lang.Deprecated public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport getAnomalyReport() {
      return anomalyReport_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport.getDefaultInstance() : anomalyReport_;
    }
    /**
     * <code>.build_event_stream.BuildFinished.AnomalyReport anomaly_report = 4 [deprecated = true];</code>
     */
    @java.lang.Override
    @java.lang.Deprecated public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReportOrBuilder getAnomalyReportOrBuilder() {
      return anomalyReport_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport.getDefaultInstance() : anomalyReport_;
    }

    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 (overallSuccess_ != false) {
        output.writeBool(1, overallSuccess_);
      }
      if (finishTimeMillis_ != 0L) {
        output.writeInt64(2, finishTimeMillis_);
      }
      if (exitCode_ != null) {
        output.writeMessage(3, getExitCode());
      }
      if (anomalyReport_ != null) {
        output.writeMessage(4, getAnomalyReport());
      }
      if (finishTime_ != null) {
        output.writeMessage(5, getFinishTime());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (overallSuccess_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, overallSuccess_);
      }
      if (finishTimeMillis_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, finishTimeMillis_);
      }
      if (exitCode_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getExitCode());
      }
      if (anomalyReport_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getAnomalyReport());
      }
      if (finishTime_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getFinishTime());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (getOverallSuccess()
          != other.getOverallSuccess()) return false;
      if (hasExitCode() != other.hasExitCode()) return false;
      if (hasExitCode()) {
        if (!getExitCode()
            .equals(other.getExitCode())) return false;
      }
      if (getFinishTimeMillis()
          != other.getFinishTimeMillis()) return false;
      if (hasFinishTime() != other.hasFinishTime()) return false;
      if (hasFinishTime()) {
        if (!getFinishTime()
            .equals(other.getFinishTime())) return false;
      }
      if (hasAnomalyReport() != other.hasAnomalyReport()) return false;
      if (hasAnomalyReport()) {
        if (!getAnomalyReport()
            .equals(other.getAnomalyReport())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + OVERALL_SUCCESS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getOverallSuccess());
      if (hasExitCode()) {
        hash = (37 * hash) + EXIT_CODE_FIELD_NUMBER;
        hash = (53 * hash) + getExitCode().hashCode();
      }
      hash = (37 * hash) + FINISH_TIME_MILLIS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getFinishTimeMillis());
      if (hasFinishTime()) {
        hash = (37 * hash) + FINISH_TIME_FIELD_NUMBER;
        hash = (53 * hash) + getFinishTime().hashCode();
      }
      if (hasAnomalyReport()) {
        hash = (37 * hash) + ANOMALY_REPORT_FIELD_NUMBER;
        hash = (53 * hash) + getAnomalyReport().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished 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.buildeventstream.BuildEventStreamProtos.BuildFinished parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished 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.buildeventstream.BuildEventStreamProtos.BuildFinished parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished 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.buildeventstream.BuildEventStreamProtos.BuildFinished parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished 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.buildeventstream.BuildEventStreamProtos.BuildFinished parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished 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.buildeventstream.BuildEventStreamProtos.BuildFinished 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.buildeventstream.BuildEventStreamProtos.BuildFinished 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.buildeventstream.BuildEventStreamProtos.BuildFinished 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>
     * Event indicating the end of a build.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildFinished}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.BuildFinished)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinishedOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildFinished_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildFinished_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        overallSuccess_ = false;
        exitCode_ = null;
        if (exitCodeBuilder_ != null) {
          exitCodeBuilder_.dispose();
          exitCodeBuilder_ = null;
        }
        finishTimeMillis_ = 0L;
        finishTime_ = null;
        if (finishTimeBuilder_ != null) {
          finishTimeBuilder_.dispose();
          finishTimeBuilder_ = null;
        }
        anomalyReport_ = null;
        if (anomalyReportBuilder_ != null) {
          anomalyReportBuilder_.dispose();
          anomalyReportBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildFinished_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.getDefaultInstance();
      }

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.overallSuccess_ = overallSuccess_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.exitCode_ = exitCodeBuilder_ == null
              ? exitCode_
              : exitCodeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.finishTimeMillis_ = finishTimeMillis_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.finishTime_ = finishTimeBuilder_ == null
              ? finishTime_
              : finishTimeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.anomalyReport_ = anomalyReportBuilder_ == null
              ? anomalyReport_
              : anomalyReportBuilder_.build();
        }
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.getDefaultInstance()) return this;
        if (other.getOverallSuccess() != false) {
          setOverallSuccess(other.getOverallSuccess());
        }
        if (other.hasExitCode()) {
          mergeExitCode(other.getExitCode());
        }
        if (other.getFinishTimeMillis() != 0L) {
          setFinishTimeMillis(other.getFinishTimeMillis());
        }
        if (other.hasFinishTime()) {
          mergeFinishTime(other.getFinishTime());
        }
        if (other.hasAnomalyReport()) {
          mergeAnomalyReport(other.getAnomalyReport());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                overallSuccess_ = input.readBool();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                finishTimeMillis_ = input.readInt64();
                bitField0_ |= 0x00000004;
                break;
              } // case 16
              case 26: {
                input.readMessage(
                    getExitCodeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getAnomalyReportFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getFinishTimeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 42
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private boolean overallSuccess_ ;
      /**
       * <pre>
       * If the build succeeded or failed.
       * </pre>
       *
       * <code>bool overall_success = 1 [deprecated = true];</code>
       * @deprecated build_event_stream.BuildFinished.overall_success is deprecated.
       *     See bazel/build_event_stream.proto;l=810
       * @return The overallSuccess.
       */
      @java.lang.Override
      @java.lang.Deprecated public boolean getOverallSuccess() {
        return overallSuccess_;
      }
      /**
       * <pre>
       * If the build succeeded or failed.
       * </pre>
       *
       * <code>bool overall_success = 1 [deprecated = true];</code>
       * @deprecated build_event_stream.BuildFinished.overall_success is deprecated.
       *     See bazel/build_event_stream.proto;l=810
       * @param value The overallSuccess to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setOverallSuccess(boolean value) {
        
        overallSuccess_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If the build succeeded or failed.
       * </pre>
       *
       * <code>bool overall_success = 1 [deprecated = true];</code>
       * @deprecated build_event_stream.BuildFinished.overall_success is deprecated.
       *     See bazel/build_event_stream.proto;l=810
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder clearOverallSuccess() {
        bitField0_ = (bitField0_ & ~0x00000001);
        overallSuccess_ = false;
        onChanged();
        return this;
      }

      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode exitCode_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCodeOrBuilder> exitCodeBuilder_;
      /**
       * <pre>
       * The overall status of the build. A build was successful iff
       * ExitCode.code equals 0.
       * </pre>
       *
       * <code>.build_event_stream.BuildFinished.ExitCode exit_code = 3;</code>
       * @return Whether the exitCode field is set.
       */
      public boolean hasExitCode() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The overall status of the build. A build was successful iff
       * ExitCode.code equals 0.
       * </pre>
       *
       * <code>.build_event_stream.BuildFinished.ExitCode exit_code = 3;</code>
       * @return The exitCode.
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode getExitCode() {
        if (exitCodeBuilder_ == null) {
          return exitCode_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode.getDefaultInstance() : exitCode_;
        } else {
          return exitCodeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The overall status of the build. A build was successful iff
       * ExitCode.code equals 0.
       * </pre>
       *
       * <code>.build_event_stream.BuildFinished.ExitCode exit_code = 3;</code>
       */
      public Builder setExitCode(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode value) {
        if (exitCodeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          exitCode_ = value;
        } else {
          exitCodeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The overall status of the build. A build was successful iff
       * ExitCode.code equals 0.
       * </pre>
       *
       * <code>.build_event_stream.BuildFinished.ExitCode exit_code = 3;</code>
       */
      public Builder setExitCode(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode.Builder builderForValue) {
        if (exitCodeBuilder_ == null) {
          exitCode_ = builderForValue.build();
        } else {
          exitCodeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The overall status of the build. A build was successful iff
       * ExitCode.code equals 0.
       * </pre>
       *
       * <code>.build_event_stream.BuildFinished.ExitCode exit_code = 3;</code>
       */
      public Builder mergeExitCode(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode value) {
        if (exitCodeBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            exitCode_ != null &&
            exitCode_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode.getDefaultInstance()) {
            getExitCodeBuilder().mergeFrom(value);
          } else {
            exitCode_ = value;
          }
        } else {
          exitCodeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The overall status of the build. A build was successful iff
       * ExitCode.code equals 0.
       * </pre>
       *
       * <code>.build_event_stream.BuildFinished.ExitCode exit_code = 3;</code>
       */
      public Builder clearExitCode() {
        bitField0_ = (bitField0_ & ~0x00000002);
        exitCode_ = null;
        if (exitCodeBuilder_ != null) {
          exitCodeBuilder_.dispose();
          exitCodeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The overall status of the build. A build was successful iff
       * ExitCode.code equals 0.
       * </pre>
       *
       * <code>.build_event_stream.BuildFinished.ExitCode exit_code = 3;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode.Builder getExitCodeBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getExitCodeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The overall status of the build. A build was successful iff
       * ExitCode.code equals 0.
       * </pre>
       *
       * <code>.build_event_stream.BuildFinished.ExitCode exit_code = 3;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCodeOrBuilder getExitCodeOrBuilder() {
        if (exitCodeBuilder_ != null) {
          return exitCodeBuilder_.getMessageOrBuilder();
        } else {
          return exitCode_ == null ?
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode.getDefaultInstance() : exitCode_;
        }
      }
      /**
       * <pre>
       * The overall status of the build. A build was successful iff
       * ExitCode.code equals 0.
       * </pre>
       *
       * <code>.build_event_stream.BuildFinished.ExitCode exit_code = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCodeOrBuilder> 
          getExitCodeFieldBuilder() {
        if (exitCodeBuilder_ == null) {
          exitCodeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCode.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.ExitCodeOrBuilder>(
                  getExitCode(),
                  getParentForChildren(),
                  isClean());
          exitCode_ = null;
        }
        return exitCodeBuilder_;
      }

      private long finishTimeMillis_ ;
      /**
       * <pre>
       * End of the build in ms since the epoch.
       * Deprecated, use `finish_time` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 finish_time_millis = 2 [deprecated = true];</code>
       * @deprecated build_event_stream.BuildFinished.finish_time_millis is deprecated.
       *     See bazel/build_event_stream.proto;l=821
       * @return The finishTimeMillis.
       */
      @java.lang.Override
      @java.lang.Deprecated public long getFinishTimeMillis() {
        return finishTimeMillis_;
      }
      /**
       * <pre>
       * End of the build in ms since the epoch.
       * Deprecated, use `finish_time` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 finish_time_millis = 2 [deprecated = true];</code>
       * @deprecated build_event_stream.BuildFinished.finish_time_millis is deprecated.
       *     See bazel/build_event_stream.proto;l=821
       * @param value The finishTimeMillis to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setFinishTimeMillis(long value) {
        
        finishTimeMillis_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * End of the build in ms since the epoch.
       * Deprecated, use `finish_time` instead.
       * TODO(yannic): Remove.
       * </pre>
       *
       * <code>int64 finish_time_millis = 2 [deprecated = true];</code>
       * @deprecated build_event_stream.BuildFinished.finish_time_millis is deprecated.
       *     See bazel/build_event_stream.proto;l=821
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder clearFinishTimeMillis() {
        bitField0_ = (bitField0_ & ~0x00000004);
        finishTimeMillis_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.Timestamp finishTime_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> finishTimeBuilder_;
      /**
       * <pre>
       * End of the build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp finish_time = 5;</code>
       * @return Whether the finishTime field is set.
       */
      public boolean hasFinishTime() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * End of the build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp finish_time = 5;</code>
       * @return The finishTime.
       */
      public com.google.protobuf.Timestamp getFinishTime() {
        if (finishTimeBuilder_ == null) {
          return finishTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : finishTime_;
        } else {
          return finishTimeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * End of the build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp finish_time = 5;</code>
       */
      public Builder setFinishTime(com.google.protobuf.Timestamp value) {
        if (finishTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          finishTime_ = value;
        } else {
          finishTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * End of the build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp finish_time = 5;</code>
       */
      public Builder setFinishTime(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (finishTimeBuilder_ == null) {
          finishTime_ = builderForValue.build();
        } else {
          finishTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * End of the build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp finish_time = 5;</code>
       */
      public Builder mergeFinishTime(com.google.protobuf.Timestamp value) {
        if (finishTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            finishTime_ != null &&
            finishTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
            getFinishTimeBuilder().mergeFrom(value);
          } else {
            finishTime_ = value;
          }
        } else {
          finishTimeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * End of the build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp finish_time = 5;</code>
       */
      public Builder clearFinishTime() {
        bitField0_ = (bitField0_ & ~0x00000008);
        finishTime_ = null;
        if (finishTimeBuilder_ != null) {
          finishTimeBuilder_.dispose();
          finishTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * End of the build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp finish_time = 5;</code>
       */
      public com.google.protobuf.Timestamp.Builder getFinishTimeBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getFinishTimeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * End of the build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp finish_time = 5;</code>
       */
      public com.google.protobuf.TimestampOrBuilder getFinishTimeOrBuilder() {
        if (finishTimeBuilder_ != null) {
          return finishTimeBuilder_.getMessageOrBuilder();
        } else {
          return finishTime_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : finishTime_;
        }
      }
      /**
       * <pre>
       * End of the build.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp finish_time = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getFinishTimeFieldBuilder() {
        if (finishTimeBuilder_ == null) {
          finishTimeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getFinishTime(),
                  getParentForChildren(),
                  isClean());
          finishTime_ = null;
        }
        return finishTimeBuilder_;
      }

      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport anomalyReport_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReportOrBuilder> anomalyReportBuilder_;
      /**
       * <code>.build_event_stream.BuildFinished.AnomalyReport anomaly_report = 4 [deprecated = true];</code>
       * @deprecated build_event_stream.BuildFinished.anomaly_report is deprecated.
       *     See bazel/build_event_stream.proto;l=826
       * @return Whether the anomalyReport field is set.
       */
      @java.lang.Deprecated public boolean hasAnomalyReport() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>.build_event_stream.BuildFinished.AnomalyReport anomaly_report = 4 [deprecated = true];</code>
       * @deprecated build_event_stream.BuildFinished.anomaly_report is deprecated.
       *     See bazel/build_event_stream.proto;l=826
       * @return The anomalyReport.
       */
      @java.lang.Deprecated public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport getAnomalyReport() {
        if (anomalyReportBuilder_ == null) {
          return anomalyReport_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport.getDefaultInstance() : anomalyReport_;
        } else {
          return anomalyReportBuilder_.getMessage();
        }
      }
      /**
       * <code>.build_event_stream.BuildFinished.AnomalyReport anomaly_report = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public Builder setAnomalyReport(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport value) {
        if (anomalyReportBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          anomalyReport_ = value;
        } else {
          anomalyReportBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildFinished.AnomalyReport anomaly_report = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public Builder setAnomalyReport(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport.Builder builderForValue) {
        if (anomalyReportBuilder_ == null) {
          anomalyReport_ = builderForValue.build();
        } else {
          anomalyReportBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildFinished.AnomalyReport anomaly_report = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public Builder mergeAnomalyReport(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport value) {
        if (anomalyReportBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            anomalyReport_ != null &&
            anomalyReport_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport.getDefaultInstance()) {
            getAnomalyReportBuilder().mergeFrom(value);
          } else {
            anomalyReport_ = value;
          }
        } else {
          anomalyReportBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildFinished.AnomalyReport anomaly_report = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public Builder clearAnomalyReport() {
        bitField0_ = (bitField0_ & ~0x00000010);
        anomalyReport_ = null;
        if (anomalyReportBuilder_ != null) {
          anomalyReportBuilder_.dispose();
          anomalyReportBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildFinished.AnomalyReport anomaly_report = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport.Builder getAnomalyReportBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getAnomalyReportFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildFinished.AnomalyReport anomaly_report = 4 [deprecated = true];</code>
       */
      @java.lang.Deprecated public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReportOrBuilder getAnomalyReportOrBuilder() {
        if (anomalyReportBuilder_ != null) {
          return anomalyReportBuilder_.getMessageOrBuilder();
        } else {
          return anomalyReport_ == null ?
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport.getDefaultInstance() : anomalyReport_;
        }
      }
      /**
       * <code>.build_event_stream.BuildFinished.AnomalyReport anomaly_report = 4 [deprecated = true];</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReportOrBuilder> 
          getAnomalyReportFieldBuilder() {
        if (anomalyReportBuilder_ == null) {
          anomalyReportBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReport.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.AnomalyReportOrBuilder>(
                  getAnomalyReport(),
                  getParentForChildren(),
                  isClean());
          anomalyReport_ = null;
        }
        return anomalyReportBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:build_event_stream.BuildFinished)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.BuildFinished)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BuildMetricsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.BuildMetrics)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.build_event_stream.BuildMetrics.ActionSummary action_summary = 1;</code>
     * @return Whether the actionSummary field is set.
     */
    boolean hasActionSummary();
    /**
     * <code>.build_event_stream.BuildMetrics.ActionSummary action_summary = 1;</code>
     * @return The actionSummary.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary getActionSummary();
    /**
     * <code>.build_event_stream.BuildMetrics.ActionSummary action_summary = 1;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummaryOrBuilder getActionSummaryOrBuilder();

    /**
     * <code>.build_event_stream.BuildMetrics.MemoryMetrics memory_metrics = 2;</code>
     * @return Whether the memoryMetrics field is set.
     */
    boolean hasMemoryMetrics();
    /**
     * <code>.build_event_stream.BuildMetrics.MemoryMetrics memory_metrics = 2;</code>
     * @return The memoryMetrics.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics getMemoryMetrics();
    /**
     * <code>.build_event_stream.BuildMetrics.MemoryMetrics memory_metrics = 2;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetricsOrBuilder getMemoryMetricsOrBuilder();

    /**
     * <code>.build_event_stream.BuildMetrics.TargetMetrics target_metrics = 3;</code>
     * @return Whether the targetMetrics field is set.
     */
    boolean hasTargetMetrics();
    /**
     * <code>.build_event_stream.BuildMetrics.TargetMetrics target_metrics = 3;</code>
     * @return The targetMetrics.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics getTargetMetrics();
    /**
     * <code>.build_event_stream.BuildMetrics.TargetMetrics target_metrics = 3;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetricsOrBuilder getTargetMetricsOrBuilder();

    /**
     * <code>.build_event_stream.BuildMetrics.PackageMetrics package_metrics = 4;</code>
     * @return Whether the packageMetrics field is set.
     */
    boolean hasPackageMetrics();
    /**
     * <code>.build_event_stream.BuildMetrics.PackageMetrics package_metrics = 4;</code>
     * @return The packageMetrics.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics getPackageMetrics();
    /**
     * <code>.build_event_stream.BuildMetrics.PackageMetrics package_metrics = 4;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetricsOrBuilder getPackageMetricsOrBuilder();

    /**
     * <code>.build_event_stream.BuildMetrics.TimingMetrics timing_metrics = 5;</code>
     * @return Whether the timingMetrics field is set.
     */
    boolean hasTimingMetrics();
    /**
     * <code>.build_event_stream.BuildMetrics.TimingMetrics timing_metrics = 5;</code>
     * @return The timingMetrics.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics getTimingMetrics();
    /**
     * <code>.build_event_stream.BuildMetrics.TimingMetrics timing_metrics = 5;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetricsOrBuilder getTimingMetricsOrBuilder();

    /**
     * <code>.build_event_stream.BuildMetrics.CumulativeMetrics cumulative_metrics = 6;</code>
     * @return Whether the cumulativeMetrics field is set.
     */
    boolean hasCumulativeMetrics();
    /**
     * <code>.build_event_stream.BuildMetrics.CumulativeMetrics cumulative_metrics = 6;</code>
     * @return The cumulativeMetrics.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics getCumulativeMetrics();
    /**
     * <code>.build_event_stream.BuildMetrics.CumulativeMetrics cumulative_metrics = 6;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetricsOrBuilder getCumulativeMetricsOrBuilder();

    /**
     * <code>.build_event_stream.BuildMetrics.ArtifactMetrics artifact_metrics = 7;</code>
     * @return Whether the artifactMetrics field is set.
     */
    boolean hasArtifactMetrics();
    /**
     * <code>.build_event_stream.BuildMetrics.ArtifactMetrics artifact_metrics = 7;</code>
     * @return The artifactMetrics.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics getArtifactMetrics();
    /**
     * <code>.build_event_stream.BuildMetrics.ArtifactMetrics artifact_metrics = 7;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetricsOrBuilder getArtifactMetricsOrBuilder();

    /**
     * <code>.build_event_stream.BuildMetrics.BuildGraphMetrics build_graph_metrics = 8;</code>
     * @return Whether the buildGraphMetrics field is set.
     */
    boolean hasBuildGraphMetrics();
    /**
     * <code>.build_event_stream.BuildMetrics.BuildGraphMetrics build_graph_metrics = 8;</code>
     * @return The buildGraphMetrics.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics getBuildGraphMetrics();
    /**
     * <code>.build_event_stream.BuildMetrics.BuildGraphMetrics build_graph_metrics = 8;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetricsOrBuilder getBuildGraphMetricsOrBuilder();

    /**
     * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
     */
    java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics> 
        getWorkerMetricsList();
    /**
     * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics getWorkerMetrics(int index);
    /**
     * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
     */
    int getWorkerMetricsCount();
    /**
     * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetricsOrBuilder> 
        getWorkerMetricsOrBuilderList();
    /**
     * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetricsOrBuilder getWorkerMetricsOrBuilder(
        int index);

    /**
     * <code>.build_event_stream.BuildMetrics.NetworkMetrics network_metrics = 10;</code>
     * @return Whether the networkMetrics field is set.
     */
    boolean hasNetworkMetrics();
    /**
     * <code>.build_event_stream.BuildMetrics.NetworkMetrics network_metrics = 10;</code>
     * @return The networkMetrics.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics getNetworkMetrics();
    /**
     * <code>.build_event_stream.BuildMetrics.NetworkMetrics network_metrics = 10;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetricsOrBuilder getNetworkMetricsOrBuilder();
  }
  /**
   * Protobuf type {@code build_event_stream.BuildMetrics}
   */
  public static final class BuildMetrics extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.BuildMetrics)
      BuildMetricsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BuildMetrics.newBuilder() to construct.
    private BuildMetrics(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BuildMetrics() {
      workerMetrics_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.Builder.class);
    }

    public interface ActionSummaryOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildMetrics.ActionSummary)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * The total number of actions created and registered during the build,
       * including both aspects and configured targets. This metric includes
       * unused actions that were constructed but not executed during this build.
       * It does not include actions that were created on prior builds that are
       * still valid, even if those actions had to be re-executed on this build.
       * For the total number of actions that would be created if this invocation
       * were "clean", see BuildGraphMetrics below.
       * </pre>
       *
       * <code>int64 actions_created = 1;</code>
       * @return The actionsCreated.
       */
      long getActionsCreated();

      /**
       * <pre>
       * The total number of actions created this build just by configured
       * targets. Used mainly to allow consumers of actions_created, which used to
       * not include aspects' actions, to normalize across the Blaze release that
       * switched actions_created to include all created actions.
       * </pre>
       *
       * <code>int64 actions_created_not_including_aspects = 3;</code>
       * @return The actionsCreatedNotIncludingAspects.
       */
      long getActionsCreatedNotIncludingAspects();

      /**
       * <pre>
       * The total number of actions executed during the build. This includes any
       * remote cache hits, but excludes local action cache hits.
       * </pre>
       *
       * <code>int64 actions_executed = 2;</code>
       * @return The actionsExecuted.
       */
      long getActionsExecuted();

      /**
       * <pre>
       * Contains the top N actions by number of actions executed.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
       */
      java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData> 
          getActionDataList();
      /**
       * <pre>
       * Contains the top N actions by number of actions executed.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData getActionData(int index);
      /**
       * <pre>
       * Contains the top N actions by number of actions executed.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
       */
      int getActionDataCount();
      /**
       * <pre>
       * Contains the top N actions by number of actions executed.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
       */
      java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionDataOrBuilder> 
          getActionDataOrBuilderList();
      /**
       * <pre>
       * Contains the top N actions by number of actions executed.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionDataOrBuilder getActionDataOrBuilder(
          int index);

      /**
       * <pre>
       * Deprecated. The total number of remote cache hits.
       * </pre>
       *
       * <code>int64 remote_cache_hits = 5 [deprecated = true];</code>
       * @deprecated build_event_stream.BuildMetrics.ActionSummary.remote_cache_hits is deprecated.
       *     See bazel/build_event_stream.proto;l=869
       * @return The remoteCacheHits.
       */
      @java.lang.Deprecated long getRemoteCacheHits();

      /**
       * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
       */
      java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount> 
          getRunnerCountList();
      /**
       * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount getRunnerCount(int index);
      /**
       * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
       */
      int getRunnerCountCount();
      /**
       * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
       */
      java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCountOrBuilder> 
          getRunnerCountOrBuilderList();
      /**
       * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCountOrBuilder getRunnerCountOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code build_event_stream.BuildMetrics.ActionSummary}
     */
    public static final class ActionSummary extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildMetrics.ActionSummary)
        ActionSummaryOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ActionSummary.newBuilder() to construct.
      private ActionSummary(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ActionSummary() {
        actionData_ = java.util.Collections.emptyList();
        runnerCount_ = java.util.Collections.emptyList();
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ActionSummary_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ActionSummary_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.Builder.class);
      }

      public interface ActionDataOrBuilder extends
          // @@protoc_insertion_point(interface_extends:build_event_stream.BuildMetrics.ActionSummary.ActionData)
          com.google.protobuf.MessageOrBuilder {

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

        /**
         * <pre>
         * The total number of actions of this type executed during the build. As
         * above, includes remote cache hits but excludes local action cache hits.
         * </pre>
         *
         * <code>int64 actions_executed = 2;</code>
         * @return The actionsExecuted.
         */
        long getActionsExecuted();

        /**
         * <pre>
         * When the first action of this type started being executed, in
         * milliseconds from the epoch.
         * </pre>
         *
         * <code>int64 first_started_ms = 3;</code>
         * @return The firstStartedMs.
         */
        long getFirstStartedMs();

        /**
         * <pre>
         * When the last action of this type ended being executed, in
         * milliseconds from the epoch.
         * </pre>
         *
         * <code>int64 last_ended_ms = 4;</code>
         * @return The lastEndedMs.
         */
        long getLastEndedMs();
      }
      /**
       * Protobuf type {@code build_event_stream.BuildMetrics.ActionSummary.ActionData}
       */
      public static final class ActionData extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:build_event_stream.BuildMetrics.ActionSummary.ActionData)
          ActionDataOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use ActionData.newBuilder() to construct.
        private ActionData(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private ActionData() {
          mnemonic_ = "";
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ActionSummary_ActionData_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ActionSummary_ActionData_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData.Builder.class);
        }

        public static final int MNEMONIC_FIELD_NUMBER = 1;
        @SuppressWarnings("serial")
        private volatile java.lang.Object mnemonic_ = "";
        /**
         * <code>string mnemonic = 1;</code>
         * @return The mnemonic.
         */
        @java.lang.Override
        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;
          }
        }
        /**
         * <code>string mnemonic = 1;</code>
         * @return The bytes for mnemonic.
         */
        @java.lang.Override
        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 ACTIONS_EXECUTED_FIELD_NUMBER = 2;
        private long actionsExecuted_ = 0L;
        /**
         * <pre>
         * The total number of actions of this type executed during the build. As
         * above, includes remote cache hits but excludes local action cache hits.
         * </pre>
         *
         * <code>int64 actions_executed = 2;</code>
         * @return The actionsExecuted.
         */
        @java.lang.Override
        public long getActionsExecuted() {
          return actionsExecuted_;
        }

        public static final int FIRST_STARTED_MS_FIELD_NUMBER = 3;
        private long firstStartedMs_ = 0L;
        /**
         * <pre>
         * When the first action of this type started being executed, in
         * milliseconds from the epoch.
         * </pre>
         *
         * <code>int64 first_started_ms = 3;</code>
         * @return The firstStartedMs.
         */
        @java.lang.Override
        public long getFirstStartedMs() {
          return firstStartedMs_;
        }

        public static final int LAST_ENDED_MS_FIELD_NUMBER = 4;
        private long lastEndedMs_ = 0L;
        /**
         * <pre>
         * When the last action of this type ended being executed, in
         * milliseconds from the epoch.
         * </pre>
         *
         * <code>int64 last_ended_ms = 4;</code>
         * @return The lastEndedMs.
         */
        @java.lang.Override
        public long getLastEndedMs() {
          return lastEndedMs_;
        }

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

          memoizedIsInitialized = 1;
          return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(mnemonic_)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 1, mnemonic_);
          }
          if (actionsExecuted_ != 0L) {
            output.writeInt64(2, actionsExecuted_);
          }
          if (firstStartedMs_ != 0L) {
            output.writeInt64(3, firstStartedMs_);
          }
          if (lastEndedMs_ != 0L) {
            output.writeInt64(4, lastEndedMs_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(mnemonic_)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, mnemonic_);
          }
          if (actionsExecuted_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt64Size(2, actionsExecuted_);
          }
          if (firstStartedMs_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt64Size(3, firstStartedMs_);
          }
          if (lastEndedMs_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt64Size(4, lastEndedMs_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSize = size;
          return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData)) {
            return super.equals(obj);
          }
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData other = (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData) obj;

          if (!getMnemonic()
              .equals(other.getMnemonic())) return false;
          if (getActionsExecuted()
              != other.getActionsExecuted()) return false;
          if (getFirstStartedMs()
              != other.getFirstStartedMs()) return false;
          if (getLastEndedMs()
              != other.getLastEndedMs()) return false;
          if (!getUnknownFields().equals(other.getUnknownFields())) return false;
          return true;
        }

        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          hash = (37 * hash) + MNEMONIC_FIELD_NUMBER;
          hash = (53 * hash) + getMnemonic().hashCode();
          hash = (37 * hash) + ACTIONS_EXECUTED_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getActionsExecuted());
          hash = (37 * hash) + FIRST_STARTED_MS_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getFirstStartedMs());
          hash = (37 * hash) + LAST_ENDED_MS_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getLastEndedMs());
          hash = (29 * hash) + getUnknownFields().hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData 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 build_event_stream.BuildMetrics.ActionSummary.ActionData}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:build_event_stream.BuildMetrics.ActionSummary.ActionData)
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionDataOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ActionSummary_ActionData_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ActionSummary_ActionData_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData.Builder.class);
          }

          // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData.newBuilder()
          private Builder() {

          }

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

          }
          @java.lang.Override
          public Builder clear() {
            super.clear();
            bitField0_ = 0;
            mnemonic_ = "";
            actionsExecuted_ = 0L;
            firstStartedMs_ = 0L;
            lastEndedMs_ = 0L;
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ActionSummary_ActionData_descriptor;
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData getDefaultInstanceForType() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData.getDefaultInstance();
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData build() {
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData buildPartial() {
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData(this);
            if (bitField0_ != 0) { buildPartial0(result); }
            onBuilt();
            return result;
          }

          private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData result) {
            int from_bitField0_ = bitField0_;
            if (((from_bitField0_ & 0x00000001) != 0)) {
              result.mnemonic_ = mnemonic_;
            }
            if (((from_bitField0_ & 0x00000002) != 0)) {
              result.actionsExecuted_ = actionsExecuted_;
            }
            if (((from_bitField0_ & 0x00000004) != 0)) {
              result.firstStartedMs_ = firstStartedMs_;
            }
            if (((from_bitField0_ & 0x00000008) != 0)) {
              result.lastEndedMs_ = lastEndedMs_;
            }
          }

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

          public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData other) {
            if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData.getDefaultInstance()) return this;
            if (!other.getMnemonic().isEmpty()) {
              mnemonic_ = other.mnemonic_;
              bitField0_ |= 0x00000001;
              onChanged();
            }
            if (other.getActionsExecuted() != 0L) {
              setActionsExecuted(other.getActionsExecuted());
            }
            if (other.getFirstStartedMs() != 0L) {
              setFirstStartedMs(other.getFirstStartedMs());
            }
            if (other.getLastEndedMs() != 0L) {
              setLastEndedMs(other.getLastEndedMs());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

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

          @java.lang.Override
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 10: {
                    mnemonic_ = input.readStringRequireUtf8();
                    bitField0_ |= 0x00000001;
                    break;
                  } // case 10
                  case 16: {
                    actionsExecuted_ = input.readInt64();
                    bitField0_ |= 0x00000002;
                    break;
                  } // case 16
                  case 24: {
                    firstStartedMs_ = input.readInt64();
                    bitField0_ |= 0x00000004;
                    break;
                  } // case 24
                  case 32: {
                    lastEndedMs_ = input.readInt64();
                    bitField0_ |= 0x00000008;
                    break;
                  } // case 32
                  default: {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }
          private int bitField0_;

          private java.lang.Object mnemonic_ = "";
          /**
           * <code>string mnemonic = 1;</code>
           * @return The mnemonic.
           */
          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;
            }
          }
          /**
           * <code>string mnemonic = 1;</code>
           * @return The bytes for mnemonic.
           */
          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;
            }
          }
          /**
           * <code>string mnemonic = 1;</code>
           * @param value The mnemonic to set.
           * @return This builder for chaining.
           */
          public Builder setMnemonic(
              java.lang.String value) {
            if (value == null) { throw new NullPointerException(); }
            mnemonic_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }
          /**
           * <code>string mnemonic = 1;</code>
           * @return This builder for chaining.
           */
          public Builder clearMnemonic() {
            mnemonic_ = getDefaultInstance().getMnemonic();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }
          /**
           * <code>string mnemonic = 1;</code>
           * @param value The bytes for mnemonic to set.
           * @return This builder for chaining.
           */
          public Builder setMnemonicBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) { throw new NullPointerException(); }
            checkByteStringIsUtf8(value);
            mnemonic_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }

          private long actionsExecuted_ ;
          /**
           * <pre>
           * The total number of actions of this type executed during the build. As
           * above, includes remote cache hits but excludes local action cache hits.
           * </pre>
           *
           * <code>int64 actions_executed = 2;</code>
           * @return The actionsExecuted.
           */
          @java.lang.Override
          public long getActionsExecuted() {
            return actionsExecuted_;
          }
          /**
           * <pre>
           * The total number of actions of this type executed during the build. As
           * above, includes remote cache hits but excludes local action cache hits.
           * </pre>
           *
           * <code>int64 actions_executed = 2;</code>
           * @param value The actionsExecuted to set.
           * @return This builder for chaining.
           */
          public Builder setActionsExecuted(long value) {
            
            actionsExecuted_ = value;
            bitField0_ |= 0x00000002;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * The total number of actions of this type executed during the build. As
           * above, includes remote cache hits but excludes local action cache hits.
           * </pre>
           *
           * <code>int64 actions_executed = 2;</code>
           * @return This builder for chaining.
           */
          public Builder clearActionsExecuted() {
            bitField0_ = (bitField0_ & ~0x00000002);
            actionsExecuted_ = 0L;
            onChanged();
            return this;
          }

          private long firstStartedMs_ ;
          /**
           * <pre>
           * When the first action of this type started being executed, in
           * milliseconds from the epoch.
           * </pre>
           *
           * <code>int64 first_started_ms = 3;</code>
           * @return The firstStartedMs.
           */
          @java.lang.Override
          public long getFirstStartedMs() {
            return firstStartedMs_;
          }
          /**
           * <pre>
           * When the first action of this type started being executed, in
           * milliseconds from the epoch.
           * </pre>
           *
           * <code>int64 first_started_ms = 3;</code>
           * @param value The firstStartedMs to set.
           * @return This builder for chaining.
           */
          public Builder setFirstStartedMs(long value) {
            
            firstStartedMs_ = value;
            bitField0_ |= 0x00000004;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * When the first action of this type started being executed, in
           * milliseconds from the epoch.
           * </pre>
           *
           * <code>int64 first_started_ms = 3;</code>
           * @return This builder for chaining.
           */
          public Builder clearFirstStartedMs() {
            bitField0_ = (bitField0_ & ~0x00000004);
            firstStartedMs_ = 0L;
            onChanged();
            return this;
          }

          private long lastEndedMs_ ;
          /**
           * <pre>
           * When the last action of this type ended being executed, in
           * milliseconds from the epoch.
           * </pre>
           *
           * <code>int64 last_ended_ms = 4;</code>
           * @return The lastEndedMs.
           */
          @java.lang.Override
          public long getLastEndedMs() {
            return lastEndedMs_;
          }
          /**
           * <pre>
           * When the last action of this type ended being executed, in
           * milliseconds from the epoch.
           * </pre>
           *
           * <code>int64 last_ended_ms = 4;</code>
           * @param value The lastEndedMs to set.
           * @return This builder for chaining.
           */
          public Builder setLastEndedMs(long value) {
            
            lastEndedMs_ = value;
            bitField0_ |= 0x00000008;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * When the last action of this type ended being executed, in
           * milliseconds from the epoch.
           * </pre>
           *
           * <code>int64 last_ended_ms = 4;</code>
           * @return This builder for chaining.
           */
          public Builder clearLastEndedMs() {
            bitField0_ = (bitField0_ & ~0x00000008);
            lastEndedMs_ = 0L;
            onChanged();
            return this;
          }
          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

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


          // @@protoc_insertion_point(builder_scope:build_event_stream.BuildMetrics.ActionSummary.ActionData)
        }

        // @@protoc_insertion_point(class_scope:build_event_stream.BuildMetrics.ActionSummary.ActionData)
        private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData();
        }

        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }

      }

      public interface RunnerCountOrBuilder extends
          // @@protoc_insertion_point(interface_extends:build_event_stream.BuildMetrics.ActionSummary.RunnerCount)
          com.google.protobuf.MessageOrBuilder {

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

        /**
         * <code>int32 count = 2;</code>
         * @return The count.
         */
        int getCount();
      }
      /**
       * Protobuf type {@code build_event_stream.BuildMetrics.ActionSummary.RunnerCount}
       */
      public static final class RunnerCount extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:build_event_stream.BuildMetrics.ActionSummary.RunnerCount)
          RunnerCountOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use RunnerCount.newBuilder() to construct.
        private RunnerCount(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private RunnerCount() {
          name_ = "";
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ActionSummary_RunnerCount_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ActionSummary_RunnerCount_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount.Builder.class);
        }

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

        public static final int COUNT_FIELD_NUMBER = 2;
        private int count_ = 0;
        /**
         * <code>int32 count = 2;</code>
         * @return The count.
         */
        @java.lang.Override
        public int getCount() {
          return count_;
        }

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

          memoizedIsInitialized = 1;
          return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
          }
          if (count_ != 0) {
            output.writeInt32(2, count_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
          }
          if (count_ != 0) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt32Size(2, count_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSize = size;
          return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount)) {
            return super.equals(obj);
          }
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount other = (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount) obj;

          if (!getName()
              .equals(other.getName())) return false;
          if (getCount()
              != other.getCount()) return false;
          if (!getUnknownFields().equals(other.getUnknownFields())) return false;
          return true;
        }

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

        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount 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 build_event_stream.BuildMetrics.ActionSummary.RunnerCount}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:build_event_stream.BuildMetrics.ActionSummary.RunnerCount)
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCountOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ActionSummary_RunnerCount_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ActionSummary_RunnerCount_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount.Builder.class);
          }

          // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount.newBuilder()
          private Builder() {

          }

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

          }
          @java.lang.Override
          public Builder clear() {
            super.clear();
            bitField0_ = 0;
            name_ = "";
            count_ = 0;
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ActionSummary_RunnerCount_descriptor;
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount getDefaultInstanceForType() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount.getDefaultInstance();
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount build() {
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount buildPartial() {
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount(this);
            if (bitField0_ != 0) { buildPartial0(result); }
            onBuilt();
            return result;
          }

          private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount result) {
            int from_bitField0_ = bitField0_;
            if (((from_bitField0_ & 0x00000001) != 0)) {
              result.name_ = name_;
            }
            if (((from_bitField0_ & 0x00000002) != 0)) {
              result.count_ = count_;
            }
          }

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

          public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount other) {
            if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount.getDefaultInstance()) return this;
            if (!other.getName().isEmpty()) {
              name_ = other.name_;
              bitField0_ |= 0x00000001;
              onChanged();
            }
            if (other.getCount() != 0) {
              setCount(other.getCount());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

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

          @java.lang.Override
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 10: {
                    name_ = input.readStringRequireUtf8();
                    bitField0_ |= 0x00000001;
                    break;
                  } // case 10
                  case 16: {
                    count_ = input.readInt32();
                    bitField0_ |= 0x00000002;
                    break;
                  } // case 16
                  default: {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }
          private int bitField0_;

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

          private int count_ ;
          /**
           * <code>int32 count = 2;</code>
           * @return The count.
           */
          @java.lang.Override
          public int getCount() {
            return count_;
          }
          /**
           * <code>int32 count = 2;</code>
           * @param value The count to set.
           * @return This builder for chaining.
           */
          public Builder setCount(int value) {
            
            count_ = value;
            bitField0_ |= 0x00000002;
            onChanged();
            return this;
          }
          /**
           * <code>int32 count = 2;</code>
           * @return This builder for chaining.
           */
          public Builder clearCount() {
            bitField0_ = (bitField0_ & ~0x00000002);
            count_ = 0;
            onChanged();
            return this;
          }
          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

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


          // @@protoc_insertion_point(builder_scope:build_event_stream.BuildMetrics.ActionSummary.RunnerCount)
        }

        // @@protoc_insertion_point(class_scope:build_event_stream.BuildMetrics.ActionSummary.RunnerCount)
        private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount();
        }

        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }

      }

      public static final int ACTIONS_CREATED_FIELD_NUMBER = 1;
      private long actionsCreated_ = 0L;
      /**
       * <pre>
       * The total number of actions created and registered during the build,
       * including both aspects and configured targets. This metric includes
       * unused actions that were constructed but not executed during this build.
       * It does not include actions that were created on prior builds that are
       * still valid, even if those actions had to be re-executed on this build.
       * For the total number of actions that would be created if this invocation
       * were "clean", see BuildGraphMetrics below.
       * </pre>
       *
       * <code>int64 actions_created = 1;</code>
       * @return The actionsCreated.
       */
      @java.lang.Override
      public long getActionsCreated() {
        return actionsCreated_;
      }

      public static final int ACTIONS_CREATED_NOT_INCLUDING_ASPECTS_FIELD_NUMBER = 3;
      private long actionsCreatedNotIncludingAspects_ = 0L;
      /**
       * <pre>
       * The total number of actions created this build just by configured
       * targets. Used mainly to allow consumers of actions_created, which used to
       * not include aspects' actions, to normalize across the Blaze release that
       * switched actions_created to include all created actions.
       * </pre>
       *
       * <code>int64 actions_created_not_including_aspects = 3;</code>
       * @return The actionsCreatedNotIncludingAspects.
       */
      @java.lang.Override
      public long getActionsCreatedNotIncludingAspects() {
        return actionsCreatedNotIncludingAspects_;
      }

      public static final int ACTIONS_EXECUTED_FIELD_NUMBER = 2;
      private long actionsExecuted_ = 0L;
      /**
       * <pre>
       * The total number of actions executed during the build. This includes any
       * remote cache hits, but excludes local action cache hits.
       * </pre>
       *
       * <code>int64 actions_executed = 2;</code>
       * @return The actionsExecuted.
       */
      @java.lang.Override
      public long getActionsExecuted() {
        return actionsExecuted_;
      }

      public static final int ACTION_DATA_FIELD_NUMBER = 4;
      @SuppressWarnings("serial")
      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData> actionData_;
      /**
       * <pre>
       * Contains the top N actions by number of actions executed.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
       */
      @java.lang.Override
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData> getActionDataList() {
        return actionData_;
      }
      /**
       * <pre>
       * Contains the top N actions by number of actions executed.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionDataOrBuilder> 
          getActionDataOrBuilderList() {
        return actionData_;
      }
      /**
       * <pre>
       * Contains the top N actions by number of actions executed.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
       */
      @java.lang.Override
      public int getActionDataCount() {
        return actionData_.size();
      }
      /**
       * <pre>
       * Contains the top N actions by number of actions executed.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData getActionData(int index) {
        return actionData_.get(index);
      }
      /**
       * <pre>
       * Contains the top N actions by number of actions executed.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionDataOrBuilder getActionDataOrBuilder(
          int index) {
        return actionData_.get(index);
      }

      public static final int REMOTE_CACHE_HITS_FIELD_NUMBER = 5;
      private long remoteCacheHits_ = 0L;
      /**
       * <pre>
       * Deprecated. The total number of remote cache hits.
       * </pre>
       *
       * <code>int64 remote_cache_hits = 5 [deprecated = true];</code>
       * @deprecated build_event_stream.BuildMetrics.ActionSummary.remote_cache_hits is deprecated.
       *     See bazel/build_event_stream.proto;l=869
       * @return The remoteCacheHits.
       */
      @java.lang.Override
      @java.lang.Deprecated public long getRemoteCacheHits() {
        return remoteCacheHits_;
      }

      public static final int RUNNER_COUNT_FIELD_NUMBER = 6;
      @SuppressWarnings("serial")
      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount> runnerCount_;
      /**
       * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
       */
      @java.lang.Override
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount> getRunnerCountList() {
        return runnerCount_;
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCountOrBuilder> 
          getRunnerCountOrBuilderList() {
        return runnerCount_;
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
       */
      @java.lang.Override
      public int getRunnerCountCount() {
        return runnerCount_.size();
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount getRunnerCount(int index) {
        return runnerCount_.get(index);
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCountOrBuilder getRunnerCountOrBuilder(
          int index) {
        return runnerCount_.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 (actionsCreated_ != 0L) {
          output.writeInt64(1, actionsCreated_);
        }
        if (actionsExecuted_ != 0L) {
          output.writeInt64(2, actionsExecuted_);
        }
        if (actionsCreatedNotIncludingAspects_ != 0L) {
          output.writeInt64(3, actionsCreatedNotIncludingAspects_);
        }
        for (int i = 0; i < actionData_.size(); i++) {
          output.writeMessage(4, actionData_.get(i));
        }
        if (remoteCacheHits_ != 0L) {
          output.writeInt64(5, remoteCacheHits_);
        }
        for (int i = 0; i < runnerCount_.size(); i++) {
          output.writeMessage(6, runnerCount_.get(i));
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (actionsCreated_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(1, actionsCreated_);
        }
        if (actionsExecuted_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(2, actionsExecuted_);
        }
        if (actionsCreatedNotIncludingAspects_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(3, actionsCreatedNotIncludingAspects_);
        }
        for (int i = 0; i < actionData_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, actionData_.get(i));
        }
        if (remoteCacheHits_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(5, remoteCacheHits_);
        }
        for (int i = 0; i < runnerCount_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(6, runnerCount_.get(i));
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (getActionsCreated()
            != other.getActionsCreated()) return false;
        if (getActionsCreatedNotIncludingAspects()
            != other.getActionsCreatedNotIncludingAspects()) return false;
        if (getActionsExecuted()
            != other.getActionsExecuted()) return false;
        if (!getActionDataList()
            .equals(other.getActionDataList())) return false;
        if (getRemoteCacheHits()
            != other.getRemoteCacheHits()) return false;
        if (!getRunnerCountList()
            .equals(other.getRunnerCountList())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + ACTIONS_CREATED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getActionsCreated());
        hash = (37 * hash) + ACTIONS_CREATED_NOT_INCLUDING_ASPECTS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getActionsCreatedNotIncludingAspects());
        hash = (37 * hash) + ACTIONS_EXECUTED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getActionsExecuted());
        if (getActionDataCount() > 0) {
          hash = (37 * hash) + ACTION_DATA_FIELD_NUMBER;
          hash = (53 * hash) + getActionDataList().hashCode();
        }
        hash = (37 * hash) + REMOTE_CACHE_HITS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getRemoteCacheHits());
        if (getRunnerCountCount() > 0) {
          hash = (37 * hash) + RUNNER_COUNT_FIELD_NUMBER;
          hash = (53 * hash) + getRunnerCountList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary 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 build_event_stream.BuildMetrics.ActionSummary}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildMetrics.ActionSummary)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummaryOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ActionSummary_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ActionSummary_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          actionsCreated_ = 0L;
          actionsCreatedNotIncludingAspects_ = 0L;
          actionsExecuted_ = 0L;
          if (actionDataBuilder_ == null) {
            actionData_ = java.util.Collections.emptyList();
          } else {
            actionData_ = null;
            actionDataBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          remoteCacheHits_ = 0L;
          if (runnerCountBuilder_ == null) {
            runnerCount_ = java.util.Collections.emptyList();
          } else {
            runnerCount_ = null;
            runnerCountBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000020);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ActionSummary_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary(this);
          buildPartialRepeatedFields(result);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary result) {
          if (actionDataBuilder_ == null) {
            if (((bitField0_ & 0x00000008) != 0)) {
              actionData_ = java.util.Collections.unmodifiableList(actionData_);
              bitField0_ = (bitField0_ & ~0x00000008);
            }
            result.actionData_ = actionData_;
          } else {
            result.actionData_ = actionDataBuilder_.build();
          }
          if (runnerCountBuilder_ == null) {
            if (((bitField0_ & 0x00000020) != 0)) {
              runnerCount_ = java.util.Collections.unmodifiableList(runnerCount_);
              bitField0_ = (bitField0_ & ~0x00000020);
            }
            result.runnerCount_ = runnerCount_;
          } else {
            result.runnerCount_ = runnerCountBuilder_.build();
          }
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.actionsCreated_ = actionsCreated_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.actionsCreatedNotIncludingAspects_ = actionsCreatedNotIncludingAspects_;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.actionsExecuted_ = actionsExecuted_;
          }
          if (((from_bitField0_ & 0x00000010) != 0)) {
            result.remoteCacheHits_ = remoteCacheHits_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.getDefaultInstance()) return this;
          if (other.getActionsCreated() != 0L) {
            setActionsCreated(other.getActionsCreated());
          }
          if (other.getActionsCreatedNotIncludingAspects() != 0L) {
            setActionsCreatedNotIncludingAspects(other.getActionsCreatedNotIncludingAspects());
          }
          if (other.getActionsExecuted() != 0L) {
            setActionsExecuted(other.getActionsExecuted());
          }
          if (actionDataBuilder_ == null) {
            if (!other.actionData_.isEmpty()) {
              if (actionData_.isEmpty()) {
                actionData_ = other.actionData_;
                bitField0_ = (bitField0_ & ~0x00000008);
              } else {
                ensureActionDataIsMutable();
                actionData_.addAll(other.actionData_);
              }
              onChanged();
            }
          } else {
            if (!other.actionData_.isEmpty()) {
              if (actionDataBuilder_.isEmpty()) {
                actionDataBuilder_.dispose();
                actionDataBuilder_ = null;
                actionData_ = other.actionData_;
                bitField0_ = (bitField0_ & ~0x00000008);
                actionDataBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getActionDataFieldBuilder() : null;
              } else {
                actionDataBuilder_.addAllMessages(other.actionData_);
              }
            }
          }
          if (other.getRemoteCacheHits() != 0L) {
            setRemoteCacheHits(other.getRemoteCacheHits());
          }
          if (runnerCountBuilder_ == null) {
            if (!other.runnerCount_.isEmpty()) {
              if (runnerCount_.isEmpty()) {
                runnerCount_ = other.runnerCount_;
                bitField0_ = (bitField0_ & ~0x00000020);
              } else {
                ensureRunnerCountIsMutable();
                runnerCount_.addAll(other.runnerCount_);
              }
              onChanged();
            }
          } else {
            if (!other.runnerCount_.isEmpty()) {
              if (runnerCountBuilder_.isEmpty()) {
                runnerCountBuilder_.dispose();
                runnerCountBuilder_ = null;
                runnerCount_ = other.runnerCount_;
                bitField0_ = (bitField0_ & ~0x00000020);
                runnerCountBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getRunnerCountFieldBuilder() : null;
              } else {
                runnerCountBuilder_.addAllMessages(other.runnerCount_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  actionsCreated_ = input.readInt64();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 16: {
                  actionsExecuted_ = input.readInt64();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 16
                case 24: {
                  actionsCreatedNotIncludingAspects_ = input.readInt64();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 24
                case 34: {
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData m =
                      input.readMessage(
                          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData.parser(),
                          extensionRegistry);
                  if (actionDataBuilder_ == null) {
                    ensureActionDataIsMutable();
                    actionData_.add(m);
                  } else {
                    actionDataBuilder_.addMessage(m);
                  }
                  break;
                } // case 34
                case 40: {
                  remoteCacheHits_ = input.readInt64();
                  bitField0_ |= 0x00000010;
                  break;
                } // case 40
                case 50: {
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount m =
                      input.readMessage(
                          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount.parser(),
                          extensionRegistry);
                  if (runnerCountBuilder_ == null) {
                    ensureRunnerCountIsMutable();
                    runnerCount_.add(m);
                  } else {
                    runnerCountBuilder_.addMessage(m);
                  }
                  break;
                } // case 50
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private long actionsCreated_ ;
        /**
         * <pre>
         * The total number of actions created and registered during the build,
         * including both aspects and configured targets. This metric includes
         * unused actions that were constructed but not executed during this build.
         * It does not include actions that were created on prior builds that are
         * still valid, even if those actions had to be re-executed on this build.
         * For the total number of actions that would be created if this invocation
         * were "clean", see BuildGraphMetrics below.
         * </pre>
         *
         * <code>int64 actions_created = 1;</code>
         * @return The actionsCreated.
         */
        @java.lang.Override
        public long getActionsCreated() {
          return actionsCreated_;
        }
        /**
         * <pre>
         * The total number of actions created and registered during the build,
         * including both aspects and configured targets. This metric includes
         * unused actions that were constructed but not executed during this build.
         * It does not include actions that were created on prior builds that are
         * still valid, even if those actions had to be re-executed on this build.
         * For the total number of actions that would be created if this invocation
         * were "clean", see BuildGraphMetrics below.
         * </pre>
         *
         * <code>int64 actions_created = 1;</code>
         * @param value The actionsCreated to set.
         * @return This builder for chaining.
         */
        public Builder setActionsCreated(long value) {
          
          actionsCreated_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The total number of actions created and registered during the build,
         * including both aspects and configured targets. This metric includes
         * unused actions that were constructed but not executed during this build.
         * It does not include actions that were created on prior builds that are
         * still valid, even if those actions had to be re-executed on this build.
         * For the total number of actions that would be created if this invocation
         * were "clean", see BuildGraphMetrics below.
         * </pre>
         *
         * <code>int64 actions_created = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearActionsCreated() {
          bitField0_ = (bitField0_ & ~0x00000001);
          actionsCreated_ = 0L;
          onChanged();
          return this;
        }

        private long actionsCreatedNotIncludingAspects_ ;
        /**
         * <pre>
         * The total number of actions created this build just by configured
         * targets. Used mainly to allow consumers of actions_created, which used to
         * not include aspects' actions, to normalize across the Blaze release that
         * switched actions_created to include all created actions.
         * </pre>
         *
         * <code>int64 actions_created_not_including_aspects = 3;</code>
         * @return The actionsCreatedNotIncludingAspects.
         */
        @java.lang.Override
        public long getActionsCreatedNotIncludingAspects() {
          return actionsCreatedNotIncludingAspects_;
        }
        /**
         * <pre>
         * The total number of actions created this build just by configured
         * targets. Used mainly to allow consumers of actions_created, which used to
         * not include aspects' actions, to normalize across the Blaze release that
         * switched actions_created to include all created actions.
         * </pre>
         *
         * <code>int64 actions_created_not_including_aspects = 3;</code>
         * @param value The actionsCreatedNotIncludingAspects to set.
         * @return This builder for chaining.
         */
        public Builder setActionsCreatedNotIncludingAspects(long value) {
          
          actionsCreatedNotIncludingAspects_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The total number of actions created this build just by configured
         * targets. Used mainly to allow consumers of actions_created, which used to
         * not include aspects' actions, to normalize across the Blaze release that
         * switched actions_created to include all created actions.
         * </pre>
         *
         * <code>int64 actions_created_not_including_aspects = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearActionsCreatedNotIncludingAspects() {
          bitField0_ = (bitField0_ & ~0x00000002);
          actionsCreatedNotIncludingAspects_ = 0L;
          onChanged();
          return this;
        }

        private long actionsExecuted_ ;
        /**
         * <pre>
         * The total number of actions executed during the build. This includes any
         * remote cache hits, but excludes local action cache hits.
         * </pre>
         *
         * <code>int64 actions_executed = 2;</code>
         * @return The actionsExecuted.
         */
        @java.lang.Override
        public long getActionsExecuted() {
          return actionsExecuted_;
        }
        /**
         * <pre>
         * The total number of actions executed during the build. This includes any
         * remote cache hits, but excludes local action cache hits.
         * </pre>
         *
         * <code>int64 actions_executed = 2;</code>
         * @param value The actionsExecuted to set.
         * @return This builder for chaining.
         */
        public Builder setActionsExecuted(long value) {
          
          actionsExecuted_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The total number of actions executed during the build. This includes any
         * remote cache hits, but excludes local action cache hits.
         * </pre>
         *
         * <code>int64 actions_executed = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearActionsExecuted() {
          bitField0_ = (bitField0_ & ~0x00000004);
          actionsExecuted_ = 0L;
          onChanged();
          return this;
        }

        private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData> actionData_ =
          java.util.Collections.emptyList();
        private void ensureActionDataIsMutable() {
          if (!((bitField0_ & 0x00000008) != 0)) {
            actionData_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData>(actionData_);
            bitField0_ |= 0x00000008;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionDataOrBuilder> actionDataBuilder_;

        /**
         * <pre>
         * Contains the top N actions by number of actions executed.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
         */
        public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData> getActionDataList() {
          if (actionDataBuilder_ == null) {
            return java.util.Collections.unmodifiableList(actionData_);
          } else {
            return actionDataBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         * Contains the top N actions by number of actions executed.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
         */
        public int getActionDataCount() {
          if (actionDataBuilder_ == null) {
            return actionData_.size();
          } else {
            return actionDataBuilder_.getCount();
          }
        }
        /**
         * <pre>
         * Contains the top N actions by number of actions executed.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData getActionData(int index) {
          if (actionDataBuilder_ == null) {
            return actionData_.get(index);
          } else {
            return actionDataBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         * Contains the top N actions by number of actions executed.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
         */
        public Builder setActionData(
            int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData value) {
          if (actionDataBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureActionDataIsMutable();
            actionData_.set(index, value);
            onChanged();
          } else {
            actionDataBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * Contains the top N actions by number of actions executed.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
         */
        public Builder setActionData(
            int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData.Builder builderForValue) {
          if (actionDataBuilder_ == null) {
            ensureActionDataIsMutable();
            actionData_.set(index, builderForValue.build());
            onChanged();
          } else {
            actionDataBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Contains the top N actions by number of actions executed.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
         */
        public Builder addActionData(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData value) {
          if (actionDataBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureActionDataIsMutable();
            actionData_.add(value);
            onChanged();
          } else {
            actionDataBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         * Contains the top N actions by number of actions executed.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
         */
        public Builder addActionData(
            int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData value) {
          if (actionDataBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureActionDataIsMutable();
            actionData_.add(index, value);
            onChanged();
          } else {
            actionDataBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * Contains the top N actions by number of actions executed.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
         */
        public Builder addActionData(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData.Builder builderForValue) {
          if (actionDataBuilder_ == null) {
            ensureActionDataIsMutable();
            actionData_.add(builderForValue.build());
            onChanged();
          } else {
            actionDataBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Contains the top N actions by number of actions executed.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
         */
        public Builder addActionData(
            int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData.Builder builderForValue) {
          if (actionDataBuilder_ == null) {
            ensureActionDataIsMutable();
            actionData_.add(index, builderForValue.build());
            onChanged();
          } else {
            actionDataBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Contains the top N actions by number of actions executed.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
         */
        public Builder addAllActionData(
            java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData> values) {
          if (actionDataBuilder_ == null) {
            ensureActionDataIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, actionData_);
            onChanged();
          } else {
            actionDataBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         * Contains the top N actions by number of actions executed.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
         */
        public Builder clearActionData() {
          if (actionDataBuilder_ == null) {
            actionData_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
            onChanged();
          } else {
            actionDataBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Contains the top N actions by number of actions executed.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
         */
        public Builder removeActionData(int index) {
          if (actionDataBuilder_ == null) {
            ensureActionDataIsMutable();
            actionData_.remove(index);
            onChanged();
          } else {
            actionDataBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         * Contains the top N actions by number of actions executed.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData.Builder getActionDataBuilder(
            int index) {
          return getActionDataFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         * Contains the top N actions by number of actions executed.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionDataOrBuilder getActionDataOrBuilder(
            int index) {
          if (actionDataBuilder_ == null) {
            return actionData_.get(index);  } else {
            return actionDataBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         * Contains the top N actions by number of actions executed.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
         */
        public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionDataOrBuilder> 
             getActionDataOrBuilderList() {
          if (actionDataBuilder_ != null) {
            return actionDataBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(actionData_);
          }
        }
        /**
         * <pre>
         * Contains the top N actions by number of actions executed.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData.Builder addActionDataBuilder() {
          return getActionDataFieldBuilder().addBuilder(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData.getDefaultInstance());
        }
        /**
         * <pre>
         * Contains the top N actions by number of actions executed.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData.Builder addActionDataBuilder(
            int index) {
          return getActionDataFieldBuilder().addBuilder(
              index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData.getDefaultInstance());
        }
        /**
         * <pre>
         * Contains the top N actions by number of actions executed.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.ActionData action_data = 4;</code>
         */
        public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData.Builder> 
             getActionDataBuilderList() {
          return getActionDataFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionDataOrBuilder> 
            getActionDataFieldBuilder() {
          if (actionDataBuilder_ == null) {
            actionDataBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionData.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.ActionDataOrBuilder>(
                    actionData_,
                    ((bitField0_ & 0x00000008) != 0),
                    getParentForChildren(),
                    isClean());
            actionData_ = null;
          }
          return actionDataBuilder_;
        }

        private long remoteCacheHits_ ;
        /**
         * <pre>
         * Deprecated. The total number of remote cache hits.
         * </pre>
         *
         * <code>int64 remote_cache_hits = 5 [deprecated = true];</code>
         * @deprecated build_event_stream.BuildMetrics.ActionSummary.remote_cache_hits is deprecated.
         *     See bazel/build_event_stream.proto;l=869
         * @return The remoteCacheHits.
         */
        @java.lang.Override
        @java.lang.Deprecated public long getRemoteCacheHits() {
          return remoteCacheHits_;
        }
        /**
         * <pre>
         * Deprecated. The total number of remote cache hits.
         * </pre>
         *
         * <code>int64 remote_cache_hits = 5 [deprecated = true];</code>
         * @deprecated build_event_stream.BuildMetrics.ActionSummary.remote_cache_hits is deprecated.
         *     See bazel/build_event_stream.proto;l=869
         * @param value The remoteCacheHits to set.
         * @return This builder for chaining.
         */
        @java.lang.Deprecated public Builder setRemoteCacheHits(long value) {
          
          remoteCacheHits_ = value;
          bitField0_ |= 0x00000010;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Deprecated. The total number of remote cache hits.
         * </pre>
         *
         * <code>int64 remote_cache_hits = 5 [deprecated = true];</code>
         * @deprecated build_event_stream.BuildMetrics.ActionSummary.remote_cache_hits is deprecated.
         *     See bazel/build_event_stream.proto;l=869
         * @return This builder for chaining.
         */
        @java.lang.Deprecated public Builder clearRemoteCacheHits() {
          bitField0_ = (bitField0_ & ~0x00000010);
          remoteCacheHits_ = 0L;
          onChanged();
          return this;
        }

        private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount> runnerCount_ =
          java.util.Collections.emptyList();
        private void ensureRunnerCountIsMutable() {
          if (!((bitField0_ & 0x00000020) != 0)) {
            runnerCount_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount>(runnerCount_);
            bitField0_ |= 0x00000020;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCountOrBuilder> runnerCountBuilder_;

        /**
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
         */
        public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount> getRunnerCountList() {
          if (runnerCountBuilder_ == null) {
            return java.util.Collections.unmodifiableList(runnerCount_);
          } else {
            return runnerCountBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
         */
        public int getRunnerCountCount() {
          if (runnerCountBuilder_ == null) {
            return runnerCount_.size();
          } else {
            return runnerCountBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount getRunnerCount(int index) {
          if (runnerCountBuilder_ == null) {
            return runnerCount_.get(index);
          } else {
            return runnerCountBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
         */
        public Builder setRunnerCount(
            int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount value) {
          if (runnerCountBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureRunnerCountIsMutable();
            runnerCount_.set(index, value);
            onChanged();
          } else {
            runnerCountBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
         */
        public Builder setRunnerCount(
            int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount.Builder builderForValue) {
          if (runnerCountBuilder_ == null) {
            ensureRunnerCountIsMutable();
            runnerCount_.set(index, builderForValue.build());
            onChanged();
          } else {
            runnerCountBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
         */
        public Builder addRunnerCount(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount value) {
          if (runnerCountBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureRunnerCountIsMutable();
            runnerCount_.add(value);
            onChanged();
          } else {
            runnerCountBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
         */
        public Builder addRunnerCount(
            int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount value) {
          if (runnerCountBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureRunnerCountIsMutable();
            runnerCount_.add(index, value);
            onChanged();
          } else {
            runnerCountBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
         */
        public Builder addRunnerCount(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount.Builder builderForValue) {
          if (runnerCountBuilder_ == null) {
            ensureRunnerCountIsMutable();
            runnerCount_.add(builderForValue.build());
            onChanged();
          } else {
            runnerCountBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
         */
        public Builder addRunnerCount(
            int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount.Builder builderForValue) {
          if (runnerCountBuilder_ == null) {
            ensureRunnerCountIsMutable();
            runnerCount_.add(index, builderForValue.build());
            onChanged();
          } else {
            runnerCountBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
         */
        public Builder addAllRunnerCount(
            java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount> values) {
          if (runnerCountBuilder_ == null) {
            ensureRunnerCountIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, runnerCount_);
            onChanged();
          } else {
            runnerCountBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
         */
        public Builder clearRunnerCount() {
          if (runnerCountBuilder_ == null) {
            runnerCount_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000020);
            onChanged();
          } else {
            runnerCountBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
         */
        public Builder removeRunnerCount(int index) {
          if (runnerCountBuilder_ == null) {
            ensureRunnerCountIsMutable();
            runnerCount_.remove(index);
            onChanged();
          } else {
            runnerCountBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount.Builder getRunnerCountBuilder(
            int index) {
          return getRunnerCountFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCountOrBuilder getRunnerCountOrBuilder(
            int index) {
          if (runnerCountBuilder_ == null) {
            return runnerCount_.get(index);  } else {
            return runnerCountBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
         */
        public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCountOrBuilder> 
             getRunnerCountOrBuilderList() {
          if (runnerCountBuilder_ != null) {
            return runnerCountBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(runnerCount_);
          }
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount.Builder addRunnerCountBuilder() {
          return getRunnerCountFieldBuilder().addBuilder(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount.getDefaultInstance());
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount.Builder addRunnerCountBuilder(
            int index) {
          return getRunnerCountFieldBuilder().addBuilder(
              index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount.getDefaultInstance());
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.ActionSummary.RunnerCount runner_count = 6;</code>
         */
        public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount.Builder> 
             getRunnerCountBuilderList() {
          return getRunnerCountFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCountOrBuilder> 
            getRunnerCountFieldBuilder() {
          if (runnerCountBuilder_ == null) {
            runnerCountBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCount.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.RunnerCountOrBuilder>(
                    runnerCount_,
                    ((bitField0_ & 0x00000020) != 0),
                    getParentForChildren(),
                    isClean());
            runnerCount_ = null;
          }
          return runnerCountBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildMetrics.ActionSummary)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildMetrics.ActionSummary)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface MemoryMetricsOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildMetrics.MemoryMetrics)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Size of the JVM heap post build in bytes. This is only collected if
       * --memory_profile is set, since it forces a full GC.
       * </pre>
       *
       * <code>int64 used_heap_size_post_build = 1;</code>
       * @return The usedHeapSizePostBuild.
       */
      long getUsedHeapSizePostBuild();

      /**
       * <pre>
       * Size of the peak JVM heap size in bytes post GC. Note that this reports 0
       * if there was no major GC during the build.
       * </pre>
       *
       * <code>int64 peak_post_gc_heap_size = 2;</code>
       * @return The peakPostGcHeapSize.
       */
      long getPeakPostGcHeapSize();

      /**
       * <pre>
       * Size of the peak tenured space JVM heap size event in bytes post GC. Note
       * that this reports 0 if there was no major GC during the build.
       * </pre>
       *
       * <code>int64 peak_post_gc_tenured_space_heap_size = 4;</code>
       * @return The peakPostGcTenuredSpaceHeapSize.
       */
      long getPeakPostGcTenuredSpaceHeapSize();

      /**
       * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
       */
      java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics> 
          getGarbageMetricsList();
      /**
       * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics getGarbageMetrics(int index);
      /**
       * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
       */
      int getGarbageMetricsCount();
      /**
       * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
       */
      java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetricsOrBuilder> 
          getGarbageMetricsOrBuilderList();
      /**
       * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetricsOrBuilder getGarbageMetricsOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code build_event_stream.BuildMetrics.MemoryMetrics}
     */
    public static final class MemoryMetrics extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildMetrics.MemoryMetrics)
        MemoryMetricsOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use MemoryMetrics.newBuilder() to construct.
      private MemoryMetrics(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private MemoryMetrics() {
        garbageMetrics_ = java.util.Collections.emptyList();
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_MemoryMetrics_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_MemoryMetrics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.Builder.class);
      }

      public interface GarbageMetricsOrBuilder extends
          // @@protoc_insertion_point(interface_extends:build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics)
          com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * Type of garbage collected, e.g. G1 Old Gen.
         * </pre>
         *
         * <code>string type = 1;</code>
         * @return The type.
         */
        java.lang.String getType();
        /**
         * <pre>
         * Type of garbage collected, e.g. G1 Old Gen.
         * </pre>
         *
         * <code>string type = 1;</code>
         * @return The bytes for type.
         */
        com.google.protobuf.ByteString
            getTypeBytes();

        /**
         * <pre>
         * Number of bytes of garbage of the given type collected during this
         * invocation.
         * </pre>
         *
         * <code>int64 garbage_collected = 2;</code>
         * @return The garbageCollected.
         */
        long getGarbageCollected();
      }
      /**
       * Protobuf type {@code build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics}
       */
      public static final class GarbageMetrics extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics)
          GarbageMetricsOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use GarbageMetrics.newBuilder() to construct.
        private GarbageMetrics(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private GarbageMetrics() {
          type_ = "";
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_MemoryMetrics_GarbageMetrics_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_MemoryMetrics_GarbageMetrics_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics.Builder.class);
        }

        public static final int TYPE_FIELD_NUMBER = 1;
        @SuppressWarnings("serial")
        private volatile java.lang.Object type_ = "";
        /**
         * <pre>
         * Type of garbage collected, e.g. G1 Old Gen.
         * </pre>
         *
         * <code>string type = 1;</code>
         * @return The type.
         */
        @java.lang.Override
        public java.lang.String getType() {
          java.lang.Object ref = type_;
          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();
            type_ = s;
            return s;
          }
        }
        /**
         * <pre>
         * Type of garbage collected, e.g. G1 Old Gen.
         * </pre>
         *
         * <code>string type = 1;</code>
         * @return The bytes for type.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getTypeBytes() {
          java.lang.Object ref = type_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            type_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }

        public static final int GARBAGE_COLLECTED_FIELD_NUMBER = 2;
        private long garbageCollected_ = 0L;
        /**
         * <pre>
         * Number of bytes of garbage of the given type collected during this
         * invocation.
         * </pre>
         *
         * <code>int64 garbage_collected = 2;</code>
         * @return The garbageCollected.
         */
        @java.lang.Override
        public long getGarbageCollected() {
          return garbageCollected_;
        }

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

          memoizedIsInitialized = 1;
          return true;
        }

        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(type_)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 1, type_);
          }
          if (garbageCollected_ != 0L) {
            output.writeInt64(2, garbageCollected_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(type_)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, type_);
          }
          if (garbageCollected_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt64Size(2, garbageCollected_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSize = size;
          return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics)) {
            return super.equals(obj);
          }
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics other = (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics) obj;

          if (!getType()
              .equals(other.getType())) return false;
          if (getGarbageCollected()
              != other.getGarbageCollected()) return false;
          if (!getUnknownFields().equals(other.getUnknownFields())) return false;
          return true;
        }

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

        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics 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 build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics)
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetricsOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_MemoryMetrics_GarbageMetrics_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_MemoryMetrics_GarbageMetrics_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics.Builder.class);
          }

          // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics.newBuilder()
          private Builder() {

          }

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

          }
          @java.lang.Override
          public Builder clear() {
            super.clear();
            bitField0_ = 0;
            type_ = "";
            garbageCollected_ = 0L;
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_MemoryMetrics_GarbageMetrics_descriptor;
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics getDefaultInstanceForType() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics.getDefaultInstance();
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics build() {
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics buildPartial() {
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics(this);
            if (bitField0_ != 0) { buildPartial0(result); }
            onBuilt();
            return result;
          }

          private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics result) {
            int from_bitField0_ = bitField0_;
            if (((from_bitField0_ & 0x00000001) != 0)) {
              result.type_ = type_;
            }
            if (((from_bitField0_ & 0x00000002) != 0)) {
              result.garbageCollected_ = garbageCollected_;
            }
          }

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

          public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics other) {
            if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics.getDefaultInstance()) return this;
            if (!other.getType().isEmpty()) {
              type_ = other.type_;
              bitField0_ |= 0x00000001;
              onChanged();
            }
            if (other.getGarbageCollected() != 0L) {
              setGarbageCollected(other.getGarbageCollected());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

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

          @java.lang.Override
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 10: {
                    type_ = input.readStringRequireUtf8();
                    bitField0_ |= 0x00000001;
                    break;
                  } // case 10
                  case 16: {
                    garbageCollected_ = input.readInt64();
                    bitField0_ |= 0x00000002;
                    break;
                  } // case 16
                  default: {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }
          private int bitField0_;

          private java.lang.Object type_ = "";
          /**
           * <pre>
           * Type of garbage collected, e.g. G1 Old Gen.
           * </pre>
           *
           * <code>string type = 1;</code>
           * @return The type.
           */
          public java.lang.String getType() {
            java.lang.Object ref = type_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs =
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              type_ = s;
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * <pre>
           * Type of garbage collected, e.g. G1 Old Gen.
           * </pre>
           *
           * <code>string type = 1;</code>
           * @return The bytes for type.
           */
          public com.google.protobuf.ByteString
              getTypeBytes() {
            java.lang.Object ref = type_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              type_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * <pre>
           * Type of garbage collected, e.g. G1 Old Gen.
           * </pre>
           *
           * <code>string type = 1;</code>
           * @param value The type to set.
           * @return This builder for chaining.
           */
          public Builder setType(
              java.lang.String value) {
            if (value == null) { throw new NullPointerException(); }
            type_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Type of garbage collected, e.g. G1 Old Gen.
           * </pre>
           *
           * <code>string type = 1;</code>
           * @return This builder for chaining.
           */
          public Builder clearType() {
            type_ = getDefaultInstance().getType();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Type of garbage collected, e.g. G1 Old Gen.
           * </pre>
           *
           * <code>string type = 1;</code>
           * @param value The bytes for type to set.
           * @return This builder for chaining.
           */
          public Builder setTypeBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) { throw new NullPointerException(); }
            checkByteStringIsUtf8(value);
            type_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }

          private long garbageCollected_ ;
          /**
           * <pre>
           * Number of bytes of garbage of the given type collected during this
           * invocation.
           * </pre>
           *
           * <code>int64 garbage_collected = 2;</code>
           * @return The garbageCollected.
           */
          @java.lang.Override
          public long getGarbageCollected() {
            return garbageCollected_;
          }
          /**
           * <pre>
           * Number of bytes of garbage of the given type collected during this
           * invocation.
           * </pre>
           *
           * <code>int64 garbage_collected = 2;</code>
           * @param value The garbageCollected to set.
           * @return This builder for chaining.
           */
          public Builder setGarbageCollected(long value) {
            
            garbageCollected_ = value;
            bitField0_ |= 0x00000002;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Number of bytes of garbage of the given type collected during this
           * invocation.
           * </pre>
           *
           * <code>int64 garbage_collected = 2;</code>
           * @return This builder for chaining.
           */
          public Builder clearGarbageCollected() {
            bitField0_ = (bitField0_ & ~0x00000002);
            garbageCollected_ = 0L;
            onChanged();
            return this;
          }
          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

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


          // @@protoc_insertion_point(builder_scope:build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics)
        }

        // @@protoc_insertion_point(class_scope:build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics)
        private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics();
        }

        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }

      }

      public static final int USED_HEAP_SIZE_POST_BUILD_FIELD_NUMBER = 1;
      private long usedHeapSizePostBuild_ = 0L;
      /**
       * <pre>
       * Size of the JVM heap post build in bytes. This is only collected if
       * --memory_profile is set, since it forces a full GC.
       * </pre>
       *
       * <code>int64 used_heap_size_post_build = 1;</code>
       * @return The usedHeapSizePostBuild.
       */
      @java.lang.Override
      public long getUsedHeapSizePostBuild() {
        return usedHeapSizePostBuild_;
      }

      public static final int PEAK_POST_GC_HEAP_SIZE_FIELD_NUMBER = 2;
      private long peakPostGcHeapSize_ = 0L;
      /**
       * <pre>
       * Size of the peak JVM heap size in bytes post GC. Note that this reports 0
       * if there was no major GC during the build.
       * </pre>
       *
       * <code>int64 peak_post_gc_heap_size = 2;</code>
       * @return The peakPostGcHeapSize.
       */
      @java.lang.Override
      public long getPeakPostGcHeapSize() {
        return peakPostGcHeapSize_;
      }

      public static final int PEAK_POST_GC_TENURED_SPACE_HEAP_SIZE_FIELD_NUMBER = 4;
      private long peakPostGcTenuredSpaceHeapSize_ = 0L;
      /**
       * <pre>
       * Size of the peak tenured space JVM heap size event in bytes post GC. Note
       * that this reports 0 if there was no major GC during the build.
       * </pre>
       *
       * <code>int64 peak_post_gc_tenured_space_heap_size = 4;</code>
       * @return The peakPostGcTenuredSpaceHeapSize.
       */
      @java.lang.Override
      public long getPeakPostGcTenuredSpaceHeapSize() {
        return peakPostGcTenuredSpaceHeapSize_;
      }

      public static final int GARBAGE_METRICS_FIELD_NUMBER = 3;
      @SuppressWarnings("serial")
      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics> garbageMetrics_;
      /**
       * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
       */
      @java.lang.Override
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics> getGarbageMetricsList() {
        return garbageMetrics_;
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetricsOrBuilder> 
          getGarbageMetricsOrBuilderList() {
        return garbageMetrics_;
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
       */
      @java.lang.Override
      public int getGarbageMetricsCount() {
        return garbageMetrics_.size();
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics getGarbageMetrics(int index) {
        return garbageMetrics_.get(index);
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetricsOrBuilder getGarbageMetricsOrBuilder(
          int index) {
        return garbageMetrics_.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 (usedHeapSizePostBuild_ != 0L) {
          output.writeInt64(1, usedHeapSizePostBuild_);
        }
        if (peakPostGcHeapSize_ != 0L) {
          output.writeInt64(2, peakPostGcHeapSize_);
        }
        for (int i = 0; i < garbageMetrics_.size(); i++) {
          output.writeMessage(3, garbageMetrics_.get(i));
        }
        if (peakPostGcTenuredSpaceHeapSize_ != 0L) {
          output.writeInt64(4, peakPostGcTenuredSpaceHeapSize_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (usedHeapSizePostBuild_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(1, usedHeapSizePostBuild_);
        }
        if (peakPostGcHeapSize_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(2, peakPostGcHeapSize_);
        }
        for (int i = 0; i < garbageMetrics_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, garbageMetrics_.get(i));
        }
        if (peakPostGcTenuredSpaceHeapSize_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(4, peakPostGcTenuredSpaceHeapSize_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (getUsedHeapSizePostBuild()
            != other.getUsedHeapSizePostBuild()) return false;
        if (getPeakPostGcHeapSize()
            != other.getPeakPostGcHeapSize()) return false;
        if (getPeakPostGcTenuredSpaceHeapSize()
            != other.getPeakPostGcTenuredSpaceHeapSize()) return false;
        if (!getGarbageMetricsList()
            .equals(other.getGarbageMetricsList())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + USED_HEAP_SIZE_POST_BUILD_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getUsedHeapSizePostBuild());
        hash = (37 * hash) + PEAK_POST_GC_HEAP_SIZE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getPeakPostGcHeapSize());
        hash = (37 * hash) + PEAK_POST_GC_TENURED_SPACE_HEAP_SIZE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getPeakPostGcTenuredSpaceHeapSize());
        if (getGarbageMetricsCount() > 0) {
          hash = (37 * hash) + GARBAGE_METRICS_FIELD_NUMBER;
          hash = (53 * hash) + getGarbageMetricsList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics 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 build_event_stream.BuildMetrics.MemoryMetrics}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildMetrics.MemoryMetrics)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetricsOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_MemoryMetrics_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_MemoryMetrics_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          usedHeapSizePostBuild_ = 0L;
          peakPostGcHeapSize_ = 0L;
          peakPostGcTenuredSpaceHeapSize_ = 0L;
          if (garbageMetricsBuilder_ == null) {
            garbageMetrics_ = java.util.Collections.emptyList();
          } else {
            garbageMetrics_ = null;
            garbageMetricsBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_MemoryMetrics_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics(this);
          buildPartialRepeatedFields(result);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics result) {
          if (garbageMetricsBuilder_ == null) {
            if (((bitField0_ & 0x00000008) != 0)) {
              garbageMetrics_ = java.util.Collections.unmodifiableList(garbageMetrics_);
              bitField0_ = (bitField0_ & ~0x00000008);
            }
            result.garbageMetrics_ = garbageMetrics_;
          } else {
            result.garbageMetrics_ = garbageMetricsBuilder_.build();
          }
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.usedHeapSizePostBuild_ = usedHeapSizePostBuild_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.peakPostGcHeapSize_ = peakPostGcHeapSize_;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.peakPostGcTenuredSpaceHeapSize_ = peakPostGcTenuredSpaceHeapSize_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.getDefaultInstance()) return this;
          if (other.getUsedHeapSizePostBuild() != 0L) {
            setUsedHeapSizePostBuild(other.getUsedHeapSizePostBuild());
          }
          if (other.getPeakPostGcHeapSize() != 0L) {
            setPeakPostGcHeapSize(other.getPeakPostGcHeapSize());
          }
          if (other.getPeakPostGcTenuredSpaceHeapSize() != 0L) {
            setPeakPostGcTenuredSpaceHeapSize(other.getPeakPostGcTenuredSpaceHeapSize());
          }
          if (garbageMetricsBuilder_ == null) {
            if (!other.garbageMetrics_.isEmpty()) {
              if (garbageMetrics_.isEmpty()) {
                garbageMetrics_ = other.garbageMetrics_;
                bitField0_ = (bitField0_ & ~0x00000008);
              } else {
                ensureGarbageMetricsIsMutable();
                garbageMetrics_.addAll(other.garbageMetrics_);
              }
              onChanged();
            }
          } else {
            if (!other.garbageMetrics_.isEmpty()) {
              if (garbageMetricsBuilder_.isEmpty()) {
                garbageMetricsBuilder_.dispose();
                garbageMetricsBuilder_ = null;
                garbageMetrics_ = other.garbageMetrics_;
                bitField0_ = (bitField0_ & ~0x00000008);
                garbageMetricsBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getGarbageMetricsFieldBuilder() : null;
              } else {
                garbageMetricsBuilder_.addAllMessages(other.garbageMetrics_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  usedHeapSizePostBuild_ = input.readInt64();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 16: {
                  peakPostGcHeapSize_ = input.readInt64();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 16
                case 26: {
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics m =
                      input.readMessage(
                          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics.parser(),
                          extensionRegistry);
                  if (garbageMetricsBuilder_ == null) {
                    ensureGarbageMetricsIsMutable();
                    garbageMetrics_.add(m);
                  } else {
                    garbageMetricsBuilder_.addMessage(m);
                  }
                  break;
                } // case 26
                case 32: {
                  peakPostGcTenuredSpaceHeapSize_ = input.readInt64();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 32
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private long usedHeapSizePostBuild_ ;
        /**
         * <pre>
         * Size of the JVM heap post build in bytes. This is only collected if
         * --memory_profile is set, since it forces a full GC.
         * </pre>
         *
         * <code>int64 used_heap_size_post_build = 1;</code>
         * @return The usedHeapSizePostBuild.
         */
        @java.lang.Override
        public long getUsedHeapSizePostBuild() {
          return usedHeapSizePostBuild_;
        }
        /**
         * <pre>
         * Size of the JVM heap post build in bytes. This is only collected if
         * --memory_profile is set, since it forces a full GC.
         * </pre>
         *
         * <code>int64 used_heap_size_post_build = 1;</code>
         * @param value The usedHeapSizePostBuild to set.
         * @return This builder for chaining.
         */
        public Builder setUsedHeapSizePostBuild(long value) {
          
          usedHeapSizePostBuild_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Size of the JVM heap post build in bytes. This is only collected if
         * --memory_profile is set, since it forces a full GC.
         * </pre>
         *
         * <code>int64 used_heap_size_post_build = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearUsedHeapSizePostBuild() {
          bitField0_ = (bitField0_ & ~0x00000001);
          usedHeapSizePostBuild_ = 0L;
          onChanged();
          return this;
        }

        private long peakPostGcHeapSize_ ;
        /**
         * <pre>
         * Size of the peak JVM heap size in bytes post GC. Note that this reports 0
         * if there was no major GC during the build.
         * </pre>
         *
         * <code>int64 peak_post_gc_heap_size = 2;</code>
         * @return The peakPostGcHeapSize.
         */
        @java.lang.Override
        public long getPeakPostGcHeapSize() {
          return peakPostGcHeapSize_;
        }
        /**
         * <pre>
         * Size of the peak JVM heap size in bytes post GC. Note that this reports 0
         * if there was no major GC during the build.
         * </pre>
         *
         * <code>int64 peak_post_gc_heap_size = 2;</code>
         * @param value The peakPostGcHeapSize to set.
         * @return This builder for chaining.
         */
        public Builder setPeakPostGcHeapSize(long value) {
          
          peakPostGcHeapSize_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Size of the peak JVM heap size in bytes post GC. Note that this reports 0
         * if there was no major GC during the build.
         * </pre>
         *
         * <code>int64 peak_post_gc_heap_size = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearPeakPostGcHeapSize() {
          bitField0_ = (bitField0_ & ~0x00000002);
          peakPostGcHeapSize_ = 0L;
          onChanged();
          return this;
        }

        private long peakPostGcTenuredSpaceHeapSize_ ;
        /**
         * <pre>
         * Size of the peak tenured space JVM heap size event in bytes post GC. Note
         * that this reports 0 if there was no major GC during the build.
         * </pre>
         *
         * <code>int64 peak_post_gc_tenured_space_heap_size = 4;</code>
         * @return The peakPostGcTenuredSpaceHeapSize.
         */
        @java.lang.Override
        public long getPeakPostGcTenuredSpaceHeapSize() {
          return peakPostGcTenuredSpaceHeapSize_;
        }
        /**
         * <pre>
         * Size of the peak tenured space JVM heap size event in bytes post GC. Note
         * that this reports 0 if there was no major GC during the build.
         * </pre>
         *
         * <code>int64 peak_post_gc_tenured_space_heap_size = 4;</code>
         * @param value The peakPostGcTenuredSpaceHeapSize to set.
         * @return This builder for chaining.
         */
        public Builder setPeakPostGcTenuredSpaceHeapSize(long value) {
          
          peakPostGcTenuredSpaceHeapSize_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Size of the peak tenured space JVM heap size event in bytes post GC. Note
         * that this reports 0 if there was no major GC during the build.
         * </pre>
         *
         * <code>int64 peak_post_gc_tenured_space_heap_size = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearPeakPostGcTenuredSpaceHeapSize() {
          bitField0_ = (bitField0_ & ~0x00000004);
          peakPostGcTenuredSpaceHeapSize_ = 0L;
          onChanged();
          return this;
        }

        private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics> garbageMetrics_ =
          java.util.Collections.emptyList();
        private void ensureGarbageMetricsIsMutable() {
          if (!((bitField0_ & 0x00000008) != 0)) {
            garbageMetrics_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics>(garbageMetrics_);
            bitField0_ |= 0x00000008;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetricsOrBuilder> garbageMetricsBuilder_;

        /**
         * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
         */
        public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics> getGarbageMetricsList() {
          if (garbageMetricsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(garbageMetrics_);
          } else {
            return garbageMetricsBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
         */
        public int getGarbageMetricsCount() {
          if (garbageMetricsBuilder_ == null) {
            return garbageMetrics_.size();
          } else {
            return garbageMetricsBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics getGarbageMetrics(int index) {
          if (garbageMetricsBuilder_ == null) {
            return garbageMetrics_.get(index);
          } else {
            return garbageMetricsBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
         */
        public Builder setGarbageMetrics(
            int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics value) {
          if (garbageMetricsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGarbageMetricsIsMutable();
            garbageMetrics_.set(index, value);
            onChanged();
          } else {
            garbageMetricsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
         */
        public Builder setGarbageMetrics(
            int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics.Builder builderForValue) {
          if (garbageMetricsBuilder_ == null) {
            ensureGarbageMetricsIsMutable();
            garbageMetrics_.set(index, builderForValue.build());
            onChanged();
          } else {
            garbageMetricsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
         */
        public Builder addGarbageMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics value) {
          if (garbageMetricsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGarbageMetricsIsMutable();
            garbageMetrics_.add(value);
            onChanged();
          } else {
            garbageMetricsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
         */
        public Builder addGarbageMetrics(
            int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics value) {
          if (garbageMetricsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGarbageMetricsIsMutable();
            garbageMetrics_.add(index, value);
            onChanged();
          } else {
            garbageMetricsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
         */
        public Builder addGarbageMetrics(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics.Builder builderForValue) {
          if (garbageMetricsBuilder_ == null) {
            ensureGarbageMetricsIsMutable();
            garbageMetrics_.add(builderForValue.build());
            onChanged();
          } else {
            garbageMetricsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
         */
        public Builder addGarbageMetrics(
            int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics.Builder builderForValue) {
          if (garbageMetricsBuilder_ == null) {
            ensureGarbageMetricsIsMutable();
            garbageMetrics_.add(index, builderForValue.build());
            onChanged();
          } else {
            garbageMetricsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
         */
        public Builder addAllGarbageMetrics(
            java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics> values) {
          if (garbageMetricsBuilder_ == null) {
            ensureGarbageMetricsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, garbageMetrics_);
            onChanged();
          } else {
            garbageMetricsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
         */
        public Builder clearGarbageMetrics() {
          if (garbageMetricsBuilder_ == null) {
            garbageMetrics_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
            onChanged();
          } else {
            garbageMetricsBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
         */
        public Builder removeGarbageMetrics(int index) {
          if (garbageMetricsBuilder_ == null) {
            ensureGarbageMetricsIsMutable();
            garbageMetrics_.remove(index);
            onChanged();
          } else {
            garbageMetricsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics.Builder getGarbageMetricsBuilder(
            int index) {
          return getGarbageMetricsFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetricsOrBuilder getGarbageMetricsOrBuilder(
            int index) {
          if (garbageMetricsBuilder_ == null) {
            return garbageMetrics_.get(index);  } else {
            return garbageMetricsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
         */
        public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetricsOrBuilder> 
             getGarbageMetricsOrBuilderList() {
          if (garbageMetricsBuilder_ != null) {
            return garbageMetricsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(garbageMetrics_);
          }
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics.Builder addGarbageMetricsBuilder() {
          return getGarbageMetricsFieldBuilder().addBuilder(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics.getDefaultInstance());
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics.Builder addGarbageMetricsBuilder(
            int index) {
          return getGarbageMetricsFieldBuilder().addBuilder(
              index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics.getDefaultInstance());
        }
        /**
         * <code>repeated .build_event_stream.BuildMetrics.MemoryMetrics.GarbageMetrics garbage_metrics = 3;</code>
         */
        public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics.Builder> 
             getGarbageMetricsBuilderList() {
          return getGarbageMetricsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetricsOrBuilder> 
            getGarbageMetricsFieldBuilder() {
          if (garbageMetricsBuilder_ == null) {
            garbageMetricsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.GarbageMetricsOrBuilder>(
                    garbageMetrics_,
                    ((bitField0_ & 0x00000008) != 0),
                    getParentForChildren(),
                    isClean());
            garbageMetrics_ = null;
          }
          return garbageMetricsBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildMetrics.MemoryMetrics)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildMetrics.MemoryMetrics)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface TargetMetricsOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildMetrics.TargetMetrics)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * DEPRECATED
       * No longer populated. It never measured what it was supposed to (targets
       * loaded): it counted targets that were analyzed even if the underlying
       * package had not changed.
       * TODO(janakr): rename and remove.
       * </pre>
       *
       * <code>int64 targets_loaded = 1;</code>
       * @return The targetsLoaded.
       */
      long getTargetsLoaded();

      /**
       * <pre>
       * Number of targets/aspects configured during this build. Does not include
       * targets/aspects that were configured on prior builds on this server and
       * were cached. See BuildGraphMetrics below if you need that.
       * </pre>
       *
       * <code>int64 targets_configured = 2;</code>
       * @return The targetsConfigured.
       */
      long getTargetsConfigured();

      /**
       * <pre>
       * Number of configured targets analyzed during this build. Does not include
       * aspects. Used mainly to allow consumers of targets_configured, which used
       * to not include aspects, to normalize across the Blaze release that
       * switched targets_configured to include aspects.
       * </pre>
       *
       * <code>int64 targets_configured_not_including_aspects = 3;</code>
       * @return The targetsConfiguredNotIncludingAspects.
       */
      long getTargetsConfiguredNotIncludingAspects();
    }
    /**
     * Protobuf type {@code build_event_stream.BuildMetrics.TargetMetrics}
     */
    public static final class TargetMetrics extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildMetrics.TargetMetrics)
        TargetMetricsOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use TargetMetrics.newBuilder() to construct.
      private TargetMetrics(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private TargetMetrics() {
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_TargetMetrics_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_TargetMetrics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics.Builder.class);
      }

      public static final int TARGETS_LOADED_FIELD_NUMBER = 1;
      private long targetsLoaded_ = 0L;
      /**
       * <pre>
       * DEPRECATED
       * No longer populated. It never measured what it was supposed to (targets
       * loaded): it counted targets that were analyzed even if the underlying
       * package had not changed.
       * TODO(janakr): rename and remove.
       * </pre>
       *
       * <code>int64 targets_loaded = 1;</code>
       * @return The targetsLoaded.
       */
      @java.lang.Override
      public long getTargetsLoaded() {
        return targetsLoaded_;
      }

      public static final int TARGETS_CONFIGURED_FIELD_NUMBER = 2;
      private long targetsConfigured_ = 0L;
      /**
       * <pre>
       * Number of targets/aspects configured during this build. Does not include
       * targets/aspects that were configured on prior builds on this server and
       * were cached. See BuildGraphMetrics below if you need that.
       * </pre>
       *
       * <code>int64 targets_configured = 2;</code>
       * @return The targetsConfigured.
       */
      @java.lang.Override
      public long getTargetsConfigured() {
        return targetsConfigured_;
      }

      public static final int TARGETS_CONFIGURED_NOT_INCLUDING_ASPECTS_FIELD_NUMBER = 3;
      private long targetsConfiguredNotIncludingAspects_ = 0L;
      /**
       * <pre>
       * Number of configured targets analyzed during this build. Does not include
       * aspects. Used mainly to allow consumers of targets_configured, which used
       * to not include aspects, to normalize across the Blaze release that
       * switched targets_configured to include aspects.
       * </pre>
       *
       * <code>int64 targets_configured_not_including_aspects = 3;</code>
       * @return The targetsConfiguredNotIncludingAspects.
       */
      @java.lang.Override
      public long getTargetsConfiguredNotIncludingAspects() {
        return targetsConfiguredNotIncludingAspects_;
      }

      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 (targetsLoaded_ != 0L) {
          output.writeInt64(1, targetsLoaded_);
        }
        if (targetsConfigured_ != 0L) {
          output.writeInt64(2, targetsConfigured_);
        }
        if (targetsConfiguredNotIncludingAspects_ != 0L) {
          output.writeInt64(3, targetsConfiguredNotIncludingAspects_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (targetsLoaded_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(1, targetsLoaded_);
        }
        if (targetsConfigured_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(2, targetsConfigured_);
        }
        if (targetsConfiguredNotIncludingAspects_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(3, targetsConfiguredNotIncludingAspects_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (getTargetsLoaded()
            != other.getTargetsLoaded()) return false;
        if (getTargetsConfigured()
            != other.getTargetsConfigured()) return false;
        if (getTargetsConfiguredNotIncludingAspects()
            != other.getTargetsConfiguredNotIncludingAspects()) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + TARGETS_LOADED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTargetsLoaded());
        hash = (37 * hash) + TARGETS_CONFIGURED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTargetsConfigured());
        hash = (37 * hash) + TARGETS_CONFIGURED_NOT_INCLUDING_ASPECTS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTargetsConfiguredNotIncludingAspects());
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics 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 build_event_stream.BuildMetrics.TargetMetrics}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildMetrics.TargetMetrics)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetricsOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_TargetMetrics_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_TargetMetrics_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          targetsLoaded_ = 0L;
          targetsConfigured_ = 0L;
          targetsConfiguredNotIncludingAspects_ = 0L;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_TargetMetrics_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.targetsLoaded_ = targetsLoaded_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.targetsConfigured_ = targetsConfigured_;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.targetsConfiguredNotIncludingAspects_ = targetsConfiguredNotIncludingAspects_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics.getDefaultInstance()) return this;
          if (other.getTargetsLoaded() != 0L) {
            setTargetsLoaded(other.getTargetsLoaded());
          }
          if (other.getTargetsConfigured() != 0L) {
            setTargetsConfigured(other.getTargetsConfigured());
          }
          if (other.getTargetsConfiguredNotIncludingAspects() != 0L) {
            setTargetsConfiguredNotIncludingAspects(other.getTargetsConfiguredNotIncludingAspects());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  targetsLoaded_ = input.readInt64();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 16: {
                  targetsConfigured_ = input.readInt64();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 16
                case 24: {
                  targetsConfiguredNotIncludingAspects_ = input.readInt64();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 24
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private long targetsLoaded_ ;
        /**
         * <pre>
         * DEPRECATED
         * No longer populated. It never measured what it was supposed to (targets
         * loaded): it counted targets that were analyzed even if the underlying
         * package had not changed.
         * TODO(janakr): rename and remove.
         * </pre>
         *
         * <code>int64 targets_loaded = 1;</code>
         * @return The targetsLoaded.
         */
        @java.lang.Override
        public long getTargetsLoaded() {
          return targetsLoaded_;
        }
        /**
         * <pre>
         * DEPRECATED
         * No longer populated. It never measured what it was supposed to (targets
         * loaded): it counted targets that were analyzed even if the underlying
         * package had not changed.
         * TODO(janakr): rename and remove.
         * </pre>
         *
         * <code>int64 targets_loaded = 1;</code>
         * @param value The targetsLoaded to set.
         * @return This builder for chaining.
         */
        public Builder setTargetsLoaded(long value) {
          
          targetsLoaded_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * DEPRECATED
         * No longer populated. It never measured what it was supposed to (targets
         * loaded): it counted targets that were analyzed even if the underlying
         * package had not changed.
         * TODO(janakr): rename and remove.
         * </pre>
         *
         * <code>int64 targets_loaded = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearTargetsLoaded() {
          bitField0_ = (bitField0_ & ~0x00000001);
          targetsLoaded_ = 0L;
          onChanged();
          return this;
        }

        private long targetsConfigured_ ;
        /**
         * <pre>
         * Number of targets/aspects configured during this build. Does not include
         * targets/aspects that were configured on prior builds on this server and
         * were cached. See BuildGraphMetrics below if you need that.
         * </pre>
         *
         * <code>int64 targets_configured = 2;</code>
         * @return The targetsConfigured.
         */
        @java.lang.Override
        public long getTargetsConfigured() {
          return targetsConfigured_;
        }
        /**
         * <pre>
         * Number of targets/aspects configured during this build. Does not include
         * targets/aspects that were configured on prior builds on this server and
         * were cached. See BuildGraphMetrics below if you need that.
         * </pre>
         *
         * <code>int64 targets_configured = 2;</code>
         * @param value The targetsConfigured to set.
         * @return This builder for chaining.
         */
        public Builder setTargetsConfigured(long value) {
          
          targetsConfigured_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Number of targets/aspects configured during this build. Does not include
         * targets/aspects that were configured on prior builds on this server and
         * were cached. See BuildGraphMetrics below if you need that.
         * </pre>
         *
         * <code>int64 targets_configured = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearTargetsConfigured() {
          bitField0_ = (bitField0_ & ~0x00000002);
          targetsConfigured_ = 0L;
          onChanged();
          return this;
        }

        private long targetsConfiguredNotIncludingAspects_ ;
        /**
         * <pre>
         * Number of configured targets analyzed during this build. Does not include
         * aspects. Used mainly to allow consumers of targets_configured, which used
         * to not include aspects, to normalize across the Blaze release that
         * switched targets_configured to include aspects.
         * </pre>
         *
         * <code>int64 targets_configured_not_including_aspects = 3;</code>
         * @return The targetsConfiguredNotIncludingAspects.
         */
        @java.lang.Override
        public long getTargetsConfiguredNotIncludingAspects() {
          return targetsConfiguredNotIncludingAspects_;
        }
        /**
         * <pre>
         * Number of configured targets analyzed during this build. Does not include
         * aspects. Used mainly to allow consumers of targets_configured, which used
         * to not include aspects, to normalize across the Blaze release that
         * switched targets_configured to include aspects.
         * </pre>
         *
         * <code>int64 targets_configured_not_including_aspects = 3;</code>
         * @param value The targetsConfiguredNotIncludingAspects to set.
         * @return This builder for chaining.
         */
        public Builder setTargetsConfiguredNotIncludingAspects(long value) {
          
          targetsConfiguredNotIncludingAspects_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Number of configured targets analyzed during this build. Does not include
         * aspects. Used mainly to allow consumers of targets_configured, which used
         * to not include aspects, to normalize across the Blaze release that
         * switched targets_configured to include aspects.
         * </pre>
         *
         * <code>int64 targets_configured_not_including_aspects = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearTargetsConfiguredNotIncludingAspects() {
          bitField0_ = (bitField0_ & ~0x00000004);
          targetsConfiguredNotIncludingAspects_ = 0L;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildMetrics.TargetMetrics)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildMetrics.TargetMetrics)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface PackageMetricsOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildMetrics.PackageMetrics)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Number of BUILD files (aka packages) successfully loaded during this
       * build.
       * [For Bazel binaries built at source states] Before Dec 2021, this value
       * was the number of packages attempted to be loaded, for a particular
       * definition of "attempted".
       * After Dec 2021, this value would sometimes overcount because the same
       * package could sometimes be attempted to be loaded multiple times due to
       * memory pressure.
       * After Feb 2022, this value is the number of packages successfully
       * loaded.
       * </pre>
       *
       * <code>int64 packages_loaded = 1;</code>
       * @return The packagesLoaded.
       */
      long getPackagesLoaded();
    }
    /**
     * Protobuf type {@code build_event_stream.BuildMetrics.PackageMetrics}
     */
    public static final class PackageMetrics extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildMetrics.PackageMetrics)
        PackageMetricsOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use PackageMetrics.newBuilder() to construct.
      private PackageMetrics(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private PackageMetrics() {
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_PackageMetrics_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_PackageMetrics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics.Builder.class);
      }

      public static final int PACKAGES_LOADED_FIELD_NUMBER = 1;
      private long packagesLoaded_ = 0L;
      /**
       * <pre>
       * Number of BUILD files (aka packages) successfully loaded during this
       * build.
       * [For Bazel binaries built at source states] Before Dec 2021, this value
       * was the number of packages attempted to be loaded, for a particular
       * definition of "attempted".
       * After Dec 2021, this value would sometimes overcount because the same
       * package could sometimes be attempted to be loaded multiple times due to
       * memory pressure.
       * After Feb 2022, this value is the number of packages successfully
       * loaded.
       * </pre>
       *
       * <code>int64 packages_loaded = 1;</code>
       * @return The packagesLoaded.
       */
      @java.lang.Override
      public long getPackagesLoaded() {
        return packagesLoaded_;
      }

      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 (packagesLoaded_ != 0L) {
          output.writeInt64(1, packagesLoaded_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (packagesLoaded_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(1, packagesLoaded_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

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

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

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics 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 build_event_stream.BuildMetrics.PackageMetrics}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildMetrics.PackageMetrics)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetricsOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_PackageMetrics_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_PackageMetrics_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          packagesLoaded_ = 0L;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_PackageMetrics_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.packagesLoaded_ = packagesLoaded_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics.getDefaultInstance()) return this;
          if (other.getPackagesLoaded() != 0L) {
            setPackagesLoaded(other.getPackagesLoaded());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  packagesLoaded_ = input.readInt64();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private long packagesLoaded_ ;
        /**
         * <pre>
         * Number of BUILD files (aka packages) successfully loaded during this
         * build.
         * [For Bazel binaries built at source states] Before Dec 2021, this value
         * was the number of packages attempted to be loaded, for a particular
         * definition of "attempted".
         * After Dec 2021, this value would sometimes overcount because the same
         * package could sometimes be attempted to be loaded multiple times due to
         * memory pressure.
         * After Feb 2022, this value is the number of packages successfully
         * loaded.
         * </pre>
         *
         * <code>int64 packages_loaded = 1;</code>
         * @return The packagesLoaded.
         */
        @java.lang.Override
        public long getPackagesLoaded() {
          return packagesLoaded_;
        }
        /**
         * <pre>
         * Number of BUILD files (aka packages) successfully loaded during this
         * build.
         * [For Bazel binaries built at source states] Before Dec 2021, this value
         * was the number of packages attempted to be loaded, for a particular
         * definition of "attempted".
         * After Dec 2021, this value would sometimes overcount because the same
         * package could sometimes be attempted to be loaded multiple times due to
         * memory pressure.
         * After Feb 2022, this value is the number of packages successfully
         * loaded.
         * </pre>
         *
         * <code>int64 packages_loaded = 1;</code>
         * @param value The packagesLoaded to set.
         * @return This builder for chaining.
         */
        public Builder setPackagesLoaded(long value) {
          
          packagesLoaded_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Number of BUILD files (aka packages) successfully loaded during this
         * build.
         * [For Bazel binaries built at source states] Before Dec 2021, this value
         * was the number of packages attempted to be loaded, for a particular
         * definition of "attempted".
         * After Dec 2021, this value would sometimes overcount because the same
         * package could sometimes be attempted to be loaded multiple times due to
         * memory pressure.
         * After Feb 2022, this value is the number of packages successfully
         * loaded.
         * </pre>
         *
         * <code>int64 packages_loaded = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearPackagesLoaded() {
          bitField0_ = (bitField0_ & ~0x00000001);
          packagesLoaded_ = 0L;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildMetrics.PackageMetrics)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildMetrics.PackageMetrics)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface TimingMetricsOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildMetrics.TimingMetrics)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * The CPU time in milliseconds consumed during this build.
       * </pre>
       *
       * <code>int64 cpu_time_in_ms = 1;</code>
       * @return The cpuTimeInMs.
       */
      long getCpuTimeInMs();

      /**
       * <pre>
       * The elapsed wall time in milliseconds during this build.
       * </pre>
       *
       * <code>int64 wall_time_in_ms = 2;</code>
       * @return The wallTimeInMs.
       */
      long getWallTimeInMs();

      /**
       * <pre>
       * The elapsed wall time in milliseconds during the analysis phase.
       * When analysis and execution phases are interleaved, this measures the
       * elapsed time from the first analysis work to the last.
       * </pre>
       *
       * <code>int64 analysis_phase_time_in_ms = 3;</code>
       * @return The analysisPhaseTimeInMs.
       */
      long getAnalysisPhaseTimeInMs();
    }
    /**
     * Protobuf type {@code build_event_stream.BuildMetrics.TimingMetrics}
     */
    public static final class TimingMetrics extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildMetrics.TimingMetrics)
        TimingMetricsOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use TimingMetrics.newBuilder() to construct.
      private TimingMetrics(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private TimingMetrics() {
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_TimingMetrics_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_TimingMetrics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics.Builder.class);
      }

      public static final int CPU_TIME_IN_MS_FIELD_NUMBER = 1;
      private long cpuTimeInMs_ = 0L;
      /**
       * <pre>
       * The CPU time in milliseconds consumed during this build.
       * </pre>
       *
       * <code>int64 cpu_time_in_ms = 1;</code>
       * @return The cpuTimeInMs.
       */
      @java.lang.Override
      public long getCpuTimeInMs() {
        return cpuTimeInMs_;
      }

      public static final int WALL_TIME_IN_MS_FIELD_NUMBER = 2;
      private long wallTimeInMs_ = 0L;
      /**
       * <pre>
       * The elapsed wall time in milliseconds during this build.
       * </pre>
       *
       * <code>int64 wall_time_in_ms = 2;</code>
       * @return The wallTimeInMs.
       */
      @java.lang.Override
      public long getWallTimeInMs() {
        return wallTimeInMs_;
      }

      public static final int ANALYSIS_PHASE_TIME_IN_MS_FIELD_NUMBER = 3;
      private long analysisPhaseTimeInMs_ = 0L;
      /**
       * <pre>
       * The elapsed wall time in milliseconds during the analysis phase.
       * When analysis and execution phases are interleaved, this measures the
       * elapsed time from the first analysis work to the last.
       * </pre>
       *
       * <code>int64 analysis_phase_time_in_ms = 3;</code>
       * @return The analysisPhaseTimeInMs.
       */
      @java.lang.Override
      public long getAnalysisPhaseTimeInMs() {
        return analysisPhaseTimeInMs_;
      }

      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 (cpuTimeInMs_ != 0L) {
          output.writeInt64(1, cpuTimeInMs_);
        }
        if (wallTimeInMs_ != 0L) {
          output.writeInt64(2, wallTimeInMs_);
        }
        if (analysisPhaseTimeInMs_ != 0L) {
          output.writeInt64(3, analysisPhaseTimeInMs_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (cpuTimeInMs_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(1, cpuTimeInMs_);
        }
        if (wallTimeInMs_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(2, wallTimeInMs_);
        }
        if (analysisPhaseTimeInMs_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt64Size(3, analysisPhaseTimeInMs_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (getCpuTimeInMs()
            != other.getCpuTimeInMs()) return false;
        if (getWallTimeInMs()
            != other.getWallTimeInMs()) return false;
        if (getAnalysisPhaseTimeInMs()
            != other.getAnalysisPhaseTimeInMs()) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + CPU_TIME_IN_MS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getCpuTimeInMs());
        hash = (37 * hash) + WALL_TIME_IN_MS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getWallTimeInMs());
        hash = (37 * hash) + ANALYSIS_PHASE_TIME_IN_MS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getAnalysisPhaseTimeInMs());
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics 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 build_event_stream.BuildMetrics.TimingMetrics}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildMetrics.TimingMetrics)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetricsOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_TimingMetrics_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_TimingMetrics_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          cpuTimeInMs_ = 0L;
          wallTimeInMs_ = 0L;
          analysisPhaseTimeInMs_ = 0L;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_TimingMetrics_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.cpuTimeInMs_ = cpuTimeInMs_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.wallTimeInMs_ = wallTimeInMs_;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.analysisPhaseTimeInMs_ = analysisPhaseTimeInMs_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics.getDefaultInstance()) return this;
          if (other.getCpuTimeInMs() != 0L) {
            setCpuTimeInMs(other.getCpuTimeInMs());
          }
          if (other.getWallTimeInMs() != 0L) {
            setWallTimeInMs(other.getWallTimeInMs());
          }
          if (other.getAnalysisPhaseTimeInMs() != 0L) {
            setAnalysisPhaseTimeInMs(other.getAnalysisPhaseTimeInMs());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  cpuTimeInMs_ = input.readInt64();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 16: {
                  wallTimeInMs_ = input.readInt64();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 16
                case 24: {
                  analysisPhaseTimeInMs_ = input.readInt64();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 24
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private long cpuTimeInMs_ ;
        /**
         * <pre>
         * The CPU time in milliseconds consumed during this build.
         * </pre>
         *
         * <code>int64 cpu_time_in_ms = 1;</code>
         * @return The cpuTimeInMs.
         */
        @java.lang.Override
        public long getCpuTimeInMs() {
          return cpuTimeInMs_;
        }
        /**
         * <pre>
         * The CPU time in milliseconds consumed during this build.
         * </pre>
         *
         * <code>int64 cpu_time_in_ms = 1;</code>
         * @param value The cpuTimeInMs to set.
         * @return This builder for chaining.
         */
        public Builder setCpuTimeInMs(long value) {
          
          cpuTimeInMs_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The CPU time in milliseconds consumed during this build.
         * </pre>
         *
         * <code>int64 cpu_time_in_ms = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearCpuTimeInMs() {
          bitField0_ = (bitField0_ & ~0x00000001);
          cpuTimeInMs_ = 0L;
          onChanged();
          return this;
        }

        private long wallTimeInMs_ ;
        /**
         * <pre>
         * The elapsed wall time in milliseconds during this build.
         * </pre>
         *
         * <code>int64 wall_time_in_ms = 2;</code>
         * @return The wallTimeInMs.
         */
        @java.lang.Override
        public long getWallTimeInMs() {
          return wallTimeInMs_;
        }
        /**
         * <pre>
         * The elapsed wall time in milliseconds during this build.
         * </pre>
         *
         * <code>int64 wall_time_in_ms = 2;</code>
         * @param value The wallTimeInMs to set.
         * @return This builder for chaining.
         */
        public Builder setWallTimeInMs(long value) {
          
          wallTimeInMs_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The elapsed wall time in milliseconds during this build.
         * </pre>
         *
         * <code>int64 wall_time_in_ms = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearWallTimeInMs() {
          bitField0_ = (bitField0_ & ~0x00000002);
          wallTimeInMs_ = 0L;
          onChanged();
          return this;
        }

        private long analysisPhaseTimeInMs_ ;
        /**
         * <pre>
         * The elapsed wall time in milliseconds during the analysis phase.
         * When analysis and execution phases are interleaved, this measures the
         * elapsed time from the first analysis work to the last.
         * </pre>
         *
         * <code>int64 analysis_phase_time_in_ms = 3;</code>
         * @return The analysisPhaseTimeInMs.
         */
        @java.lang.Override
        public long getAnalysisPhaseTimeInMs() {
          return analysisPhaseTimeInMs_;
        }
        /**
         * <pre>
         * The elapsed wall time in milliseconds during the analysis phase.
         * When analysis and execution phases are interleaved, this measures the
         * elapsed time from the first analysis work to the last.
         * </pre>
         *
         * <code>int64 analysis_phase_time_in_ms = 3;</code>
         * @param value The analysisPhaseTimeInMs to set.
         * @return This builder for chaining.
         */
        public Builder setAnalysisPhaseTimeInMs(long value) {
          
          analysisPhaseTimeInMs_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * The elapsed wall time in milliseconds during the analysis phase.
         * When analysis and execution phases are interleaved, this measures the
         * elapsed time from the first analysis work to the last.
         * </pre>
         *
         * <code>int64 analysis_phase_time_in_ms = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearAnalysisPhaseTimeInMs() {
          bitField0_ = (bitField0_ & ~0x00000004);
          analysisPhaseTimeInMs_ = 0L;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildMetrics.TimingMetrics)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildMetrics.TimingMetrics)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface CumulativeMetricsOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildMetrics.CumulativeMetrics)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * One-indexed number of "analyses" the server has run, including the
       * current one. Will be incremented for every build/test/cquery/etc. command
       * that reaches the analysis phase.
       * </pre>
       *
       * <code>int32 num_analyses = 11;</code>
       * @return The numAnalyses.
       */
      int getNumAnalyses();

      /**
       * <pre>
       * One-indexed number of "builds" the server has run, including the current
       * one. Will be incremented for every build/test/run/etc. command that
       * reaches the execution phase.
       * </pre>
       *
       * <code>int32 num_builds = 12;</code>
       * @return The numBuilds.
       */
      int getNumBuilds();
    }
    /**
     * Protobuf type {@code build_event_stream.BuildMetrics.CumulativeMetrics}
     */
    public static final class CumulativeMetrics extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildMetrics.CumulativeMetrics)
        CumulativeMetricsOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use CumulativeMetrics.newBuilder() to construct.
      private CumulativeMetrics(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private CumulativeMetrics() {
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_CumulativeMetrics_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_CumulativeMetrics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics.Builder.class);
      }

      public static final int NUM_ANALYSES_FIELD_NUMBER = 11;
      private int numAnalyses_ = 0;
      /**
       * <pre>
       * One-indexed number of "analyses" the server has run, including the
       * current one. Will be incremented for every build/test/cquery/etc. command
       * that reaches the analysis phase.
       * </pre>
       *
       * <code>int32 num_analyses = 11;</code>
       * @return The numAnalyses.
       */
      @java.lang.Override
      public int getNumAnalyses() {
        return numAnalyses_;
      }

      public static final int NUM_BUILDS_FIELD_NUMBER = 12;
      private int numBuilds_ = 0;
      /**
       * <pre>
       * One-indexed number of "builds" the server has run, including the current
       * one. Will be incremented for every build/test/run/etc. command that
       * reaches the execution phase.
       * </pre>
       *
       * <code>int32 num_builds = 12;</code>
       * @return The numBuilds.
       */
      @java.lang.Override
      public int getNumBuilds() {
        return numBuilds_;
      }

      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 (numAnalyses_ != 0) {
          output.writeInt32(11, numAnalyses_);
        }
        if (numBuilds_ != 0) {
          output.writeInt32(12, numBuilds_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (numAnalyses_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(11, numAnalyses_);
        }
        if (numBuilds_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(12, numBuilds_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (getNumAnalyses()
            != other.getNumAnalyses()) return false;
        if (getNumBuilds()
            != other.getNumBuilds()) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + NUM_ANALYSES_FIELD_NUMBER;
        hash = (53 * hash) + getNumAnalyses();
        hash = (37 * hash) + NUM_BUILDS_FIELD_NUMBER;
        hash = (53 * hash) + getNumBuilds();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics 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 build_event_stream.BuildMetrics.CumulativeMetrics}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildMetrics.CumulativeMetrics)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetricsOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_CumulativeMetrics_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_CumulativeMetrics_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          numAnalyses_ = 0;
          numBuilds_ = 0;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_CumulativeMetrics_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.numAnalyses_ = numAnalyses_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.numBuilds_ = numBuilds_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics.getDefaultInstance()) return this;
          if (other.getNumAnalyses() != 0) {
            setNumAnalyses(other.getNumAnalyses());
          }
          if (other.getNumBuilds() != 0) {
            setNumBuilds(other.getNumBuilds());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 88: {
                  numAnalyses_ = input.readInt32();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 88
                case 96: {
                  numBuilds_ = input.readInt32();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 96
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private int numAnalyses_ ;
        /**
         * <pre>
         * One-indexed number of "analyses" the server has run, including the
         * current one. Will be incremented for every build/test/cquery/etc. command
         * that reaches the analysis phase.
         * </pre>
         *
         * <code>int32 num_analyses = 11;</code>
         * @return The numAnalyses.
         */
        @java.lang.Override
        public int getNumAnalyses() {
          return numAnalyses_;
        }
        /**
         * <pre>
         * One-indexed number of "analyses" the server has run, including the
         * current one. Will be incremented for every build/test/cquery/etc. command
         * that reaches the analysis phase.
         * </pre>
         *
         * <code>int32 num_analyses = 11;</code>
         * @param value The numAnalyses to set.
         * @return This builder for chaining.
         */
        public Builder setNumAnalyses(int value) {
          
          numAnalyses_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * One-indexed number of "analyses" the server has run, including the
         * current one. Will be incremented for every build/test/cquery/etc. command
         * that reaches the analysis phase.
         * </pre>
         *
         * <code>int32 num_analyses = 11;</code>
         * @return This builder for chaining.
         */
        public Builder clearNumAnalyses() {
          bitField0_ = (bitField0_ & ~0x00000001);
          numAnalyses_ = 0;
          onChanged();
          return this;
        }

        private int numBuilds_ ;
        /**
         * <pre>
         * One-indexed number of "builds" the server has run, including the current
         * one. Will be incremented for every build/test/run/etc. command that
         * reaches the execution phase.
         * </pre>
         *
         * <code>int32 num_builds = 12;</code>
         * @return The numBuilds.
         */
        @java.lang.Override
        public int getNumBuilds() {
          return numBuilds_;
        }
        /**
         * <pre>
         * One-indexed number of "builds" the server has run, including the current
         * one. Will be incremented for every build/test/run/etc. command that
         * reaches the execution phase.
         * </pre>
         *
         * <code>int32 num_builds = 12;</code>
         * @param value The numBuilds to set.
         * @return This builder for chaining.
         */
        public Builder setNumBuilds(int value) {
          
          numBuilds_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * One-indexed number of "builds" the server has run, including the current
         * one. Will be incremented for every build/test/run/etc. command that
         * reaches the execution phase.
         * </pre>
         *
         * <code>int32 num_builds = 12;</code>
         * @return This builder for chaining.
         */
        public Builder clearNumBuilds() {
          bitField0_ = (bitField0_ & ~0x00000002);
          numBuilds_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildMetrics.CumulativeMetrics)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildMetrics.CumulativeMetrics)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface ArtifactMetricsOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildMetrics.ArtifactMetrics)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Measures all source files newly read this build. Does not include
       * unchanged sources on incremental builds.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric source_artifacts_read = 2;</code>
       * @return Whether the sourceArtifactsRead field is set.
       */
      boolean hasSourceArtifactsRead();
      /**
       * <pre>
       * Measures all source files newly read this build. Does not include
       * unchanged sources on incremental builds.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric source_artifacts_read = 2;</code>
       * @return The sourceArtifactsRead.
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric getSourceArtifactsRead();
      /**
       * <pre>
       * Measures all source files newly read this build. Does not include
       * unchanged sources on incremental builds.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric source_artifacts_read = 2;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder getSourceArtifactsReadOrBuilder();

      /**
       * <pre>
       * Measures all output artifacts from executed actions. This includes
       * actions that were cached locally (via the action cache) or remotely (via
       * a remote cache or executor), but does *not* include outputs of actions
       * that were cached internally in Skyframe.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_seen = 3;</code>
       * @return Whether the outputArtifactsSeen field is set.
       */
      boolean hasOutputArtifactsSeen();
      /**
       * <pre>
       * Measures all output artifacts from executed actions. This includes
       * actions that were cached locally (via the action cache) or remotely (via
       * a remote cache or executor), but does *not* include outputs of actions
       * that were cached internally in Skyframe.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_seen = 3;</code>
       * @return The outputArtifactsSeen.
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric getOutputArtifactsSeen();
      /**
       * <pre>
       * Measures all output artifacts from executed actions. This includes
       * actions that were cached locally (via the action cache) or remotely (via
       * a remote cache or executor), but does *not* include outputs of actions
       * that were cached internally in Skyframe.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_seen = 3;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder getOutputArtifactsSeenOrBuilder();

      /**
       * <pre>
       * Measures all output artifacts from actions that were cached locally
       * via the action cache. These artifacts were already present on disk at the
       * start of the build. Does not include Skyframe-cached actions' outputs.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_from_action_cache = 4;</code>
       * @return Whether the outputArtifactsFromActionCache field is set.
       */
      boolean hasOutputArtifactsFromActionCache();
      /**
       * <pre>
       * Measures all output artifacts from actions that were cached locally
       * via the action cache. These artifacts were already present on disk at the
       * start of the build. Does not include Skyframe-cached actions' outputs.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_from_action_cache = 4;</code>
       * @return The outputArtifactsFromActionCache.
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric getOutputArtifactsFromActionCache();
      /**
       * <pre>
       * Measures all output artifacts from actions that were cached locally
       * via the action cache. These artifacts were already present on disk at the
       * start of the build. Does not include Skyframe-cached actions' outputs.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_from_action_cache = 4;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder getOutputArtifactsFromActionCacheOrBuilder();

      /**
       * <pre>
       * Measures all artifacts that belong to a top-level output group. Does not
       * deduplicate, so if there are two top-level targets in this build that
       * share an artifact, it will be counted twice.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric top_level_artifacts = 5;</code>
       * @return Whether the topLevelArtifacts field is set.
       */
      boolean hasTopLevelArtifacts();
      /**
       * <pre>
       * Measures all artifacts that belong to a top-level output group. Does not
       * deduplicate, so if there are two top-level targets in this build that
       * share an artifact, it will be counted twice.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric top_level_artifacts = 5;</code>
       * @return The topLevelArtifacts.
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric getTopLevelArtifacts();
      /**
       * <pre>
       * Measures all artifacts that belong to a top-level output group. Does not
       * deduplicate, so if there are two top-level targets in this build that
       * share an artifact, it will be counted twice.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric top_level_artifacts = 5;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder getTopLevelArtifactsOrBuilder();
    }
    /**
     * Protobuf type {@code build_event_stream.BuildMetrics.ArtifactMetrics}
     */
    public static final class ArtifactMetrics extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildMetrics.ArtifactMetrics)
        ArtifactMetricsOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ArtifactMetrics.newBuilder() to construct.
      private ArtifactMetrics(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ArtifactMetrics() {
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.Builder.class);
      }

      public interface FilesMetricOrBuilder extends
          // @@protoc_insertion_point(interface_extends:build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric)
          com.google.protobuf.MessageOrBuilder {

        /**
         * <code>int64 size_in_bytes = 1;</code>
         * @return The sizeInBytes.
         */
        long getSizeInBytes();

        /**
         * <code>int32 count = 2;</code>
         * @return The count.
         */
        int getCount();
      }
      /**
       * Protobuf type {@code build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric}
       */
      public static final class FilesMetric extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric)
          FilesMetricOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use FilesMetric.newBuilder() to construct.
        private FilesMetric(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private FilesMetric() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_FilesMetric_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_FilesMetric_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder.class);
        }

        public static final int SIZE_IN_BYTES_FIELD_NUMBER = 1;
        private long sizeInBytes_ = 0L;
        /**
         * <code>int64 size_in_bytes = 1;</code>
         * @return The sizeInBytes.
         */
        @java.lang.Override
        public long getSizeInBytes() {
          return sizeInBytes_;
        }

        public static final int COUNT_FIELD_NUMBER = 2;
        private int count_ = 0;
        /**
         * <code>int32 count = 2;</code>
         * @return The count.
         */
        @java.lang.Override
        public int getCount() {
          return count_;
        }

        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 (sizeInBytes_ != 0L) {
            output.writeInt64(1, sizeInBytes_);
          }
          if (count_ != 0) {
            output.writeInt32(2, count_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (sizeInBytes_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt64Size(1, sizeInBytes_);
          }
          if (count_ != 0) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt32Size(2, count_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSize = size;
          return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric)) {
            return super.equals(obj);
          }
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric other = (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric) obj;

          if (getSizeInBytes()
              != other.getSizeInBytes()) return false;
          if (getCount()
              != other.getCount()) return false;
          if (!getUnknownFields().equals(other.getUnknownFields())) return false;
          return true;
        }

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

        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric 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 build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric)
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_FilesMetric_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_FilesMetric_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder.class);
          }

          // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.newBuilder()
          private Builder() {

          }

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

          }
          @java.lang.Override
          public Builder clear() {
            super.clear();
            bitField0_ = 0;
            sizeInBytes_ = 0L;
            count_ = 0;
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_FilesMetric_descriptor;
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric getDefaultInstanceForType() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance();
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric build() {
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric buildPartial() {
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric(this);
            if (bitField0_ != 0) { buildPartial0(result); }
            onBuilt();
            return result;
          }

          private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric result) {
            int from_bitField0_ = bitField0_;
            if (((from_bitField0_ & 0x00000001) != 0)) {
              result.sizeInBytes_ = sizeInBytes_;
            }
            if (((from_bitField0_ & 0x00000002) != 0)) {
              result.count_ = count_;
            }
          }

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

          public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric other) {
            if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance()) return this;
            if (other.getSizeInBytes() != 0L) {
              setSizeInBytes(other.getSizeInBytes());
            }
            if (other.getCount() != 0) {
              setCount(other.getCount());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

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

          @java.lang.Override
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 8: {
                    sizeInBytes_ = input.readInt64();
                    bitField0_ |= 0x00000001;
                    break;
                  } // case 8
                  case 16: {
                    count_ = input.readInt32();
                    bitField0_ |= 0x00000002;
                    break;
                  } // case 16
                  default: {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }
          private int bitField0_;

          private long sizeInBytes_ ;
          /**
           * <code>int64 size_in_bytes = 1;</code>
           * @return The sizeInBytes.
           */
          @java.lang.Override
          public long getSizeInBytes() {
            return sizeInBytes_;
          }
          /**
           * <code>int64 size_in_bytes = 1;</code>
           * @param value The sizeInBytes to set.
           * @return This builder for chaining.
           */
          public Builder setSizeInBytes(long value) {
            
            sizeInBytes_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }
          /**
           * <code>int64 size_in_bytes = 1;</code>
           * @return This builder for chaining.
           */
          public Builder clearSizeInBytes() {
            bitField0_ = (bitField0_ & ~0x00000001);
            sizeInBytes_ = 0L;
            onChanged();
            return this;
          }

          private int count_ ;
          /**
           * <code>int32 count = 2;</code>
           * @return The count.
           */
          @java.lang.Override
          public int getCount() {
            return count_;
          }
          /**
           * <code>int32 count = 2;</code>
           * @param value The count to set.
           * @return This builder for chaining.
           */
          public Builder setCount(int value) {
            
            count_ = value;
            bitField0_ |= 0x00000002;
            onChanged();
            return this;
          }
          /**
           * <code>int32 count = 2;</code>
           * @return This builder for chaining.
           */
          public Builder clearCount() {
            bitField0_ = (bitField0_ & ~0x00000002);
            count_ = 0;
            onChanged();
            return this;
          }
          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

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


          // @@protoc_insertion_point(builder_scope:build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric)
        }

        // @@protoc_insertion_point(class_scope:build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric)
        private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric();
        }

        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }

      }

      public static final int SOURCE_ARTIFACTS_READ_FIELD_NUMBER = 2;
      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric sourceArtifactsRead_;
      /**
       * <pre>
       * Measures all source files newly read this build. Does not include
       * unchanged sources on incremental builds.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric source_artifacts_read = 2;</code>
       * @return Whether the sourceArtifactsRead field is set.
       */
      @java.lang.Override
      public boolean hasSourceArtifactsRead() {
        return sourceArtifactsRead_ != null;
      }
      /**
       * <pre>
       * Measures all source files newly read this build. Does not include
       * unchanged sources on incremental builds.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric source_artifacts_read = 2;</code>
       * @return The sourceArtifactsRead.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric getSourceArtifactsRead() {
        return sourceArtifactsRead_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance() : sourceArtifactsRead_;
      }
      /**
       * <pre>
       * Measures all source files newly read this build. Does not include
       * unchanged sources on incremental builds.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric source_artifacts_read = 2;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder getSourceArtifactsReadOrBuilder() {
        return sourceArtifactsRead_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance() : sourceArtifactsRead_;
      }

      public static final int OUTPUT_ARTIFACTS_SEEN_FIELD_NUMBER = 3;
      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric outputArtifactsSeen_;
      /**
       * <pre>
       * Measures all output artifacts from executed actions. This includes
       * actions that were cached locally (via the action cache) or remotely (via
       * a remote cache or executor), but does *not* include outputs of actions
       * that were cached internally in Skyframe.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_seen = 3;</code>
       * @return Whether the outputArtifactsSeen field is set.
       */
      @java.lang.Override
      public boolean hasOutputArtifactsSeen() {
        return outputArtifactsSeen_ != null;
      }
      /**
       * <pre>
       * Measures all output artifacts from executed actions. This includes
       * actions that were cached locally (via the action cache) or remotely (via
       * a remote cache or executor), but does *not* include outputs of actions
       * that were cached internally in Skyframe.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_seen = 3;</code>
       * @return The outputArtifactsSeen.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric getOutputArtifactsSeen() {
        return outputArtifactsSeen_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance() : outputArtifactsSeen_;
      }
      /**
       * <pre>
       * Measures all output artifacts from executed actions. This includes
       * actions that were cached locally (via the action cache) or remotely (via
       * a remote cache or executor), but does *not* include outputs of actions
       * that were cached internally in Skyframe.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_seen = 3;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder getOutputArtifactsSeenOrBuilder() {
        return outputArtifactsSeen_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance() : outputArtifactsSeen_;
      }

      public static final int OUTPUT_ARTIFACTS_FROM_ACTION_CACHE_FIELD_NUMBER = 4;
      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric outputArtifactsFromActionCache_;
      /**
       * <pre>
       * Measures all output artifacts from actions that were cached locally
       * via the action cache. These artifacts were already present on disk at the
       * start of the build. Does not include Skyframe-cached actions' outputs.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_from_action_cache = 4;</code>
       * @return Whether the outputArtifactsFromActionCache field is set.
       */
      @java.lang.Override
      public boolean hasOutputArtifactsFromActionCache() {
        return outputArtifactsFromActionCache_ != null;
      }
      /**
       * <pre>
       * Measures all output artifacts from actions that were cached locally
       * via the action cache. These artifacts were already present on disk at the
       * start of the build. Does not include Skyframe-cached actions' outputs.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_from_action_cache = 4;</code>
       * @return The outputArtifactsFromActionCache.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric getOutputArtifactsFromActionCache() {
        return outputArtifactsFromActionCache_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance() : outputArtifactsFromActionCache_;
      }
      /**
       * <pre>
       * Measures all output artifacts from actions that were cached locally
       * via the action cache. These artifacts were already present on disk at the
       * start of the build. Does not include Skyframe-cached actions' outputs.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_from_action_cache = 4;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder getOutputArtifactsFromActionCacheOrBuilder() {
        return outputArtifactsFromActionCache_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance() : outputArtifactsFromActionCache_;
      }

      public static final int TOP_LEVEL_ARTIFACTS_FIELD_NUMBER = 5;
      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric topLevelArtifacts_;
      /**
       * <pre>
       * Measures all artifacts that belong to a top-level output group. Does not
       * deduplicate, so if there are two top-level targets in this build that
       * share an artifact, it will be counted twice.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric top_level_artifacts = 5;</code>
       * @return Whether the topLevelArtifacts field is set.
       */
      @java.lang.Override
      public boolean hasTopLevelArtifacts() {
        return topLevelArtifacts_ != null;
      }
      /**
       * <pre>
       * Measures all artifacts that belong to a top-level output group. Does not
       * deduplicate, so if there are two top-level targets in this build that
       * share an artifact, it will be counted twice.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric top_level_artifacts = 5;</code>
       * @return The topLevelArtifacts.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric getTopLevelArtifacts() {
        return topLevelArtifacts_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance() : topLevelArtifacts_;
      }
      /**
       * <pre>
       * Measures all artifacts that belong to a top-level output group. Does not
       * deduplicate, so if there are two top-level targets in this build that
       * share an artifact, it will be counted twice.
       * </pre>
       *
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric top_level_artifacts = 5;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder getTopLevelArtifactsOrBuilder() {
        return topLevelArtifacts_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance() : topLevelArtifacts_;
      }

      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 (sourceArtifactsRead_ != null) {
          output.writeMessage(2, getSourceArtifactsRead());
        }
        if (outputArtifactsSeen_ != null) {
          output.writeMessage(3, getOutputArtifactsSeen());
        }
        if (outputArtifactsFromActionCache_ != null) {
          output.writeMessage(4, getOutputArtifactsFromActionCache());
        }
        if (topLevelArtifacts_ != null) {
          output.writeMessage(5, getTopLevelArtifacts());
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (sourceArtifactsRead_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getSourceArtifactsRead());
        }
        if (outputArtifactsSeen_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, getOutputArtifactsSeen());
        }
        if (outputArtifactsFromActionCache_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, getOutputArtifactsFromActionCache());
        }
        if (topLevelArtifacts_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, getTopLevelArtifacts());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (hasSourceArtifactsRead() != other.hasSourceArtifactsRead()) return false;
        if (hasSourceArtifactsRead()) {
          if (!getSourceArtifactsRead()
              .equals(other.getSourceArtifactsRead())) return false;
        }
        if (hasOutputArtifactsSeen() != other.hasOutputArtifactsSeen()) return false;
        if (hasOutputArtifactsSeen()) {
          if (!getOutputArtifactsSeen()
              .equals(other.getOutputArtifactsSeen())) return false;
        }
        if (hasOutputArtifactsFromActionCache() != other.hasOutputArtifactsFromActionCache()) return false;
        if (hasOutputArtifactsFromActionCache()) {
          if (!getOutputArtifactsFromActionCache()
              .equals(other.getOutputArtifactsFromActionCache())) return false;
        }
        if (hasTopLevelArtifacts() != other.hasTopLevelArtifacts()) return false;
        if (hasTopLevelArtifacts()) {
          if (!getTopLevelArtifacts()
              .equals(other.getTopLevelArtifacts())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasSourceArtifactsRead()) {
          hash = (37 * hash) + SOURCE_ARTIFACTS_READ_FIELD_NUMBER;
          hash = (53 * hash) + getSourceArtifactsRead().hashCode();
        }
        if (hasOutputArtifactsSeen()) {
          hash = (37 * hash) + OUTPUT_ARTIFACTS_SEEN_FIELD_NUMBER;
          hash = (53 * hash) + getOutputArtifactsSeen().hashCode();
        }
        if (hasOutputArtifactsFromActionCache()) {
          hash = (37 * hash) + OUTPUT_ARTIFACTS_FROM_ACTION_CACHE_FIELD_NUMBER;
          hash = (53 * hash) + getOutputArtifactsFromActionCache().hashCode();
        }
        if (hasTopLevelArtifacts()) {
          hash = (37 * hash) + TOP_LEVEL_ARTIFACTS_FIELD_NUMBER;
          hash = (53 * hash) + getTopLevelArtifacts().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics 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 build_event_stream.BuildMetrics.ArtifactMetrics}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildMetrics.ArtifactMetrics)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetricsOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          sourceArtifactsRead_ = null;
          if (sourceArtifactsReadBuilder_ != null) {
            sourceArtifactsReadBuilder_.dispose();
            sourceArtifactsReadBuilder_ = null;
          }
          outputArtifactsSeen_ = null;
          if (outputArtifactsSeenBuilder_ != null) {
            outputArtifactsSeenBuilder_.dispose();
            outputArtifactsSeenBuilder_ = null;
          }
          outputArtifactsFromActionCache_ = null;
          if (outputArtifactsFromActionCacheBuilder_ != null) {
            outputArtifactsFromActionCacheBuilder_.dispose();
            outputArtifactsFromActionCacheBuilder_ = null;
          }
          topLevelArtifacts_ = null;
          if (topLevelArtifactsBuilder_ != null) {
            topLevelArtifactsBuilder_.dispose();
            topLevelArtifactsBuilder_ = null;
          }
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.sourceArtifactsRead_ = sourceArtifactsReadBuilder_ == null
                ? sourceArtifactsRead_
                : sourceArtifactsReadBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.outputArtifactsSeen_ = outputArtifactsSeenBuilder_ == null
                ? outputArtifactsSeen_
                : outputArtifactsSeenBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.outputArtifactsFromActionCache_ = outputArtifactsFromActionCacheBuilder_ == null
                ? outputArtifactsFromActionCache_
                : outputArtifactsFromActionCacheBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000008) != 0)) {
            result.topLevelArtifacts_ = topLevelArtifactsBuilder_ == null
                ? topLevelArtifacts_
                : topLevelArtifactsBuilder_.build();
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.getDefaultInstance()) return this;
          if (other.hasSourceArtifactsRead()) {
            mergeSourceArtifactsRead(other.getSourceArtifactsRead());
          }
          if (other.hasOutputArtifactsSeen()) {
            mergeOutputArtifactsSeen(other.getOutputArtifactsSeen());
          }
          if (other.hasOutputArtifactsFromActionCache()) {
            mergeOutputArtifactsFromActionCache(other.getOutputArtifactsFromActionCache());
          }
          if (other.hasTopLevelArtifacts()) {
            mergeTopLevelArtifacts(other.getTopLevelArtifacts());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 18: {
                  input.readMessage(
                      getSourceArtifactsReadFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000001;
                  break;
                } // case 18
                case 26: {
                  input.readMessage(
                      getOutputArtifactsSeenFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000002;
                  break;
                } // case 26
                case 34: {
                  input.readMessage(
                      getOutputArtifactsFromActionCacheFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000004;
                  break;
                } // case 34
                case 42: {
                  input.readMessage(
                      getTopLevelArtifactsFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000008;
                  break;
                } // case 42
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric sourceArtifactsRead_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder> sourceArtifactsReadBuilder_;
        /**
         * <pre>
         * Measures all source files newly read this build. Does not include
         * unchanged sources on incremental builds.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric source_artifacts_read = 2;</code>
         * @return Whether the sourceArtifactsRead field is set.
         */
        public boolean hasSourceArtifactsRead() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         * Measures all source files newly read this build. Does not include
         * unchanged sources on incremental builds.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric source_artifacts_read = 2;</code>
         * @return The sourceArtifactsRead.
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric getSourceArtifactsRead() {
          if (sourceArtifactsReadBuilder_ == null) {
            return sourceArtifactsRead_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance() : sourceArtifactsRead_;
          } else {
            return sourceArtifactsReadBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         * Measures all source files newly read this build. Does not include
         * unchanged sources on incremental builds.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric source_artifacts_read = 2;</code>
         */
        public Builder setSourceArtifactsRead(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric value) {
          if (sourceArtifactsReadBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            sourceArtifactsRead_ = value;
          } else {
            sourceArtifactsReadBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Measures all source files newly read this build. Does not include
         * unchanged sources on incremental builds.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric source_artifacts_read = 2;</code>
         */
        public Builder setSourceArtifactsRead(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder builderForValue) {
          if (sourceArtifactsReadBuilder_ == null) {
            sourceArtifactsRead_ = builderForValue.build();
          } else {
            sourceArtifactsReadBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Measures all source files newly read this build. Does not include
         * unchanged sources on incremental builds.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric source_artifacts_read = 2;</code>
         */
        public Builder mergeSourceArtifactsRead(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric value) {
          if (sourceArtifactsReadBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
              sourceArtifactsRead_ != null &&
              sourceArtifactsRead_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance()) {
              getSourceArtifactsReadBuilder().mergeFrom(value);
            } else {
              sourceArtifactsRead_ = value;
            }
          } else {
            sourceArtifactsReadBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Measures all source files newly read this build. Does not include
         * unchanged sources on incremental builds.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric source_artifacts_read = 2;</code>
         */
        public Builder clearSourceArtifactsRead() {
          bitField0_ = (bitField0_ & ~0x00000001);
          sourceArtifactsRead_ = null;
          if (sourceArtifactsReadBuilder_ != null) {
            sourceArtifactsReadBuilder_.dispose();
            sourceArtifactsReadBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Measures all source files newly read this build. Does not include
         * unchanged sources on incremental builds.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric source_artifacts_read = 2;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder getSourceArtifactsReadBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getSourceArtifactsReadFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Measures all source files newly read this build. Does not include
         * unchanged sources on incremental builds.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric source_artifacts_read = 2;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder getSourceArtifactsReadOrBuilder() {
          if (sourceArtifactsReadBuilder_ != null) {
            return sourceArtifactsReadBuilder_.getMessageOrBuilder();
          } else {
            return sourceArtifactsRead_ == null ?
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance() : sourceArtifactsRead_;
          }
        }
        /**
         * <pre>
         * Measures all source files newly read this build. Does not include
         * unchanged sources on incremental builds.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric source_artifacts_read = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder> 
            getSourceArtifactsReadFieldBuilder() {
          if (sourceArtifactsReadBuilder_ == null) {
            sourceArtifactsReadBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder>(
                    getSourceArtifactsRead(),
                    getParentForChildren(),
                    isClean());
            sourceArtifactsRead_ = null;
          }
          return sourceArtifactsReadBuilder_;
        }

        private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric outputArtifactsSeen_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder> outputArtifactsSeenBuilder_;
        /**
         * <pre>
         * Measures all output artifacts from executed actions. This includes
         * actions that were cached locally (via the action cache) or remotely (via
         * a remote cache or executor), but does *not* include outputs of actions
         * that were cached internally in Skyframe.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_seen = 3;</code>
         * @return Whether the outputArtifactsSeen field is set.
         */
        public boolean hasOutputArtifactsSeen() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         * Measures all output artifacts from executed actions. This includes
         * actions that were cached locally (via the action cache) or remotely (via
         * a remote cache or executor), but does *not* include outputs of actions
         * that were cached internally in Skyframe.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_seen = 3;</code>
         * @return The outputArtifactsSeen.
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric getOutputArtifactsSeen() {
          if (outputArtifactsSeenBuilder_ == null) {
            return outputArtifactsSeen_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance() : outputArtifactsSeen_;
          } else {
            return outputArtifactsSeenBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         * Measures all output artifacts from executed actions. This includes
         * actions that were cached locally (via the action cache) or remotely (via
         * a remote cache or executor), but does *not* include outputs of actions
         * that were cached internally in Skyframe.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_seen = 3;</code>
         */
        public Builder setOutputArtifactsSeen(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric value) {
          if (outputArtifactsSeenBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            outputArtifactsSeen_ = value;
          } else {
            outputArtifactsSeenBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Measures all output artifacts from executed actions. This includes
         * actions that were cached locally (via the action cache) or remotely (via
         * a remote cache or executor), but does *not* include outputs of actions
         * that were cached internally in Skyframe.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_seen = 3;</code>
         */
        public Builder setOutputArtifactsSeen(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder builderForValue) {
          if (outputArtifactsSeenBuilder_ == null) {
            outputArtifactsSeen_ = builderForValue.build();
          } else {
            outputArtifactsSeenBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Measures all output artifacts from executed actions. This includes
         * actions that were cached locally (via the action cache) or remotely (via
         * a remote cache or executor), but does *not* include outputs of actions
         * that were cached internally in Skyframe.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_seen = 3;</code>
         */
        public Builder mergeOutputArtifactsSeen(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric value) {
          if (outputArtifactsSeenBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0) &&
              outputArtifactsSeen_ != null &&
              outputArtifactsSeen_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance()) {
              getOutputArtifactsSeenBuilder().mergeFrom(value);
            } else {
              outputArtifactsSeen_ = value;
            }
          } else {
            outputArtifactsSeenBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Measures all output artifacts from executed actions. This includes
         * actions that were cached locally (via the action cache) or remotely (via
         * a remote cache or executor), but does *not* include outputs of actions
         * that were cached internally in Skyframe.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_seen = 3;</code>
         */
        public Builder clearOutputArtifactsSeen() {
          bitField0_ = (bitField0_ & ~0x00000002);
          outputArtifactsSeen_ = null;
          if (outputArtifactsSeenBuilder_ != null) {
            outputArtifactsSeenBuilder_.dispose();
            outputArtifactsSeenBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Measures all output artifacts from executed actions. This includes
         * actions that were cached locally (via the action cache) or remotely (via
         * a remote cache or executor), but does *not* include outputs of actions
         * that were cached internally in Skyframe.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_seen = 3;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder getOutputArtifactsSeenBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getOutputArtifactsSeenFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Measures all output artifacts from executed actions. This includes
         * actions that were cached locally (via the action cache) or remotely (via
         * a remote cache or executor), but does *not* include outputs of actions
         * that were cached internally in Skyframe.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_seen = 3;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder getOutputArtifactsSeenOrBuilder() {
          if (outputArtifactsSeenBuilder_ != null) {
            return outputArtifactsSeenBuilder_.getMessageOrBuilder();
          } else {
            return outputArtifactsSeen_ == null ?
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance() : outputArtifactsSeen_;
          }
        }
        /**
         * <pre>
         * Measures all output artifacts from executed actions. This includes
         * actions that were cached locally (via the action cache) or remotely (via
         * a remote cache or executor), but does *not* include outputs of actions
         * that were cached internally in Skyframe.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_seen = 3;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder> 
            getOutputArtifactsSeenFieldBuilder() {
          if (outputArtifactsSeenBuilder_ == null) {
            outputArtifactsSeenBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder>(
                    getOutputArtifactsSeen(),
                    getParentForChildren(),
                    isClean());
            outputArtifactsSeen_ = null;
          }
          return outputArtifactsSeenBuilder_;
        }

        private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric outputArtifactsFromActionCache_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder> outputArtifactsFromActionCacheBuilder_;
        /**
         * <pre>
         * Measures all output artifacts from actions that were cached locally
         * via the action cache. These artifacts were already present on disk at the
         * start of the build. Does not include Skyframe-cached actions' outputs.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_from_action_cache = 4;</code>
         * @return Whether the outputArtifactsFromActionCache field is set.
         */
        public boolean hasOutputArtifactsFromActionCache() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <pre>
         * Measures all output artifacts from actions that were cached locally
         * via the action cache. These artifacts were already present on disk at the
         * start of the build. Does not include Skyframe-cached actions' outputs.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_from_action_cache = 4;</code>
         * @return The outputArtifactsFromActionCache.
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric getOutputArtifactsFromActionCache() {
          if (outputArtifactsFromActionCacheBuilder_ == null) {
            return outputArtifactsFromActionCache_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance() : outputArtifactsFromActionCache_;
          } else {
            return outputArtifactsFromActionCacheBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         * Measures all output artifacts from actions that were cached locally
         * via the action cache. These artifacts were already present on disk at the
         * start of the build. Does not include Skyframe-cached actions' outputs.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_from_action_cache = 4;</code>
         */
        public Builder setOutputArtifactsFromActionCache(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric value) {
          if (outputArtifactsFromActionCacheBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            outputArtifactsFromActionCache_ = value;
          } else {
            outputArtifactsFromActionCacheBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Measures all output artifacts from actions that were cached locally
         * via the action cache. These artifacts were already present on disk at the
         * start of the build. Does not include Skyframe-cached actions' outputs.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_from_action_cache = 4;</code>
         */
        public Builder setOutputArtifactsFromActionCache(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder builderForValue) {
          if (outputArtifactsFromActionCacheBuilder_ == null) {
            outputArtifactsFromActionCache_ = builderForValue.build();
          } else {
            outputArtifactsFromActionCacheBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Measures all output artifacts from actions that were cached locally
         * via the action cache. These artifacts were already present on disk at the
         * start of the build. Does not include Skyframe-cached actions' outputs.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_from_action_cache = 4;</code>
         */
        public Builder mergeOutputArtifactsFromActionCache(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric value) {
          if (outputArtifactsFromActionCacheBuilder_ == null) {
            if (((bitField0_ & 0x00000004) != 0) &&
              outputArtifactsFromActionCache_ != null &&
              outputArtifactsFromActionCache_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance()) {
              getOutputArtifactsFromActionCacheBuilder().mergeFrom(value);
            } else {
              outputArtifactsFromActionCache_ = value;
            }
          } else {
            outputArtifactsFromActionCacheBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Measures all output artifacts from actions that were cached locally
         * via the action cache. These artifacts were already present on disk at the
         * start of the build. Does not include Skyframe-cached actions' outputs.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_from_action_cache = 4;</code>
         */
        public Builder clearOutputArtifactsFromActionCache() {
          bitField0_ = (bitField0_ & ~0x00000004);
          outputArtifactsFromActionCache_ = null;
          if (outputArtifactsFromActionCacheBuilder_ != null) {
            outputArtifactsFromActionCacheBuilder_.dispose();
            outputArtifactsFromActionCacheBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Measures all output artifacts from actions that were cached locally
         * via the action cache. These artifacts were already present on disk at the
         * start of the build. Does not include Skyframe-cached actions' outputs.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_from_action_cache = 4;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder getOutputArtifactsFromActionCacheBuilder() {
          bitField0_ |= 0x00000004;
          onChanged();
          return getOutputArtifactsFromActionCacheFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Measures all output artifacts from actions that were cached locally
         * via the action cache. These artifacts were already present on disk at the
         * start of the build. Does not include Skyframe-cached actions' outputs.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_from_action_cache = 4;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder getOutputArtifactsFromActionCacheOrBuilder() {
          if (outputArtifactsFromActionCacheBuilder_ != null) {
            return outputArtifactsFromActionCacheBuilder_.getMessageOrBuilder();
          } else {
            return outputArtifactsFromActionCache_ == null ?
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance() : outputArtifactsFromActionCache_;
          }
        }
        /**
         * <pre>
         * Measures all output artifacts from actions that were cached locally
         * via the action cache. These artifacts were already present on disk at the
         * start of the build. Does not include Skyframe-cached actions' outputs.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric output_artifacts_from_action_cache = 4;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder> 
            getOutputArtifactsFromActionCacheFieldBuilder() {
          if (outputArtifactsFromActionCacheBuilder_ == null) {
            outputArtifactsFromActionCacheBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder>(
                    getOutputArtifactsFromActionCache(),
                    getParentForChildren(),
                    isClean());
            outputArtifactsFromActionCache_ = null;
          }
          return outputArtifactsFromActionCacheBuilder_;
        }

        private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric topLevelArtifacts_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder> topLevelArtifactsBuilder_;
        /**
         * <pre>
         * Measures all artifacts that belong to a top-level output group. Does not
         * deduplicate, so if there are two top-level targets in this build that
         * share an artifact, it will be counted twice.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric top_level_artifacts = 5;</code>
         * @return Whether the topLevelArtifacts field is set.
         */
        public boolean hasTopLevelArtifacts() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <pre>
         * Measures all artifacts that belong to a top-level output group. Does not
         * deduplicate, so if there are two top-level targets in this build that
         * share an artifact, it will be counted twice.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric top_level_artifacts = 5;</code>
         * @return The topLevelArtifacts.
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric getTopLevelArtifacts() {
          if (topLevelArtifactsBuilder_ == null) {
            return topLevelArtifacts_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance() : topLevelArtifacts_;
          } else {
            return topLevelArtifactsBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         * Measures all artifacts that belong to a top-level output group. Does not
         * deduplicate, so if there are two top-level targets in this build that
         * share an artifact, it will be counted twice.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric top_level_artifacts = 5;</code>
         */
        public Builder setTopLevelArtifacts(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric value) {
          if (topLevelArtifactsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            topLevelArtifacts_ = value;
          } else {
            topLevelArtifactsBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Measures all artifacts that belong to a top-level output group. Does not
         * deduplicate, so if there are two top-level targets in this build that
         * share an artifact, it will be counted twice.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric top_level_artifacts = 5;</code>
         */
        public Builder setTopLevelArtifacts(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder builderForValue) {
          if (topLevelArtifactsBuilder_ == null) {
            topLevelArtifacts_ = builderForValue.build();
          } else {
            topLevelArtifactsBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Measures all artifacts that belong to a top-level output group. Does not
         * deduplicate, so if there are two top-level targets in this build that
         * share an artifact, it will be counted twice.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric top_level_artifacts = 5;</code>
         */
        public Builder mergeTopLevelArtifacts(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric value) {
          if (topLevelArtifactsBuilder_ == null) {
            if (((bitField0_ & 0x00000008) != 0) &&
              topLevelArtifacts_ != null &&
              topLevelArtifacts_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance()) {
              getTopLevelArtifactsBuilder().mergeFrom(value);
            } else {
              topLevelArtifacts_ = value;
            }
          } else {
            topLevelArtifactsBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Measures all artifacts that belong to a top-level output group. Does not
         * deduplicate, so if there are two top-level targets in this build that
         * share an artifact, it will be counted twice.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric top_level_artifacts = 5;</code>
         */
        public Builder clearTopLevelArtifacts() {
          bitField0_ = (bitField0_ & ~0x00000008);
          topLevelArtifacts_ = null;
          if (topLevelArtifactsBuilder_ != null) {
            topLevelArtifactsBuilder_.dispose();
            topLevelArtifactsBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Measures all artifacts that belong to a top-level output group. Does not
         * deduplicate, so if there are two top-level targets in this build that
         * share an artifact, it will be counted twice.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric top_level_artifacts = 5;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder getTopLevelArtifactsBuilder() {
          bitField0_ |= 0x00000008;
          onChanged();
          return getTopLevelArtifactsFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Measures all artifacts that belong to a top-level output group. Does not
         * deduplicate, so if there are two top-level targets in this build that
         * share an artifact, it will be counted twice.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric top_level_artifacts = 5;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder getTopLevelArtifactsOrBuilder() {
          if (topLevelArtifactsBuilder_ != null) {
            return topLevelArtifactsBuilder_.getMessageOrBuilder();
          } else {
            return topLevelArtifacts_ == null ?
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.getDefaultInstance() : topLevelArtifacts_;
          }
        }
        /**
         * <pre>
         * Measures all artifacts that belong to a top-level output group. Does not
         * deduplicate, so if there are two top-level targets in this build that
         * share an artifact, it will be counted twice.
         * </pre>
         *
         * <code>.build_event_stream.BuildMetrics.ArtifactMetrics.FilesMetric top_level_artifacts = 5;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder> 
            getTopLevelArtifactsFieldBuilder() {
          if (topLevelArtifactsBuilder_ == null) {
            topLevelArtifactsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetric.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.FilesMetricOrBuilder>(
                    getTopLevelArtifacts(),
                    getParentForChildren(),
                    isClean());
            topLevelArtifacts_ = null;
          }
          return topLevelArtifactsBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildMetrics.ArtifactMetrics)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildMetrics.ArtifactMetrics)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface BuildGraphMetricsOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildMetrics.BuildGraphMetrics)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * How many configured targets/aspects were in this build, including any
       * that were analyzed on a prior build and are still valid. May not be
       * populated if analysis phase was fully cached. Note: for historical
       * reasons this includes input/output files and other configured targets
       * that do not actually have associated actions.
       * </pre>
       *
       * <code>int32 action_lookup_value_count = 1;</code>
       * @return The actionLookupValueCount.
       */
      int getActionLookupValueCount();

      /**
       * <pre>
       * How many configured targets alone were in this build: always at most
       * action_lookup_value_count. Useful mainly for historical comparisons to
       * TargetMetrics.targets_configured, which used to not count aspects. This
       * also includes configured targets that do not have associated actions.
       * </pre>
       *
       * <code>int32 action_lookup_value_count_not_including_aspects = 5;</code>
       * @return The actionLookupValueCountNotIncludingAspects.
       */
      int getActionLookupValueCountNotIncludingAspects();

      /**
       * <pre>
       * How many actions belonged to the configured targets/aspects above. It may
       * not be necessary to execute all of these actions to build the requested
       * targets. May not be populated if analysis phase was fully cached.
       * </pre>
       *
       * <code>int32 action_count = 2;</code>
       * @return The actionCount.
       */
      int getActionCount();

      /**
       * <pre>
       * How many actions belonged to configured targets: always at most
       * action_count. Useful mainly for historical comparisons to
       * ActionMetrics.actions_created, which used to not count aspects' actions.
       * </pre>
       *
       * <code>int32 action_count_not_including_aspects = 6;</code>
       * @return The actionCountNotIncludingAspects.
       */
      int getActionCountNotIncludingAspects();

      /**
       * <pre>
       * How many "input file" configured targets there were: one per source file.
       * Should agree with artifact_metrics.source_artifacts_read.count above,
       * </pre>
       *
       * <code>int32 input_file_configured_target_count = 7;</code>
       * @return The inputFileConfiguredTargetCount.
       */
      int getInputFileConfiguredTargetCount();

      /**
       * <pre>
       * How many "output file" configured targets there were: output files that
       * are targets (not implicit outputs).
       * </pre>
       *
       * <code>int32 output_file_configured_target_count = 8;</code>
       * @return The outputFileConfiguredTargetCount.
       */
      int getOutputFileConfiguredTargetCount();

      /**
       * <pre>
       * How many "other" configured targets there were (like alias,
       * package_group, and other non-rule non-file configured targets).
       * </pre>
       *
       * <code>int32 other_configured_target_count = 9;</code>
       * @return The otherConfiguredTargetCount.
       */
      int getOtherConfiguredTargetCount();

      /**
       * <pre>
       * How many artifacts are outputs of the above actions. May not be populated
       * if analysis phase was fully cached.
       * </pre>
       *
       * <code>int32 output_artifact_count = 3;</code>
       * @return The outputArtifactCount.
       */
      int getOutputArtifactCount();

      /**
       * <pre>
       * How many Skyframe nodes there are in memory at the end of the build. This
       * may underestimate the number of nodes when running with memory-saving
       * settings or with Skybuild, and may overestimate if there are nodes from
       * prior evaluations still in the cache.
       * </pre>
       *
       * <code>int32 post_invocation_skyframe_node_count = 4;</code>
       * @return The postInvocationSkyframeNodeCount.
       */
      int getPostInvocationSkyframeNodeCount();
    }
    /**
     * <pre>
     * Information about the size and shape of the build graph. Some fields may
     * not be populated if Bazel was able to skip steps due to caching.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildMetrics.BuildGraphMetrics}
     */
    public static final class BuildGraphMetrics extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildMetrics.BuildGraphMetrics)
        BuildGraphMetricsOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use BuildGraphMetrics.newBuilder() to construct.
      private BuildGraphMetrics(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private BuildGraphMetrics() {
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_BuildGraphMetrics_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_BuildGraphMetrics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics.Builder.class);
      }

      public static final int ACTION_LOOKUP_VALUE_COUNT_FIELD_NUMBER = 1;
      private int actionLookupValueCount_ = 0;
      /**
       * <pre>
       * How many configured targets/aspects were in this build, including any
       * that were analyzed on a prior build and are still valid. May not be
       * populated if analysis phase was fully cached. Note: for historical
       * reasons this includes input/output files and other configured targets
       * that do not actually have associated actions.
       * </pre>
       *
       * <code>int32 action_lookup_value_count = 1;</code>
       * @return The actionLookupValueCount.
       */
      @java.lang.Override
      public int getActionLookupValueCount() {
        return actionLookupValueCount_;
      }

      public static final int ACTION_LOOKUP_VALUE_COUNT_NOT_INCLUDING_ASPECTS_FIELD_NUMBER = 5;
      private int actionLookupValueCountNotIncludingAspects_ = 0;
      /**
       * <pre>
       * How many configured targets alone were in this build: always at most
       * action_lookup_value_count. Useful mainly for historical comparisons to
       * TargetMetrics.targets_configured, which used to not count aspects. This
       * also includes configured targets that do not have associated actions.
       * </pre>
       *
       * <code>int32 action_lookup_value_count_not_including_aspects = 5;</code>
       * @return The actionLookupValueCountNotIncludingAspects.
       */
      @java.lang.Override
      public int getActionLookupValueCountNotIncludingAspects() {
        return actionLookupValueCountNotIncludingAspects_;
      }

      public static final int ACTION_COUNT_FIELD_NUMBER = 2;
      private int actionCount_ = 0;
      /**
       * <pre>
       * How many actions belonged to the configured targets/aspects above. It may
       * not be necessary to execute all of these actions to build the requested
       * targets. May not be populated if analysis phase was fully cached.
       * </pre>
       *
       * <code>int32 action_count = 2;</code>
       * @return The actionCount.
       */
      @java.lang.Override
      public int getActionCount() {
        return actionCount_;
      }

      public static final int ACTION_COUNT_NOT_INCLUDING_ASPECTS_FIELD_NUMBER = 6;
      private int actionCountNotIncludingAspects_ = 0;
      /**
       * <pre>
       * How many actions belonged to configured targets: always at most
       * action_count. Useful mainly for historical comparisons to
       * ActionMetrics.actions_created, which used to not count aspects' actions.
       * </pre>
       *
       * <code>int32 action_count_not_including_aspects = 6;</code>
       * @return The actionCountNotIncludingAspects.
       */
      @java.lang.Override
      public int getActionCountNotIncludingAspects() {
        return actionCountNotIncludingAspects_;
      }

      public static final int INPUT_FILE_CONFIGURED_TARGET_COUNT_FIELD_NUMBER = 7;
      private int inputFileConfiguredTargetCount_ = 0;
      /**
       * <pre>
       * How many "input file" configured targets there were: one per source file.
       * Should agree with artifact_metrics.source_artifacts_read.count above,
       * </pre>
       *
       * <code>int32 input_file_configured_target_count = 7;</code>
       * @return The inputFileConfiguredTargetCount.
       */
      @java.lang.Override
      public int getInputFileConfiguredTargetCount() {
        return inputFileConfiguredTargetCount_;
      }

      public static final int OUTPUT_FILE_CONFIGURED_TARGET_COUNT_FIELD_NUMBER = 8;
      private int outputFileConfiguredTargetCount_ = 0;
      /**
       * <pre>
       * How many "output file" configured targets there were: output files that
       * are targets (not implicit outputs).
       * </pre>
       *
       * <code>int32 output_file_configured_target_count = 8;</code>
       * @return The outputFileConfiguredTargetCount.
       */
      @java.lang.Override
      public int getOutputFileConfiguredTargetCount() {
        return outputFileConfiguredTargetCount_;
      }

      public static final int OTHER_CONFIGURED_TARGET_COUNT_FIELD_NUMBER = 9;
      private int otherConfiguredTargetCount_ = 0;
      /**
       * <pre>
       * How many "other" configured targets there were (like alias,
       * package_group, and other non-rule non-file configured targets).
       * </pre>
       *
       * <code>int32 other_configured_target_count = 9;</code>
       * @return The otherConfiguredTargetCount.
       */
      @java.lang.Override
      public int getOtherConfiguredTargetCount() {
        return otherConfiguredTargetCount_;
      }

      public static final int OUTPUT_ARTIFACT_COUNT_FIELD_NUMBER = 3;
      private int outputArtifactCount_ = 0;
      /**
       * <pre>
       * How many artifacts are outputs of the above actions. May not be populated
       * if analysis phase was fully cached.
       * </pre>
       *
       * <code>int32 output_artifact_count = 3;</code>
       * @return The outputArtifactCount.
       */
      @java.lang.Override
      public int getOutputArtifactCount() {
        return outputArtifactCount_;
      }

      public static final int POST_INVOCATION_SKYFRAME_NODE_COUNT_FIELD_NUMBER = 4;
      private int postInvocationSkyframeNodeCount_ = 0;
      /**
       * <pre>
       * How many Skyframe nodes there are in memory at the end of the build. This
       * may underestimate the number of nodes when running with memory-saving
       * settings or with Skybuild, and may overestimate if there are nodes from
       * prior evaluations still in the cache.
       * </pre>
       *
       * <code>int32 post_invocation_skyframe_node_count = 4;</code>
       * @return The postInvocationSkyframeNodeCount.
       */
      @java.lang.Override
      public int getPostInvocationSkyframeNodeCount() {
        return postInvocationSkyframeNodeCount_;
      }

      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 (actionLookupValueCount_ != 0) {
          output.writeInt32(1, actionLookupValueCount_);
        }
        if (actionCount_ != 0) {
          output.writeInt32(2, actionCount_);
        }
        if (outputArtifactCount_ != 0) {
          output.writeInt32(3, outputArtifactCount_);
        }
        if (postInvocationSkyframeNodeCount_ != 0) {
          output.writeInt32(4, postInvocationSkyframeNodeCount_);
        }
        if (actionLookupValueCountNotIncludingAspects_ != 0) {
          output.writeInt32(5, actionLookupValueCountNotIncludingAspects_);
        }
        if (actionCountNotIncludingAspects_ != 0) {
          output.writeInt32(6, actionCountNotIncludingAspects_);
        }
        if (inputFileConfiguredTargetCount_ != 0) {
          output.writeInt32(7, inputFileConfiguredTargetCount_);
        }
        if (outputFileConfiguredTargetCount_ != 0) {
          output.writeInt32(8, outputFileConfiguredTargetCount_);
        }
        if (otherConfiguredTargetCount_ != 0) {
          output.writeInt32(9, otherConfiguredTargetCount_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (actionLookupValueCount_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, actionLookupValueCount_);
        }
        if (actionCount_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, actionCount_);
        }
        if (outputArtifactCount_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(3, outputArtifactCount_);
        }
        if (postInvocationSkyframeNodeCount_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(4, postInvocationSkyframeNodeCount_);
        }
        if (actionLookupValueCountNotIncludingAspects_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(5, actionLookupValueCountNotIncludingAspects_);
        }
        if (actionCountNotIncludingAspects_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(6, actionCountNotIncludingAspects_);
        }
        if (inputFileConfiguredTargetCount_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(7, inputFileConfiguredTargetCount_);
        }
        if (outputFileConfiguredTargetCount_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(8, outputFileConfiguredTargetCount_);
        }
        if (otherConfiguredTargetCount_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(9, otherConfiguredTargetCount_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (getActionLookupValueCount()
            != other.getActionLookupValueCount()) return false;
        if (getActionLookupValueCountNotIncludingAspects()
            != other.getActionLookupValueCountNotIncludingAspects()) return false;
        if (getActionCount()
            != other.getActionCount()) return false;
        if (getActionCountNotIncludingAspects()
            != other.getActionCountNotIncludingAspects()) return false;
        if (getInputFileConfiguredTargetCount()
            != other.getInputFileConfiguredTargetCount()) return false;
        if (getOutputFileConfiguredTargetCount()
            != other.getOutputFileConfiguredTargetCount()) return false;
        if (getOtherConfiguredTargetCount()
            != other.getOtherConfiguredTargetCount()) return false;
        if (getOutputArtifactCount()
            != other.getOutputArtifactCount()) return false;
        if (getPostInvocationSkyframeNodeCount()
            != other.getPostInvocationSkyframeNodeCount()) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + ACTION_LOOKUP_VALUE_COUNT_FIELD_NUMBER;
        hash = (53 * hash) + getActionLookupValueCount();
        hash = (37 * hash) + ACTION_LOOKUP_VALUE_COUNT_NOT_INCLUDING_ASPECTS_FIELD_NUMBER;
        hash = (53 * hash) + getActionLookupValueCountNotIncludingAspects();
        hash = (37 * hash) + ACTION_COUNT_FIELD_NUMBER;
        hash = (53 * hash) + getActionCount();
        hash = (37 * hash) + ACTION_COUNT_NOT_INCLUDING_ASPECTS_FIELD_NUMBER;
        hash = (53 * hash) + getActionCountNotIncludingAspects();
        hash = (37 * hash) + INPUT_FILE_CONFIGURED_TARGET_COUNT_FIELD_NUMBER;
        hash = (53 * hash) + getInputFileConfiguredTargetCount();
        hash = (37 * hash) + OUTPUT_FILE_CONFIGURED_TARGET_COUNT_FIELD_NUMBER;
        hash = (53 * hash) + getOutputFileConfiguredTargetCount();
        hash = (37 * hash) + OTHER_CONFIGURED_TARGET_COUNT_FIELD_NUMBER;
        hash = (53 * hash) + getOtherConfiguredTargetCount();
        hash = (37 * hash) + OUTPUT_ARTIFACT_COUNT_FIELD_NUMBER;
        hash = (53 * hash) + getOutputArtifactCount();
        hash = (37 * hash) + POST_INVOCATION_SKYFRAME_NODE_COUNT_FIELD_NUMBER;
        hash = (53 * hash) + getPostInvocationSkyframeNodeCount();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics 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>
       * Information about the size and shape of the build graph. Some fields may
       * not be populated if Bazel was able to skip steps due to caching.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildMetrics.BuildGraphMetrics}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildMetrics.BuildGraphMetrics)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetricsOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_BuildGraphMetrics_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_BuildGraphMetrics_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          actionLookupValueCount_ = 0;
          actionLookupValueCountNotIncludingAspects_ = 0;
          actionCount_ = 0;
          actionCountNotIncludingAspects_ = 0;
          inputFileConfiguredTargetCount_ = 0;
          outputFileConfiguredTargetCount_ = 0;
          otherConfiguredTargetCount_ = 0;
          outputArtifactCount_ = 0;
          postInvocationSkyframeNodeCount_ = 0;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_BuildGraphMetrics_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.actionLookupValueCount_ = actionLookupValueCount_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.actionLookupValueCountNotIncludingAspects_ = actionLookupValueCountNotIncludingAspects_;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.actionCount_ = actionCount_;
          }
          if (((from_bitField0_ & 0x00000008) != 0)) {
            result.actionCountNotIncludingAspects_ = actionCountNotIncludingAspects_;
          }
          if (((from_bitField0_ & 0x00000010) != 0)) {
            result.inputFileConfiguredTargetCount_ = inputFileConfiguredTargetCount_;
          }
          if (((from_bitField0_ & 0x00000020) != 0)) {
            result.outputFileConfiguredTargetCount_ = outputFileConfiguredTargetCount_;
          }
          if (((from_bitField0_ & 0x00000040) != 0)) {
            result.otherConfiguredTargetCount_ = otherConfiguredTargetCount_;
          }
          if (((from_bitField0_ & 0x00000080) != 0)) {
            result.outputArtifactCount_ = outputArtifactCount_;
          }
          if (((from_bitField0_ & 0x00000100) != 0)) {
            result.postInvocationSkyframeNodeCount_ = postInvocationSkyframeNodeCount_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics.getDefaultInstance()) return this;
          if (other.getActionLookupValueCount() != 0) {
            setActionLookupValueCount(other.getActionLookupValueCount());
          }
          if (other.getActionLookupValueCountNotIncludingAspects() != 0) {
            setActionLookupValueCountNotIncludingAspects(other.getActionLookupValueCountNotIncludingAspects());
          }
          if (other.getActionCount() != 0) {
            setActionCount(other.getActionCount());
          }
          if (other.getActionCountNotIncludingAspects() != 0) {
            setActionCountNotIncludingAspects(other.getActionCountNotIncludingAspects());
          }
          if (other.getInputFileConfiguredTargetCount() != 0) {
            setInputFileConfiguredTargetCount(other.getInputFileConfiguredTargetCount());
          }
          if (other.getOutputFileConfiguredTargetCount() != 0) {
            setOutputFileConfiguredTargetCount(other.getOutputFileConfiguredTargetCount());
          }
          if (other.getOtherConfiguredTargetCount() != 0) {
            setOtherConfiguredTargetCount(other.getOtherConfiguredTargetCount());
          }
          if (other.getOutputArtifactCount() != 0) {
            setOutputArtifactCount(other.getOutputArtifactCount());
          }
          if (other.getPostInvocationSkyframeNodeCount() != 0) {
            setPostInvocationSkyframeNodeCount(other.getPostInvocationSkyframeNodeCount());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  actionLookupValueCount_ = input.readInt32();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 16: {
                  actionCount_ = input.readInt32();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 16
                case 24: {
                  outputArtifactCount_ = input.readInt32();
                  bitField0_ |= 0x00000080;
                  break;
                } // case 24
                case 32: {
                  postInvocationSkyframeNodeCount_ = input.readInt32();
                  bitField0_ |= 0x00000100;
                  break;
                } // case 32
                case 40: {
                  actionLookupValueCountNotIncludingAspects_ = input.readInt32();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 40
                case 48: {
                  actionCountNotIncludingAspects_ = input.readInt32();
                  bitField0_ |= 0x00000008;
                  break;
                } // case 48
                case 56: {
                  inputFileConfiguredTargetCount_ = input.readInt32();
                  bitField0_ |= 0x00000010;
                  break;
                } // case 56
                case 64: {
                  outputFileConfiguredTargetCount_ = input.readInt32();
                  bitField0_ |= 0x00000020;
                  break;
                } // case 64
                case 72: {
                  otherConfiguredTargetCount_ = input.readInt32();
                  bitField0_ |= 0x00000040;
                  break;
                } // case 72
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private int actionLookupValueCount_ ;
        /**
         * <pre>
         * How many configured targets/aspects were in this build, including any
         * that were analyzed on a prior build and are still valid. May not be
         * populated if analysis phase was fully cached. Note: for historical
         * reasons this includes input/output files and other configured targets
         * that do not actually have associated actions.
         * </pre>
         *
         * <code>int32 action_lookup_value_count = 1;</code>
         * @return The actionLookupValueCount.
         */
        @java.lang.Override
        public int getActionLookupValueCount() {
          return actionLookupValueCount_;
        }
        /**
         * <pre>
         * How many configured targets/aspects were in this build, including any
         * that were analyzed on a prior build and are still valid. May not be
         * populated if analysis phase was fully cached. Note: for historical
         * reasons this includes input/output files and other configured targets
         * that do not actually have associated actions.
         * </pre>
         *
         * <code>int32 action_lookup_value_count = 1;</code>
         * @param value The actionLookupValueCount to set.
         * @return This builder for chaining.
         */
        public Builder setActionLookupValueCount(int value) {
          
          actionLookupValueCount_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * How many configured targets/aspects were in this build, including any
         * that were analyzed on a prior build and are still valid. May not be
         * populated if analysis phase was fully cached. Note: for historical
         * reasons this includes input/output files and other configured targets
         * that do not actually have associated actions.
         * </pre>
         *
         * <code>int32 action_lookup_value_count = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearActionLookupValueCount() {
          bitField0_ = (bitField0_ & ~0x00000001);
          actionLookupValueCount_ = 0;
          onChanged();
          return this;
        }

        private int actionLookupValueCountNotIncludingAspects_ ;
        /**
         * <pre>
         * How many configured targets alone were in this build: always at most
         * action_lookup_value_count. Useful mainly for historical comparisons to
         * TargetMetrics.targets_configured, which used to not count aspects. This
         * also includes configured targets that do not have associated actions.
         * </pre>
         *
         * <code>int32 action_lookup_value_count_not_including_aspects = 5;</code>
         * @return The actionLookupValueCountNotIncludingAspects.
         */
        @java.lang.Override
        public int getActionLookupValueCountNotIncludingAspects() {
          return actionLookupValueCountNotIncludingAspects_;
        }
        /**
         * <pre>
         * How many configured targets alone were in this build: always at most
         * action_lookup_value_count. Useful mainly for historical comparisons to
         * TargetMetrics.targets_configured, which used to not count aspects. This
         * also includes configured targets that do not have associated actions.
         * </pre>
         *
         * <code>int32 action_lookup_value_count_not_including_aspects = 5;</code>
         * @param value The actionLookupValueCountNotIncludingAspects to set.
         * @return This builder for chaining.
         */
        public Builder setActionLookupValueCountNotIncludingAspects(int value) {
          
          actionLookupValueCountNotIncludingAspects_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * How many configured targets alone were in this build: always at most
         * action_lookup_value_count. Useful mainly for historical comparisons to
         * TargetMetrics.targets_configured, which used to not count aspects. This
         * also includes configured targets that do not have associated actions.
         * </pre>
         *
         * <code>int32 action_lookup_value_count_not_including_aspects = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearActionLookupValueCountNotIncludingAspects() {
          bitField0_ = (bitField0_ & ~0x00000002);
          actionLookupValueCountNotIncludingAspects_ = 0;
          onChanged();
          return this;
        }

        private int actionCount_ ;
        /**
         * <pre>
         * How many actions belonged to the configured targets/aspects above. It may
         * not be necessary to execute all of these actions to build the requested
         * targets. May not be populated if analysis phase was fully cached.
         * </pre>
         *
         * <code>int32 action_count = 2;</code>
         * @return The actionCount.
         */
        @java.lang.Override
        public int getActionCount() {
          return actionCount_;
        }
        /**
         * <pre>
         * How many actions belonged to the configured targets/aspects above. It may
         * not be necessary to execute all of these actions to build the requested
         * targets. May not be populated if analysis phase was fully cached.
         * </pre>
         *
         * <code>int32 action_count = 2;</code>
         * @param value The actionCount to set.
         * @return This builder for chaining.
         */
        public Builder setActionCount(int value) {
          
          actionCount_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * How many actions belonged to the configured targets/aspects above. It may
         * not be necessary to execute all of these actions to build the requested
         * targets. May not be populated if analysis phase was fully cached.
         * </pre>
         *
         * <code>int32 action_count = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearActionCount() {
          bitField0_ = (bitField0_ & ~0x00000004);
          actionCount_ = 0;
          onChanged();
          return this;
        }

        private int actionCountNotIncludingAspects_ ;
        /**
         * <pre>
         * How many actions belonged to configured targets: always at most
         * action_count. Useful mainly for historical comparisons to
         * ActionMetrics.actions_created, which used to not count aspects' actions.
         * </pre>
         *
         * <code>int32 action_count_not_including_aspects = 6;</code>
         * @return The actionCountNotIncludingAspects.
         */
        @java.lang.Override
        public int getActionCountNotIncludingAspects() {
          return actionCountNotIncludingAspects_;
        }
        /**
         * <pre>
         * How many actions belonged to configured targets: always at most
         * action_count. Useful mainly for historical comparisons to
         * ActionMetrics.actions_created, which used to not count aspects' actions.
         * </pre>
         *
         * <code>int32 action_count_not_including_aspects = 6;</code>
         * @param value The actionCountNotIncludingAspects to set.
         * @return This builder for chaining.
         */
        public Builder setActionCountNotIncludingAspects(int value) {
          
          actionCountNotIncludingAspects_ = value;
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * How many actions belonged to configured targets: always at most
         * action_count. Useful mainly for historical comparisons to
         * ActionMetrics.actions_created, which used to not count aspects' actions.
         * </pre>
         *
         * <code>int32 action_count_not_including_aspects = 6;</code>
         * @return This builder for chaining.
         */
        public Builder clearActionCountNotIncludingAspects() {
          bitField0_ = (bitField0_ & ~0x00000008);
          actionCountNotIncludingAspects_ = 0;
          onChanged();
          return this;
        }

        private int inputFileConfiguredTargetCount_ ;
        /**
         * <pre>
         * How many "input file" configured targets there were: one per source file.
         * Should agree with artifact_metrics.source_artifacts_read.count above,
         * </pre>
         *
         * <code>int32 input_file_configured_target_count = 7;</code>
         * @return The inputFileConfiguredTargetCount.
         */
        @java.lang.Override
        public int getInputFileConfiguredTargetCount() {
          return inputFileConfiguredTargetCount_;
        }
        /**
         * <pre>
         * How many "input file" configured targets there were: one per source file.
         * Should agree with artifact_metrics.source_artifacts_read.count above,
         * </pre>
         *
         * <code>int32 input_file_configured_target_count = 7;</code>
         * @param value The inputFileConfiguredTargetCount to set.
         * @return This builder for chaining.
         */
        public Builder setInputFileConfiguredTargetCount(int value) {
          
          inputFileConfiguredTargetCount_ = value;
          bitField0_ |= 0x00000010;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * How many "input file" configured targets there were: one per source file.
         * Should agree with artifact_metrics.source_artifacts_read.count above,
         * </pre>
         *
         * <code>int32 input_file_configured_target_count = 7;</code>
         * @return This builder for chaining.
         */
        public Builder clearInputFileConfiguredTargetCount() {
          bitField0_ = (bitField0_ & ~0x00000010);
          inputFileConfiguredTargetCount_ = 0;
          onChanged();
          return this;
        }

        private int outputFileConfiguredTargetCount_ ;
        /**
         * <pre>
         * How many "output file" configured targets there were: output files that
         * are targets (not implicit outputs).
         * </pre>
         *
         * <code>int32 output_file_configured_target_count = 8;</code>
         * @return The outputFileConfiguredTargetCount.
         */
        @java.lang.Override
        public int getOutputFileConfiguredTargetCount() {
          return outputFileConfiguredTargetCount_;
        }
        /**
         * <pre>
         * How many "output file" configured targets there were: output files that
         * are targets (not implicit outputs).
         * </pre>
         *
         * <code>int32 output_file_configured_target_count = 8;</code>
         * @param value The outputFileConfiguredTargetCount to set.
         * @return This builder for chaining.
         */
        public Builder setOutputFileConfiguredTargetCount(int value) {
          
          outputFileConfiguredTargetCount_ = value;
          bitField0_ |= 0x00000020;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * How many "output file" configured targets there were: output files that
         * are targets (not implicit outputs).
         * </pre>
         *
         * <code>int32 output_file_configured_target_count = 8;</code>
         * @return This builder for chaining.
         */
        public Builder clearOutputFileConfiguredTargetCount() {
          bitField0_ = (bitField0_ & ~0x00000020);
          outputFileConfiguredTargetCount_ = 0;
          onChanged();
          return this;
        }

        private int otherConfiguredTargetCount_ ;
        /**
         * <pre>
         * How many "other" configured targets there were (like alias,
         * package_group, and other non-rule non-file configured targets).
         * </pre>
         *
         * <code>int32 other_configured_target_count = 9;</code>
         * @return The otherConfiguredTargetCount.
         */
        @java.lang.Override
        public int getOtherConfiguredTargetCount() {
          return otherConfiguredTargetCount_;
        }
        /**
         * <pre>
         * How many "other" configured targets there were (like alias,
         * package_group, and other non-rule non-file configured targets).
         * </pre>
         *
         * <code>int32 other_configured_target_count = 9;</code>
         * @param value The otherConfiguredTargetCount to set.
         * @return This builder for chaining.
         */
        public Builder setOtherConfiguredTargetCount(int value) {
          
          otherConfiguredTargetCount_ = value;
          bitField0_ |= 0x00000040;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * How many "other" configured targets there were (like alias,
         * package_group, and other non-rule non-file configured targets).
         * </pre>
         *
         * <code>int32 other_configured_target_count = 9;</code>
         * @return This builder for chaining.
         */
        public Builder clearOtherConfiguredTargetCount() {
          bitField0_ = (bitField0_ & ~0x00000040);
          otherConfiguredTargetCount_ = 0;
          onChanged();
          return this;
        }

        private int outputArtifactCount_ ;
        /**
         * <pre>
         * How many artifacts are outputs of the above actions. May not be populated
         * if analysis phase was fully cached.
         * </pre>
         *
         * <code>int32 output_artifact_count = 3;</code>
         * @return The outputArtifactCount.
         */
        @java.lang.Override
        public int getOutputArtifactCount() {
          return outputArtifactCount_;
        }
        /**
         * <pre>
         * How many artifacts are outputs of the above actions. May not be populated
         * if analysis phase was fully cached.
         * </pre>
         *
         * <code>int32 output_artifact_count = 3;</code>
         * @param value The outputArtifactCount to set.
         * @return This builder for chaining.
         */
        public Builder setOutputArtifactCount(int value) {
          
          outputArtifactCount_ = value;
          bitField0_ |= 0x00000080;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * How many artifacts are outputs of the above actions. May not be populated
         * if analysis phase was fully cached.
         * </pre>
         *
         * <code>int32 output_artifact_count = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearOutputArtifactCount() {
          bitField0_ = (bitField0_ & ~0x00000080);
          outputArtifactCount_ = 0;
          onChanged();
          return this;
        }

        private int postInvocationSkyframeNodeCount_ ;
        /**
         * <pre>
         * How many Skyframe nodes there are in memory at the end of the build. This
         * may underestimate the number of nodes when running with memory-saving
         * settings or with Skybuild, and may overestimate if there are nodes from
         * prior evaluations still in the cache.
         * </pre>
         *
         * <code>int32 post_invocation_skyframe_node_count = 4;</code>
         * @return The postInvocationSkyframeNodeCount.
         */
        @java.lang.Override
        public int getPostInvocationSkyframeNodeCount() {
          return postInvocationSkyframeNodeCount_;
        }
        /**
         * <pre>
         * How many Skyframe nodes there are in memory at the end of the build. This
         * may underestimate the number of nodes when running with memory-saving
         * settings or with Skybuild, and may overestimate if there are nodes from
         * prior evaluations still in the cache.
         * </pre>
         *
         * <code>int32 post_invocation_skyframe_node_count = 4;</code>
         * @param value The postInvocationSkyframeNodeCount to set.
         * @return This builder for chaining.
         */
        public Builder setPostInvocationSkyframeNodeCount(int value) {
          
          postInvocationSkyframeNodeCount_ = value;
          bitField0_ |= 0x00000100;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * How many Skyframe nodes there are in memory at the end of the build. This
         * may underestimate the number of nodes when running with memory-saving
         * settings or with Skybuild, and may overestimate if there are nodes from
         * prior evaluations still in the cache.
         * </pre>
         *
         * <code>int32 post_invocation_skyframe_node_count = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearPostInvocationSkyframeNodeCount() {
          bitField0_ = (bitField0_ & ~0x00000100);
          postInvocationSkyframeNodeCount_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildMetrics.BuildGraphMetrics)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildMetrics.BuildGraphMetrics)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface WorkerMetricsOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildMetrics.WorkerMetrics)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Deprecated. Use worker_ids instead of this field.
       * </pre>
       *
       * <code>int32 worker_id = 1 [deprecated = true];</code>
       * @deprecated build_event_stream.BuildMetrics.WorkerMetrics.worker_id is deprecated.
       *     See bazel/build_event_stream.proto;l=1042
       * @return The workerId.
       */
      @java.lang.Deprecated int getWorkerId();

      /**
       * <pre>
       * Ids of workers. Could be multiple in case of multiplex workers
       * </pre>
       *
       * <code>repeated uint32 worker_ids = 8;</code>
       * @return A list containing the workerIds.
       */
      java.util.List<java.lang.Integer> getWorkerIdsList();
      /**
       * <pre>
       * Ids of workers. Could be multiple in case of multiplex workers
       * </pre>
       *
       * <code>repeated uint32 worker_ids = 8;</code>
       * @return The count of workerIds.
       */
      int getWorkerIdsCount();
      /**
       * <pre>
       * Ids of workers. Could be multiple in case of multiplex workers
       * </pre>
       *
       * <code>repeated uint32 worker_ids = 8;</code>
       * @param index The index of the element to return.
       * @return The workerIds at the given index.
       */
      int getWorkerIds(int index);

      /**
       * <pre>
       * Worker process id. If there is no process for worker, equals to zero.
       * </pre>
       *
       * <code>uint32 process_id = 2;</code>
       * @return The processId.
       */
      int getProcessId();

      /**
       * <pre>
       * Mnemonic of running worker.
       * </pre>
       *
       * <code>string mnemonic = 3;</code>
       * @return The mnemonic.
       */
      java.lang.String getMnemonic();
      /**
       * <pre>
       * Mnemonic of running worker.
       * </pre>
       *
       * <code>string mnemonic = 3;</code>
       * @return The bytes for mnemonic.
       */
      com.google.protobuf.ByteString
          getMnemonicBytes();

      /**
       * <pre>
       * Multiplex or singleplex worker.
       * </pre>
       *
       * <code>bool is_multiplex = 4;</code>
       * @return The isMultiplex.
       */
      boolean getIsMultiplex();

      /**
       * <pre>
       * Using worker sandbox file system or not.
       * </pre>
       *
       * <code>bool is_sandbox = 5;</code>
       * @return The isSandbox.
       */
      boolean getIsSandbox();

      /**
       * <pre>
       * Shows is worker stats measured at the end of invocation.
       * </pre>
       *
       * <code>bool is_measurable = 6;</code>
       * @return The isMeasurable.
       */
      boolean getIsMeasurable();

      /**
       * <pre>
       * Combined workers statistics.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
       */
      java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats> 
          getWorkerStatsList();
      /**
       * <pre>
       * Combined workers statistics.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats getWorkerStats(int index);
      /**
       * <pre>
       * Combined workers statistics.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
       */
      int getWorkerStatsCount();
      /**
       * <pre>
       * Combined workers statistics.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
       */
      java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStatsOrBuilder> 
          getWorkerStatsOrBuilderList();
      /**
       * <pre>
       * Combined workers statistics.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStatsOrBuilder getWorkerStatsOrBuilder(
          int index);
    }
    /**
     * <pre>
     * Information about all workers that were alive during the invocation.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildMetrics.WorkerMetrics}
     */
    public static final class WorkerMetrics extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildMetrics.WorkerMetrics)
        WorkerMetricsOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use WorkerMetrics.newBuilder() to construct.
      private WorkerMetrics(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private WorkerMetrics() {
        workerIds_ = emptyIntList();
        mnemonic_ = "";
        workerStats_ = java.util.Collections.emptyList();
      }

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

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_WorkerMetrics_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_WorkerMetrics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.Builder.class);
      }

      public interface WorkerStatsOrBuilder extends
          // @@protoc_insertion_point(interface_extends:build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats)
          com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * Epoch unix time of collection of metrics.
         * </pre>
         *
         * <code>int64 collect_time_in_ms = 1;</code>
         * @return The collectTimeInMs.
         */
        long getCollectTimeInMs();

        /**
         * <pre>
         * RSS size of worker process.
         * </pre>
         *
         * <code>int32 worker_memory_in_kb = 2;</code>
         * @return The workerMemoryInKb.
         */
        int getWorkerMemoryInKb();

        /**
         * <pre>
         * Epoch unix time of last action started on specific worker.
         * </pre>
         *
         * <code>int64 last_action_start_time_in_ms = 3;</code>
         * @return The lastActionStartTimeInMs.
         */
        long getLastActionStartTimeInMs();
      }
      /**
       * <pre>
       * Information collected from worker at some point.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats}
       */
      public static final class WorkerStats extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats)
          WorkerStatsOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use WorkerStats.newBuilder() to construct.
        private WorkerStats(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private WorkerStats() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_WorkerMetrics_WorkerStats_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_WorkerMetrics_WorkerStats_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats.Builder.class);
        }

        public static final int COLLECT_TIME_IN_MS_FIELD_NUMBER = 1;
        private long collectTimeInMs_ = 0L;
        /**
         * <pre>
         * Epoch unix time of collection of metrics.
         * </pre>
         *
         * <code>int64 collect_time_in_ms = 1;</code>
         * @return The collectTimeInMs.
         */
        @java.lang.Override
        public long getCollectTimeInMs() {
          return collectTimeInMs_;
        }

        public static final int WORKER_MEMORY_IN_KB_FIELD_NUMBER = 2;
        private int workerMemoryInKb_ = 0;
        /**
         * <pre>
         * RSS size of worker process.
         * </pre>
         *
         * <code>int32 worker_memory_in_kb = 2;</code>
         * @return The workerMemoryInKb.
         */
        @java.lang.Override
        public int getWorkerMemoryInKb() {
          return workerMemoryInKb_;
        }

        public static final int LAST_ACTION_START_TIME_IN_MS_FIELD_NUMBER = 3;
        private long lastActionStartTimeInMs_ = 0L;
        /**
         * <pre>
         * Epoch unix time of last action started on specific worker.
         * </pre>
         *
         * <code>int64 last_action_start_time_in_ms = 3;</code>
         * @return The lastActionStartTimeInMs.
         */
        @java.lang.Override
        public long getLastActionStartTimeInMs() {
          return lastActionStartTimeInMs_;
        }

        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 (collectTimeInMs_ != 0L) {
            output.writeInt64(1, collectTimeInMs_);
          }
          if (workerMemoryInKb_ != 0) {
            output.writeInt32(2, workerMemoryInKb_);
          }
          if (lastActionStartTimeInMs_ != 0L) {
            output.writeInt64(3, lastActionStartTimeInMs_);
          }
          getUnknownFields().writeTo(output);
        }

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

          size = 0;
          if (collectTimeInMs_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt64Size(1, collectTimeInMs_);
          }
          if (workerMemoryInKb_ != 0) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt32Size(2, workerMemoryInKb_);
          }
          if (lastActionStartTimeInMs_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeInt64Size(3, lastActionStartTimeInMs_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSize = size;
          return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats)) {
            return super.equals(obj);
          }
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats other = (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats) obj;

          if (getCollectTimeInMs()
              != other.getCollectTimeInMs()) return false;
          if (getWorkerMemoryInKb()
              != other.getWorkerMemoryInKb()) return false;
          if (getLastActionStartTimeInMs()
              != other.getLastActionStartTimeInMs()) return false;
          if (!getUnknownFields().equals(other.getUnknownFields())) return false;
          return true;
        }

        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          hash = (37 * hash) + COLLECT_TIME_IN_MS_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getCollectTimeInMs());
          hash = (37 * hash) + WORKER_MEMORY_IN_KB_FIELD_NUMBER;
          hash = (53 * hash) + getWorkerMemoryInKb();
          hash = (37 * hash) + LAST_ACTION_START_TIME_IN_MS_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getLastActionStartTimeInMs());
          hash = (29 * hash) + getUnknownFields().hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats 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>
         * Information collected from worker at some point.
         * </pre>
         *
         * Protobuf type {@code build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats)
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStatsOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_WorkerMetrics_WorkerStats_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_WorkerMetrics_WorkerStats_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats.Builder.class);
          }

          // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats.newBuilder()
          private Builder() {

          }

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

          }
          @java.lang.Override
          public Builder clear() {
            super.clear();
            bitField0_ = 0;
            collectTimeInMs_ = 0L;
            workerMemoryInKb_ = 0;
            lastActionStartTimeInMs_ = 0L;
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_WorkerMetrics_WorkerStats_descriptor;
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats getDefaultInstanceForType() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats.getDefaultInstance();
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats build() {
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats buildPartial() {
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats(this);
            if (bitField0_ != 0) { buildPartial0(result); }
            onBuilt();
            return result;
          }

          private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats result) {
            int from_bitField0_ = bitField0_;
            if (((from_bitField0_ & 0x00000001) != 0)) {
              result.collectTimeInMs_ = collectTimeInMs_;
            }
            if (((from_bitField0_ & 0x00000002) != 0)) {
              result.workerMemoryInKb_ = workerMemoryInKb_;
            }
            if (((from_bitField0_ & 0x00000004) != 0)) {
              result.lastActionStartTimeInMs_ = lastActionStartTimeInMs_;
            }
          }

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

          public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats other) {
            if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats.getDefaultInstance()) return this;
            if (other.getCollectTimeInMs() != 0L) {
              setCollectTimeInMs(other.getCollectTimeInMs());
            }
            if (other.getWorkerMemoryInKb() != 0) {
              setWorkerMemoryInKb(other.getWorkerMemoryInKb());
            }
            if (other.getLastActionStartTimeInMs() != 0L) {
              setLastActionStartTimeInMs(other.getLastActionStartTimeInMs());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

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

          @java.lang.Override
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 8: {
                    collectTimeInMs_ = input.readInt64();
                    bitField0_ |= 0x00000001;
                    break;
                  } // case 8
                  case 16: {
                    workerMemoryInKb_ = input.readInt32();
                    bitField0_ |= 0x00000002;
                    break;
                  } // case 16
                  case 24: {
                    lastActionStartTimeInMs_ = input.readInt64();
                    bitField0_ |= 0x00000004;
                    break;
                  } // case 24
                  default: {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }
          private int bitField0_;

          private long collectTimeInMs_ ;
          /**
           * <pre>
           * Epoch unix time of collection of metrics.
           * </pre>
           *
           * <code>int64 collect_time_in_ms = 1;</code>
           * @return The collectTimeInMs.
           */
          @java.lang.Override
          public long getCollectTimeInMs() {
            return collectTimeInMs_;
          }
          /**
           * <pre>
           * Epoch unix time of collection of metrics.
           * </pre>
           *
           * <code>int64 collect_time_in_ms = 1;</code>
           * @param value The collectTimeInMs to set.
           * @return This builder for chaining.
           */
          public Builder setCollectTimeInMs(long value) {
            
            collectTimeInMs_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Epoch unix time of collection of metrics.
           * </pre>
           *
           * <code>int64 collect_time_in_ms = 1;</code>
           * @return This builder for chaining.
           */
          public Builder clearCollectTimeInMs() {
            bitField0_ = (bitField0_ & ~0x00000001);
            collectTimeInMs_ = 0L;
            onChanged();
            return this;
          }

          private int workerMemoryInKb_ ;
          /**
           * <pre>
           * RSS size of worker process.
           * </pre>
           *
           * <code>int32 worker_memory_in_kb = 2;</code>
           * @return The workerMemoryInKb.
           */
          @java.lang.Override
          public int getWorkerMemoryInKb() {
            return workerMemoryInKb_;
          }
          /**
           * <pre>
           * RSS size of worker process.
           * </pre>
           *
           * <code>int32 worker_memory_in_kb = 2;</code>
           * @param value The workerMemoryInKb to set.
           * @return This builder for chaining.
           */
          public Builder setWorkerMemoryInKb(int value) {
            
            workerMemoryInKb_ = value;
            bitField0_ |= 0x00000002;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * RSS size of worker process.
           * </pre>
           *
           * <code>int32 worker_memory_in_kb = 2;</code>
           * @return This builder for chaining.
           */
          public Builder clearWorkerMemoryInKb() {
            bitField0_ = (bitField0_ & ~0x00000002);
            workerMemoryInKb_ = 0;
            onChanged();
            return this;
          }

          private long lastActionStartTimeInMs_ ;
          /**
           * <pre>
           * Epoch unix time of last action started on specific worker.
           * </pre>
           *
           * <code>int64 last_action_start_time_in_ms = 3;</code>
           * @return The lastActionStartTimeInMs.
           */
          @java.lang.Override
          public long getLastActionStartTimeInMs() {
            return lastActionStartTimeInMs_;
          }
          /**
           * <pre>
           * Epoch unix time of last action started on specific worker.
           * </pre>
           *
           * <code>int64 last_action_start_time_in_ms = 3;</code>
           * @param value The lastActionStartTimeInMs to set.
           * @return This builder for chaining.
           */
          public Builder setLastActionStartTimeInMs(long value) {
            
            lastActionStartTimeInMs_ = value;
            bitField0_ |= 0x00000004;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Epoch unix time of last action started on specific worker.
           * </pre>
           *
           * <code>int64 last_action_start_time_in_ms = 3;</code>
           * @return This builder for chaining.
           */
          public Builder clearLastActionStartTimeInMs() {
            bitField0_ = (bitField0_ & ~0x00000004);
            lastActionStartTimeInMs_ = 0L;
            onChanged();
            return this;
          }
          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

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


          // @@protoc_insertion_point(builder_scope:build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats)
        }

        // @@protoc_insertion_point(class_scope:build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats)
        private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats();
        }

        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }

      }

      public static final int WORKER_ID_FIELD_NUMBER = 1;
      private int workerId_ = 0;
      /**
       * <pre>
       * Deprecated. Use worker_ids instead of this field.
       * </pre>
       *
       * <code>int32 worker_id = 1 [deprecated = true];</code>
       * @deprecated build_event_stream.BuildMetrics.WorkerMetrics.worker_id is deprecated.
       *     See bazel/build_event_stream.proto;l=1042
       * @return The workerId.
       */
      @java.lang.Override
      @java.lang.Deprecated public int getWorkerId() {
        return workerId_;
      }

      public static final int WORKER_IDS_FIELD_NUMBER = 8;
      @SuppressWarnings("serial")
      private com.google.protobuf.Internal.IntList workerIds_;
      /**
       * <pre>
       * Ids of workers. Could be multiple in case of multiplex workers
       * </pre>
       *
       * <code>repeated uint32 worker_ids = 8;</code>
       * @return A list containing the workerIds.
       */
      @java.lang.Override
      public java.util.List<java.lang.Integer>
          getWorkerIdsList() {
        return workerIds_;
      }
      /**
       * <pre>
       * Ids of workers. Could be multiple in case of multiplex workers
       * </pre>
       *
       * <code>repeated uint32 worker_ids = 8;</code>
       * @return The count of workerIds.
       */
      public int getWorkerIdsCount() {
        return workerIds_.size();
      }
      /**
       * <pre>
       * Ids of workers. Could be multiple in case of multiplex workers
       * </pre>
       *
       * <code>repeated uint32 worker_ids = 8;</code>
       * @param index The index of the element to return.
       * @return The workerIds at the given index.
       */
      public int getWorkerIds(int index) {
        return workerIds_.getInt(index);
      }
      private int workerIdsMemoizedSerializedSize = -1;

      public static final int PROCESS_ID_FIELD_NUMBER = 2;
      private int processId_ = 0;
      /**
       * <pre>
       * Worker process id. If there is no process for worker, equals to zero.
       * </pre>
       *
       * <code>uint32 process_id = 2;</code>
       * @return The processId.
       */
      @java.lang.Override
      public int getProcessId() {
        return processId_;
      }

      public static final int MNEMONIC_FIELD_NUMBER = 3;
      @SuppressWarnings("serial")
      private volatile java.lang.Object mnemonic_ = "";
      /**
       * <pre>
       * Mnemonic of running worker.
       * </pre>
       *
       * <code>string mnemonic = 3;</code>
       * @return The mnemonic.
       */
      @java.lang.Override
      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>
       * Mnemonic of running worker.
       * </pre>
       *
       * <code>string mnemonic = 3;</code>
       * @return The bytes for mnemonic.
       */
      @java.lang.Override
      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 IS_MULTIPLEX_FIELD_NUMBER = 4;
      private boolean isMultiplex_ = false;
      /**
       * <pre>
       * Multiplex or singleplex worker.
       * </pre>
       *
       * <code>bool is_multiplex = 4;</code>
       * @return The isMultiplex.
       */
      @java.lang.Override
      public boolean getIsMultiplex() {
        return isMultiplex_;
      }

      public static final int IS_SANDBOX_FIELD_NUMBER = 5;
      private boolean isSandbox_ = false;
      /**
       * <pre>
       * Using worker sandbox file system or not.
       * </pre>
       *
       * <code>bool is_sandbox = 5;</code>
       * @return The isSandbox.
       */
      @java.lang.Override
      public boolean getIsSandbox() {
        return isSandbox_;
      }

      public static final int IS_MEASURABLE_FIELD_NUMBER = 6;
      private boolean isMeasurable_ = false;
      /**
       * <pre>
       * Shows is worker stats measured at the end of invocation.
       * </pre>
       *
       * <code>bool is_measurable = 6;</code>
       * @return The isMeasurable.
       */
      @java.lang.Override
      public boolean getIsMeasurable() {
        return isMeasurable_;
      }

      public static final int WORKER_STATS_FIELD_NUMBER = 7;
      @SuppressWarnings("serial")
      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats> workerStats_;
      /**
       * <pre>
       * Combined workers statistics.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
       */
      @java.lang.Override
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats> getWorkerStatsList() {
        return workerStats_;
      }
      /**
       * <pre>
       * Combined workers statistics.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStatsOrBuilder> 
          getWorkerStatsOrBuilderList() {
        return workerStats_;
      }
      /**
       * <pre>
       * Combined workers statistics.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
       */
      @java.lang.Override
      public int getWorkerStatsCount() {
        return workerStats_.size();
      }
      /**
       * <pre>
       * Combined workers statistics.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats getWorkerStats(int index) {
        return workerStats_.get(index);
      }
      /**
       * <pre>
       * Combined workers statistics.
       * </pre>
       *
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStatsOrBuilder getWorkerStatsOrBuilder(
          int index) {
        return workerStats_.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 {
        getSerializedSize();
        if (workerId_ != 0) {
          output.writeInt32(1, workerId_);
        }
        if (processId_ != 0) {
          output.writeUInt32(2, processId_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(mnemonic_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, mnemonic_);
        }
        if (isMultiplex_ != false) {
          output.writeBool(4, isMultiplex_);
        }
        if (isSandbox_ != false) {
          output.writeBool(5, isSandbox_);
        }
        if (isMeasurable_ != false) {
          output.writeBool(6, isMeasurable_);
        }
        for (int i = 0; i < workerStats_.size(); i++) {
          output.writeMessage(7, workerStats_.get(i));
        }
        if (getWorkerIdsList().size() > 0) {
          output.writeUInt32NoTag(66);
          output.writeUInt32NoTag(workerIdsMemoizedSerializedSize);
        }
        for (int i = 0; i < workerIds_.size(); i++) {
          output.writeUInt32NoTag(workerIds_.getInt(i));
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (workerId_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, workerId_);
        }
        if (processId_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(2, processId_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(mnemonic_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, mnemonic_);
        }
        if (isMultiplex_ != false) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(4, isMultiplex_);
        }
        if (isSandbox_ != false) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(5, isSandbox_);
        }
        if (isMeasurable_ != false) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(6, isMeasurable_);
        }
        for (int i = 0; i < workerStats_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(7, workerStats_.get(i));
        }
        {
          int dataSize = 0;
          for (int i = 0; i < workerIds_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeUInt32SizeNoTag(workerIds_.getInt(i));
          }
          size += dataSize;
          if (!getWorkerIdsList().isEmpty()) {
            size += 1;
            size += com.google.protobuf.CodedOutputStream
                .computeInt32SizeNoTag(dataSize);
          }
          workerIdsMemoizedSerializedSize = dataSize;
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (getWorkerId()
            != other.getWorkerId()) return false;
        if (!getWorkerIdsList()
            .equals(other.getWorkerIdsList())) return false;
        if (getProcessId()
            != other.getProcessId()) return false;
        if (!getMnemonic()
            .equals(other.getMnemonic())) return false;
        if (getIsMultiplex()
            != other.getIsMultiplex()) return false;
        if (getIsSandbox()
            != other.getIsSandbox()) return false;
        if (getIsMeasurable()
            != other.getIsMeasurable()) return false;
        if (!getWorkerStatsList()
            .equals(other.getWorkerStatsList())) return false;
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + WORKER_ID_FIELD_NUMBER;
        hash = (53 * hash) + getWorkerId();
        if (getWorkerIdsCount() > 0) {
          hash = (37 * hash) + WORKER_IDS_FIELD_NUMBER;
          hash = (53 * hash) + getWorkerIdsList().hashCode();
        }
        hash = (37 * hash) + PROCESS_ID_FIELD_NUMBER;
        hash = (53 * hash) + getProcessId();
        hash = (37 * hash) + MNEMONIC_FIELD_NUMBER;
        hash = (53 * hash) + getMnemonic().hashCode();
        hash = (37 * hash) + IS_MULTIPLEX_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsMultiplex());
        hash = (37 * hash) + IS_SANDBOX_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsSandbox());
        hash = (37 * hash) + IS_MEASURABLE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsMeasurable());
        if (getWorkerStatsCount() > 0) {
          hash = (37 * hash) + WORKER_STATS_FIELD_NUMBER;
          hash = (53 * hash) + getWorkerStatsList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics 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>
       * Information about all workers that were alive during the invocation.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildMetrics.WorkerMetrics}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildMetrics.WorkerMetrics)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetricsOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_WorkerMetrics_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_WorkerMetrics_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.newBuilder()
        private Builder() {

        }

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

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          workerId_ = 0;
          workerIds_ = emptyIntList();
          processId_ = 0;
          mnemonic_ = "";
          isMultiplex_ = false;
          isSandbox_ = false;
          isMeasurable_ = false;
          if (workerStatsBuilder_ == null) {
            workerStats_ = java.util.Collections.emptyList();
          } else {
            workerStats_ = null;
            workerStatsBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000080);
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_WorkerMetrics_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics(this);
          buildPartialRepeatedFields(result);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics result) {
          if (((bitField0_ & 0x00000002) != 0)) {
            workerIds_.makeImmutable();
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.workerIds_ = workerIds_;
          if (workerStatsBuilder_ == null) {
            if (((bitField0_ & 0x00000080) != 0)) {
              workerStats_ = java.util.Collections.unmodifiableList(workerStats_);
              bitField0_ = (bitField0_ & ~0x00000080);
            }
            result.workerStats_ = workerStats_;
          } else {
            result.workerStats_ = workerStatsBuilder_.build();
          }
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.workerId_ = workerId_;
          }
          if (((from_bitField0_ & 0x00000004) != 0)) {
            result.processId_ = processId_;
          }
          if (((from_bitField0_ & 0x00000008) != 0)) {
            result.mnemonic_ = mnemonic_;
          }
          if (((from_bitField0_ & 0x00000010) != 0)) {
            result.isMultiplex_ = isMultiplex_;
          }
          if (((from_bitField0_ & 0x00000020) != 0)) {
            result.isSandbox_ = isSandbox_;
          }
          if (((from_bitField0_ & 0x00000040) != 0)) {
            result.isMeasurable_ = isMeasurable_;
          }
        }

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

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.getDefaultInstance()) return this;
          if (other.getWorkerId() != 0) {
            setWorkerId(other.getWorkerId());
          }
          if (!other.workerIds_.isEmpty()) {
            if (workerIds_.isEmpty()) {
              workerIds_ = other.workerIds_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureWorkerIdsIsMutable();
              workerIds_.addAll(other.workerIds_);
            }
            onChanged();
          }
          if (other.getProcessId() != 0) {
            setProcessId(other.getProcessId());
          }
          if (!other.getMnemonic().isEmpty()) {
            mnemonic_ = other.mnemonic_;
            bitField0_ |= 0x00000008;
            onChanged();
          }
          if (other.getIsMultiplex() != false) {
            setIsMultiplex(other.getIsMultiplex());
          }
          if (other.getIsSandbox() != false) {
            setIsSandbox(other.getIsSandbox());
          }
          if (other.getIsMeasurable() != false) {
            setIsMeasurable(other.getIsMeasurable());
          }
          if (workerStatsBuilder_ == null) {
            if (!other.workerStats_.isEmpty()) {
              if (workerStats_.isEmpty()) {
                workerStats_ = other.workerStats_;
                bitField0_ = (bitField0_ & ~0x00000080);
              } else {
                ensureWorkerStatsIsMutable();
                workerStats_.addAll(other.workerStats_);
              }
              onChanged();
            }
          } else {
            if (!other.workerStats_.isEmpty()) {
              if (workerStatsBuilder_.isEmpty()) {
                workerStatsBuilder_.dispose();
                workerStatsBuilder_ = null;
                workerStats_ = other.workerStats_;
                bitField0_ = (bitField0_ & ~0x00000080);
                workerStatsBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getWorkerStatsFieldBuilder() : null;
              } else {
                workerStatsBuilder_.addAllMessages(other.workerStats_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 8: {
                  workerId_ = input.readInt32();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
                case 16: {
                  processId_ = input.readUInt32();
                  bitField0_ |= 0x00000004;
                  break;
                } // case 16
                case 26: {
                  mnemonic_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000008;
                  break;
                } // case 26
                case 32: {
                  isMultiplex_ = input.readBool();
                  bitField0_ |= 0x00000010;
                  break;
                } // case 32
                case 40: {
                  isSandbox_ = input.readBool();
                  bitField0_ |= 0x00000020;
                  break;
                } // case 40
                case 48: {
                  isMeasurable_ = input.readBool();
                  bitField0_ |= 0x00000040;
                  break;
                } // case 48
                case 58: {
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats m =
                      input.readMessage(
                          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats.parser(),
                          extensionRegistry);
                  if (workerStatsBuilder_ == null) {
                    ensureWorkerStatsIsMutable();
                    workerStats_.add(m);
                  } else {
                    workerStatsBuilder_.addMessage(m);
                  }
                  break;
                } // case 58
                case 64: {
                  int v = input.readUInt32();
                  ensureWorkerIdsIsMutable();
                  workerIds_.addInt(v);
                  break;
                } // case 64
                case 66: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  ensureWorkerIdsIsMutable();
                  while (input.getBytesUntilLimit() > 0) {
                    workerIds_.addInt(input.readUInt32());
                  }
                  input.popLimit(limit);
                  break;
                } // case 66
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private int workerId_ ;
        /**
         * <pre>
         * Deprecated. Use worker_ids instead of this field.
         * </pre>
         *
         * <code>int32 worker_id = 1 [deprecated = true];</code>
         * @deprecated build_event_stream.BuildMetrics.WorkerMetrics.worker_id is deprecated.
         *     See bazel/build_event_stream.proto;l=1042
         * @return The workerId.
         */
        @java.lang.Override
        @java.lang.Deprecated public int getWorkerId() {
          return workerId_;
        }
        /**
         * <pre>
         * Deprecated. Use worker_ids instead of this field.
         * </pre>
         *
         * <code>int32 worker_id = 1 [deprecated = true];</code>
         * @deprecated build_event_stream.BuildMetrics.WorkerMetrics.worker_id is deprecated.
         *     See bazel/build_event_stream.proto;l=1042
         * @param value The workerId to set.
         * @return This builder for chaining.
         */
        @java.lang.Deprecated public Builder setWorkerId(int value) {
          
          workerId_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Deprecated. Use worker_ids instead of this field.
         * </pre>
         *
         * <code>int32 worker_id = 1 [deprecated = true];</code>
         * @deprecated build_event_stream.BuildMetrics.WorkerMetrics.worker_id is deprecated.
         *     See bazel/build_event_stream.proto;l=1042
         * @return This builder for chaining.
         */
        @java.lang.Deprecated public Builder clearWorkerId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          workerId_ = 0;
          onChanged();
          return this;
        }

        private com.google.protobuf.Internal.IntList workerIds_ = emptyIntList();
        private void ensureWorkerIdsIsMutable() {
          if (!((bitField0_ & 0x00000002) != 0)) {
            workerIds_ = mutableCopy(workerIds_);
            bitField0_ |= 0x00000002;
          }
        }
        /**
         * <pre>
         * Ids of workers. Could be multiple in case of multiplex workers
         * </pre>
         *
         * <code>repeated uint32 worker_ids = 8;</code>
         * @return A list containing the workerIds.
         */
        public java.util.List<java.lang.Integer>
            getWorkerIdsList() {
          return ((bitField0_ & 0x00000002) != 0) ?
                   java.util.Collections.unmodifiableList(workerIds_) : workerIds_;
        }
        /**
         * <pre>
         * Ids of workers. Could be multiple in case of multiplex workers
         * </pre>
         *
         * <code>repeated uint32 worker_ids = 8;</code>
         * @return The count of workerIds.
         */
        public int getWorkerIdsCount() {
          return workerIds_.size();
        }
        /**
         * <pre>
         * Ids of workers. Could be multiple in case of multiplex workers
         * </pre>
         *
         * <code>repeated uint32 worker_ids = 8;</code>
         * @param index The index of the element to return.
         * @return The workerIds at the given index.
         */
        public int getWorkerIds(int index) {
          return workerIds_.getInt(index);
        }
        /**
         * <pre>
         * Ids of workers. Could be multiple in case of multiplex workers
         * </pre>
         *
         * <code>repeated uint32 worker_ids = 8;</code>
         * @param index The index to set the value at.
         * @param value The workerIds to set.
         * @return This builder for chaining.
         */
        public Builder setWorkerIds(
            int index, int value) {
          
          ensureWorkerIdsIsMutable();
          workerIds_.setInt(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Ids of workers. Could be multiple in case of multiplex workers
         * </pre>
         *
         * <code>repeated uint32 worker_ids = 8;</code>
         * @param value The workerIds to add.
         * @return This builder for chaining.
         */
        public Builder addWorkerIds(int value) {
          
          ensureWorkerIdsIsMutable();
          workerIds_.addInt(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Ids of workers. Could be multiple in case of multiplex workers
         * </pre>
         *
         * <code>repeated uint32 worker_ids = 8;</code>
         * @param values The workerIds to add.
         * @return This builder for chaining.
         */
        public Builder addAllWorkerIds(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureWorkerIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, workerIds_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Ids of workers. Could be multiple in case of multiplex workers
         * </pre>
         *
         * <code>repeated uint32 worker_ids = 8;</code>
         * @return This builder for chaining.
         */
        public Builder clearWorkerIds() {
          workerIds_ = emptyIntList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }

        private int processId_ ;
        /**
         * <pre>
         * Worker process id. If there is no process for worker, equals to zero.
         * </pre>
         *
         * <code>uint32 process_id = 2;</code>
         * @return The processId.
         */
        @java.lang.Override
        public int getProcessId() {
          return processId_;
        }
        /**
         * <pre>
         * Worker process id. If there is no process for worker, equals to zero.
         * </pre>
         *
         * <code>uint32 process_id = 2;</code>
         * @param value The processId to set.
         * @return This builder for chaining.
         */
        public Builder setProcessId(int value) {
          
          processId_ = value;
          bitField0_ |= 0x00000004;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Worker process id. If there is no process for worker, equals to zero.
         * </pre>
         *
         * <code>uint32 process_id = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearProcessId() {
          bitField0_ = (bitField0_ & ~0x00000004);
          processId_ = 0;
          onChanged();
          return this;
        }

        private java.lang.Object mnemonic_ = "";
        /**
         * <pre>
         * Mnemonic of running worker.
         * </pre>
         *
         * <code>string mnemonic = 3;</code>
         * @return The mnemonic.
         */
        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>
         * Mnemonic of running worker.
         * </pre>
         *
         * <code>string mnemonic = 3;</code>
         * @return The bytes for mnemonic.
         */
        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>
         * Mnemonic of running worker.
         * </pre>
         *
         * <code>string mnemonic = 3;</code>
         * @param value The mnemonic to set.
         * @return This builder for chaining.
         */
        public Builder setMnemonic(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          mnemonic_ = value;
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Mnemonic of running worker.
         * </pre>
         *
         * <code>string mnemonic = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearMnemonic() {
          mnemonic_ = getDefaultInstance().getMnemonic();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Mnemonic of running worker.
         * </pre>
         *
         * <code>string mnemonic = 3;</code>
         * @param value The bytes for mnemonic to set.
         * @return This builder for chaining.
         */
        public Builder setMnemonicBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          mnemonic_ = value;
          bitField0_ |= 0x00000008;
          onChanged();
          return this;
        }

        private boolean isMultiplex_ ;
        /**
         * <pre>
         * Multiplex or singleplex worker.
         * </pre>
         *
         * <code>bool is_multiplex = 4;</code>
         * @return The isMultiplex.
         */
        @java.lang.Override
        public boolean getIsMultiplex() {
          return isMultiplex_;
        }
        /**
         * <pre>
         * Multiplex or singleplex worker.
         * </pre>
         *
         * <code>bool is_multiplex = 4;</code>
         * @param value The isMultiplex to set.
         * @return This builder for chaining.
         */
        public Builder setIsMultiplex(boolean value) {
          
          isMultiplex_ = value;
          bitField0_ |= 0x00000010;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Multiplex or singleplex worker.
         * </pre>
         *
         * <code>bool is_multiplex = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearIsMultiplex() {
          bitField0_ = (bitField0_ & ~0x00000010);
          isMultiplex_ = false;
          onChanged();
          return this;
        }

        private boolean isSandbox_ ;
        /**
         * <pre>
         * Using worker sandbox file system or not.
         * </pre>
         *
         * <code>bool is_sandbox = 5;</code>
         * @return The isSandbox.
         */
        @java.lang.Override
        public boolean getIsSandbox() {
          return isSandbox_;
        }
        /**
         * <pre>
         * Using worker sandbox file system or not.
         * </pre>
         *
         * <code>bool is_sandbox = 5;</code>
         * @param value The isSandbox to set.
         * @return This builder for chaining.
         */
        public Builder setIsSandbox(boolean value) {
          
          isSandbox_ = value;
          bitField0_ |= 0x00000020;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Using worker sandbox file system or not.
         * </pre>
         *
         * <code>bool is_sandbox = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearIsSandbox() {
          bitField0_ = (bitField0_ & ~0x00000020);
          isSandbox_ = false;
          onChanged();
          return this;
        }

        private boolean isMeasurable_ ;
        /**
         * <pre>
         * Shows is worker stats measured at the end of invocation.
         * </pre>
         *
         * <code>bool is_measurable = 6;</code>
         * @return The isMeasurable.
         */
        @java.lang.Override
        public boolean getIsMeasurable() {
          return isMeasurable_;
        }
        /**
         * <pre>
         * Shows is worker stats measured at the end of invocation.
         * </pre>
         *
         * <code>bool is_measurable = 6;</code>
         * @param value The isMeasurable to set.
         * @return This builder for chaining.
         */
        public Builder setIsMeasurable(boolean value) {
          
          isMeasurable_ = value;
          bitField0_ |= 0x00000040;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Shows is worker stats measured at the end of invocation.
         * </pre>
         *
         * <code>bool is_measurable = 6;</code>
         * @return This builder for chaining.
         */
        public Builder clearIsMeasurable() {
          bitField0_ = (bitField0_ & ~0x00000040);
          isMeasurable_ = false;
          onChanged();
          return this;
        }

        private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats> workerStats_ =
          java.util.Collections.emptyList();
        private void ensureWorkerStatsIsMutable() {
          if (!((bitField0_ & 0x00000080) != 0)) {
            workerStats_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats>(workerStats_);
            bitField0_ |= 0x00000080;
           }
        }

        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStatsOrBuilder> workerStatsBuilder_;

        /**
         * <pre>
         * Combined workers statistics.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
         */
        public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats> getWorkerStatsList() {
          if (workerStatsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(workerStats_);
          } else {
            return workerStatsBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         * Combined workers statistics.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
         */
        public int getWorkerStatsCount() {
          if (workerStatsBuilder_ == null) {
            return workerStats_.size();
          } else {
            return workerStatsBuilder_.getCount();
          }
        }
        /**
         * <pre>
         * Combined workers statistics.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats getWorkerStats(int index) {
          if (workerStatsBuilder_ == null) {
            return workerStats_.get(index);
          } else {
            return workerStatsBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         * Combined workers statistics.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
         */
        public Builder setWorkerStats(
            int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats value) {
          if (workerStatsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureWorkerStatsIsMutable();
            workerStats_.set(index, value);
            onChanged();
          } else {
            workerStatsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * Combined workers statistics.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
         */
        public Builder setWorkerStats(
            int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats.Builder builderForValue) {
          if (workerStatsBuilder_ == null) {
            ensureWorkerStatsIsMutable();
            workerStats_.set(index, builderForValue.build());
            onChanged();
          } else {
            workerStatsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Combined workers statistics.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
         */
        public Builder addWorkerStats(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats value) {
          if (workerStatsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureWorkerStatsIsMutable();
            workerStats_.add(value);
            onChanged();
          } else {
            workerStatsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         * Combined workers statistics.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
         */
        public Builder addWorkerStats(
            int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats value) {
          if (workerStatsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureWorkerStatsIsMutable();
            workerStats_.add(index, value);
            onChanged();
          } else {
            workerStatsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         * Combined workers statistics.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
         */
        public Builder addWorkerStats(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats.Builder builderForValue) {
          if (workerStatsBuilder_ == null) {
            ensureWorkerStatsIsMutable();
            workerStats_.add(builderForValue.build());
            onChanged();
          } else {
            workerStatsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Combined workers statistics.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
         */
        public Builder addWorkerStats(
            int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats.Builder builderForValue) {
          if (workerStatsBuilder_ == null) {
            ensureWorkerStatsIsMutable();
            workerStats_.add(index, builderForValue.build());
            onChanged();
          } else {
            workerStatsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         * Combined workers statistics.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
         */
        public Builder addAllWorkerStats(
            java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats> values) {
          if (workerStatsBuilder_ == null) {
            ensureWorkerStatsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, workerStats_);
            onChanged();
          } else {
            workerStatsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         * Combined workers statistics.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
         */
        public Builder clearWorkerStats() {
          if (workerStatsBuilder_ == null) {
            workerStats_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000080);
            onChanged();
          } else {
            workerStatsBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Combined workers statistics.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
         */
        public Builder removeWorkerStats(int index) {
          if (workerStatsBuilder_ == null) {
            ensureWorkerStatsIsMutable();
            workerStats_.remove(index);
            onChanged();
          } else {
            workerStatsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         * Combined workers statistics.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats.Builder getWorkerStatsBuilder(
            int index) {
          return getWorkerStatsFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         * Combined workers statistics.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStatsOrBuilder getWorkerStatsOrBuilder(
            int index) {
          if (workerStatsBuilder_ == null) {
            return workerStats_.get(index);  } else {
            return workerStatsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         * Combined workers statistics.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
         */
        public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStatsOrBuilder> 
             getWorkerStatsOrBuilderList() {
          if (workerStatsBuilder_ != null) {
            return workerStatsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(workerStats_);
          }
        }
        /**
         * <pre>
         * Combined workers statistics.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats.Builder addWorkerStatsBuilder() {
          return getWorkerStatsFieldBuilder().addBuilder(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats.getDefaultInstance());
        }
        /**
         * <pre>
         * Combined workers statistics.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats.Builder addWorkerStatsBuilder(
            int index) {
          return getWorkerStatsFieldBuilder().addBuilder(
              index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats.getDefaultInstance());
        }
        /**
         * <pre>
         * Combined workers statistics.
         * </pre>
         *
         * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics.WorkerStats worker_stats = 7;</code>
         */
        public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats.Builder> 
             getWorkerStatsBuilderList() {
          return getWorkerStatsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStatsOrBuilder> 
            getWorkerStatsFieldBuilder() {
          if (workerStatsBuilder_ == null) {
            workerStatsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStats.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.WorkerStatsOrBuilder>(
                    workerStats_,
                    ((bitField0_ & 0x00000080) != 0),
                    getParentForChildren(),
                    isClean());
            workerStats_ = null;
          }
          return workerStatsBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildMetrics.WorkerMetrics)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildMetrics.WorkerMetrics)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<WorkerMetrics>
          PARSER = new com.google.protobuf.AbstractParser<WorkerMetrics>() {
        @java.lang.Override
        public WorkerMetrics parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<WorkerMetrics> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<WorkerMetrics> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface NetworkMetricsOrBuilder extends
        // @@protoc_insertion_point(interface_extends:build_event_stream.BuildMetrics.NetworkMetrics)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>.build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats system_network_stats = 1;</code>
       * @return Whether the systemNetworkStats field is set.
       */
      boolean hasSystemNetworkStats();
      /**
       * <code>.build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats system_network_stats = 1;</code>
       * @return The systemNetworkStats.
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats getSystemNetworkStats();
      /**
       * <code>.build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats system_network_stats = 1;</code>
       */
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStatsOrBuilder getSystemNetworkStatsOrBuilder();
    }
    /**
     * <pre>
     * Information about host network.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildMetrics.NetworkMetrics}
     */
    public static final class NetworkMetrics extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:build_event_stream.BuildMetrics.NetworkMetrics)
        NetworkMetricsOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use NetworkMetrics.newBuilder() to construct.
      private NetworkMetrics(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private NetworkMetrics() {
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new NetworkMetrics();
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_NetworkMetrics_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_NetworkMetrics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.Builder.class);
      }

      public interface SystemNetworkStatsOrBuilder extends
          // @@protoc_insertion_point(interface_extends:build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats)
          com.google.protobuf.MessageOrBuilder {

        /**
         * <pre>
         * Total bytes sent during the invocation.
         * </pre>
         *
         * <code>uint64 bytes_sent = 1;</code>
         * @return The bytesSent.
         */
        long getBytesSent();

        /**
         * <pre>
         * Total bytes received during the invocation.
         * </pre>
         *
         * <code>uint64 bytes_recv = 2;</code>
         * @return The bytesRecv.
         */
        long getBytesRecv();

        /**
         * <pre>
         * Total packets sent during the invocation.
         * </pre>
         *
         * <code>uint64 packets_sent = 3;</code>
         * @return The packetsSent.
         */
        long getPacketsSent();

        /**
         * <pre>
         * Total packets received during the invocation.
         * </pre>
         *
         * <code>uint64 packets_recv = 4;</code>
         * @return The packetsRecv.
         */
        long getPacketsRecv();

        /**
         * <pre>
         * Peak bytes/sec sent during the invocation.
         * </pre>
         *
         * <code>uint64 peak_bytes_sent_per_sec = 5;</code>
         * @return The peakBytesSentPerSec.
         */
        long getPeakBytesSentPerSec();

        /**
         * <pre>
         * Peak bytes/sec received during the invocation.
         * </pre>
         *
         * <code>uint64 peak_bytes_recv_per_sec = 6;</code>
         * @return The peakBytesRecvPerSec.
         */
        long getPeakBytesRecvPerSec();

        /**
         * <pre>
         * Peak packets/sec sent during the invocation.
         * </pre>
         *
         * <code>uint64 peak_packets_sent_per_sec = 7;</code>
         * @return The peakPacketsSentPerSec.
         */
        long getPeakPacketsSentPerSec();

        /**
         * <pre>
         * Peak packets/sec received during the invocation.
         * </pre>
         *
         * <code>uint64 peak_packets_recv_per_sec = 8;</code>
         * @return The peakPacketsRecvPerSec.
         */
        long getPeakPacketsRecvPerSec();
      }
      /**
       * <pre>
       * Information for all the network traffic going on on the host machine
       * during the invocation.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats}
       */
      public static final class SystemNetworkStats extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats)
          SystemNetworkStatsOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use SystemNetworkStats.newBuilder() to construct.
        private SystemNetworkStats(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private SystemNetworkStats() {
        }

        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(
            UnusedPrivateParameter unused) {
          return new SystemNetworkStats();
        }

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_NetworkMetrics_SystemNetworkStats_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_NetworkMetrics_SystemNetworkStats_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats.Builder.class);
        }

        public static final int BYTES_SENT_FIELD_NUMBER = 1;
        private long bytesSent_ = 0L;
        /**
         * <pre>
         * Total bytes sent during the invocation.
         * </pre>
         *
         * <code>uint64 bytes_sent = 1;</code>
         * @return The bytesSent.
         */
        @java.lang.Override
        public long getBytesSent() {
          return bytesSent_;
        }

        public static final int BYTES_RECV_FIELD_NUMBER = 2;
        private long bytesRecv_ = 0L;
        /**
         * <pre>
         * Total bytes received during the invocation.
         * </pre>
         *
         * <code>uint64 bytes_recv = 2;</code>
         * @return The bytesRecv.
         */
        @java.lang.Override
        public long getBytesRecv() {
          return bytesRecv_;
        }

        public static final int PACKETS_SENT_FIELD_NUMBER = 3;
        private long packetsSent_ = 0L;
        /**
         * <pre>
         * Total packets sent during the invocation.
         * </pre>
         *
         * <code>uint64 packets_sent = 3;</code>
         * @return The packetsSent.
         */
        @java.lang.Override
        public long getPacketsSent() {
          return packetsSent_;
        }

        public static final int PACKETS_RECV_FIELD_NUMBER = 4;
        private long packetsRecv_ = 0L;
        /**
         * <pre>
         * Total packets received during the invocation.
         * </pre>
         *
         * <code>uint64 packets_recv = 4;</code>
         * @return The packetsRecv.
         */
        @java.lang.Override
        public long getPacketsRecv() {
          return packetsRecv_;
        }

        public static final int PEAK_BYTES_SENT_PER_SEC_FIELD_NUMBER = 5;
        private long peakBytesSentPerSec_ = 0L;
        /**
         * <pre>
         * Peak bytes/sec sent during the invocation.
         * </pre>
         *
         * <code>uint64 peak_bytes_sent_per_sec = 5;</code>
         * @return The peakBytesSentPerSec.
         */
        @java.lang.Override
        public long getPeakBytesSentPerSec() {
          return peakBytesSentPerSec_;
        }

        public static final int PEAK_BYTES_RECV_PER_SEC_FIELD_NUMBER = 6;
        private long peakBytesRecvPerSec_ = 0L;
        /**
         * <pre>
         * Peak bytes/sec received during the invocation.
         * </pre>
         *
         * <code>uint64 peak_bytes_recv_per_sec = 6;</code>
         * @return The peakBytesRecvPerSec.
         */
        @java.lang.Override
        public long getPeakBytesRecvPerSec() {
          return peakBytesRecvPerSec_;
        }

        public static final int PEAK_PACKETS_SENT_PER_SEC_FIELD_NUMBER = 7;
        private long peakPacketsSentPerSec_ = 0L;
        /**
         * <pre>
         * Peak packets/sec sent during the invocation.
         * </pre>
         *
         * <code>uint64 peak_packets_sent_per_sec = 7;</code>
         * @return The peakPacketsSentPerSec.
         */
        @java.lang.Override
        public long getPeakPacketsSentPerSec() {
          return peakPacketsSentPerSec_;
        }

        public static final int PEAK_PACKETS_RECV_PER_SEC_FIELD_NUMBER = 8;
        private long peakPacketsRecvPerSec_ = 0L;
        /**
         * <pre>
         * Peak packets/sec received during the invocation.
         * </pre>
         *
         * <code>uint64 peak_packets_recv_per_sec = 8;</code>
         * @return The peakPacketsRecvPerSec.
         */
        @java.lang.Override
        public long getPeakPacketsRecvPerSec() {
          return peakPacketsRecvPerSec_;
        }

        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 (bytesSent_ != 0L) {
            output.writeUInt64(1, bytesSent_);
          }
          if (bytesRecv_ != 0L) {
            output.writeUInt64(2, bytesRecv_);
          }
          if (packetsSent_ != 0L) {
            output.writeUInt64(3, packetsSent_);
          }
          if (packetsRecv_ != 0L) {
            output.writeUInt64(4, packetsRecv_);
          }
          if (peakBytesSentPerSec_ != 0L) {
            output.writeUInt64(5, peakBytesSentPerSec_);
          }
          if (peakBytesRecvPerSec_ != 0L) {
            output.writeUInt64(6, peakBytesRecvPerSec_);
          }
          if (peakPacketsSentPerSec_ != 0L) {
            output.writeUInt64(7, peakPacketsSentPerSec_);
          }
          if (peakPacketsRecvPerSec_ != 0L) {
            output.writeUInt64(8, peakPacketsRecvPerSec_);
          }
          getUnknownFields().writeTo(output);
        }

        @java.lang.Override
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;

          size = 0;
          if (bytesSent_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt64Size(1, bytesSent_);
          }
          if (bytesRecv_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt64Size(2, bytesRecv_);
          }
          if (packetsSent_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt64Size(3, packetsSent_);
          }
          if (packetsRecv_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt64Size(4, packetsRecv_);
          }
          if (peakBytesSentPerSec_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt64Size(5, peakBytesSentPerSec_);
          }
          if (peakBytesRecvPerSec_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt64Size(6, peakBytesRecvPerSec_);
          }
          if (peakPacketsSentPerSec_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt64Size(7, peakPacketsSentPerSec_);
          }
          if (peakPacketsRecvPerSec_ != 0L) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt64Size(8, peakPacketsRecvPerSec_);
          }
          size += getUnknownFields().getSerializedSize();
          memoizedSize = size;
          return size;
        }

        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats)) {
            return super.equals(obj);
          }
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats other = (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats) obj;

          if (getBytesSent()
              != other.getBytesSent()) return false;
          if (getBytesRecv()
              != other.getBytesRecv()) return false;
          if (getPacketsSent()
              != other.getPacketsSent()) return false;
          if (getPacketsRecv()
              != other.getPacketsRecv()) return false;
          if (getPeakBytesSentPerSec()
              != other.getPeakBytesSentPerSec()) return false;
          if (getPeakBytesRecvPerSec()
              != other.getPeakBytesRecvPerSec()) return false;
          if (getPeakPacketsSentPerSec()
              != other.getPeakPacketsSentPerSec()) return false;
          if (getPeakPacketsRecvPerSec()
              != other.getPeakPacketsRecvPerSec()) return false;
          if (!getUnknownFields().equals(other.getUnknownFields())) return false;
          return true;
        }

        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          hash = (37 * hash) + BYTES_SENT_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getBytesSent());
          hash = (37 * hash) + BYTES_RECV_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getBytesRecv());
          hash = (37 * hash) + PACKETS_SENT_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getPacketsSent());
          hash = (37 * hash) + PACKETS_RECV_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getPacketsRecv());
          hash = (37 * hash) + PEAK_BYTES_SENT_PER_SEC_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getPeakBytesSentPerSec());
          hash = (37 * hash) + PEAK_BYTES_RECV_PER_SEC_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getPeakBytesRecvPerSec());
          hash = (37 * hash) + PEAK_PACKETS_SENT_PER_SEC_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getPeakPacketsSentPerSec());
          hash = (37 * hash) + PEAK_PACKETS_RECV_PER_SEC_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getPeakPacketsRecvPerSec());
          hash = (29 * hash) + getUnknownFields().hashCode();
          memoizedHashCode = hash;
          return hash;
        }

        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats 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>
         * Information for all the network traffic going on on the host machine
         * during the invocation.
         * </pre>
         *
         * Protobuf type {@code build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats)
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStatsOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_NetworkMetrics_SystemNetworkStats_descriptor;
          }

          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_NetworkMetrics_SystemNetworkStats_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats.Builder.class);
          }

          // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats.newBuilder()
          private Builder() {

          }

          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);

          }
          @java.lang.Override
          public Builder clear() {
            super.clear();
            bitField0_ = 0;
            bytesSent_ = 0L;
            bytesRecv_ = 0L;
            packetsSent_ = 0L;
            packetsRecv_ = 0L;
            peakBytesSentPerSec_ = 0L;
            peakBytesRecvPerSec_ = 0L;
            peakPacketsSentPerSec_ = 0L;
            peakPacketsRecvPerSec_ = 0L;
            return this;
          }

          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_NetworkMetrics_SystemNetworkStats_descriptor;
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats getDefaultInstanceForType() {
            return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats.getDefaultInstance();
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats build() {
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }

          @java.lang.Override
          public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats buildPartial() {
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats(this);
            if (bitField0_ != 0) { buildPartial0(result); }
            onBuilt();
            return result;
          }

          private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats result) {
            int from_bitField0_ = bitField0_;
            if (((from_bitField0_ & 0x00000001) != 0)) {
              result.bytesSent_ = bytesSent_;
            }
            if (((from_bitField0_ & 0x00000002) != 0)) {
              result.bytesRecv_ = bytesRecv_;
            }
            if (((from_bitField0_ & 0x00000004) != 0)) {
              result.packetsSent_ = packetsSent_;
            }
            if (((from_bitField0_ & 0x00000008) != 0)) {
              result.packetsRecv_ = packetsRecv_;
            }
            if (((from_bitField0_ & 0x00000010) != 0)) {
              result.peakBytesSentPerSec_ = peakBytesSentPerSec_;
            }
            if (((from_bitField0_ & 0x00000020) != 0)) {
              result.peakBytesRecvPerSec_ = peakBytesRecvPerSec_;
            }
            if (((from_bitField0_ & 0x00000040) != 0)) {
              result.peakPacketsSentPerSec_ = peakPacketsSentPerSec_;
            }
            if (((from_bitField0_ & 0x00000080) != 0)) {
              result.peakPacketsRecvPerSec_ = peakPacketsRecvPerSec_;
            }
          }

          @java.lang.Override
          public Builder clone() {
            return super.clone();
          }
          @java.lang.Override
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return super.setField(field, value);
          }
          @java.lang.Override
          public Builder clearField(
              com.google.protobuf.Descriptors.FieldDescriptor field) {
            return super.clearField(field);
          }
          @java.lang.Override
          public Builder clearOneof(
              com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return super.clearOneof(oneof);
          }
          @java.lang.Override
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index, java.lang.Object value) {
            return super.setRepeatedField(field, index, value);
          }
          @java.lang.Override
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return super.addRepeatedField(field, value);
          }
          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats) {
              return mergeFrom((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }

          public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats other) {
            if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats.getDefaultInstance()) return this;
            if (other.getBytesSent() != 0L) {
              setBytesSent(other.getBytesSent());
            }
            if (other.getBytesRecv() != 0L) {
              setBytesRecv(other.getBytesRecv());
            }
            if (other.getPacketsSent() != 0L) {
              setPacketsSent(other.getPacketsSent());
            }
            if (other.getPacketsRecv() != 0L) {
              setPacketsRecv(other.getPacketsRecv());
            }
            if (other.getPeakBytesSentPerSec() != 0L) {
              setPeakBytesSentPerSec(other.getPeakBytesSentPerSec());
            }
            if (other.getPeakBytesRecvPerSec() != 0L) {
              setPeakBytesRecvPerSec(other.getPeakBytesRecvPerSec());
            }
            if (other.getPeakPacketsSentPerSec() != 0L) {
              setPeakPacketsSentPerSec(other.getPeakPacketsSentPerSec());
            }
            if (other.getPeakPacketsRecvPerSec() != 0L) {
              setPeakPacketsRecvPerSec(other.getPeakPacketsRecvPerSec());
            }
            this.mergeUnknownFields(other.getUnknownFields());
            onChanged();
            return this;
          }

          @java.lang.Override
          public final boolean isInitialized() {
            return true;
          }

          @java.lang.Override
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            if (extensionRegistry == null) {
              throw new java.lang.NullPointerException();
            }
            try {
              boolean done = false;
              while (!done) {
                int tag = input.readTag();
                switch (tag) {
                  case 0:
                    done = true;
                    break;
                  case 8: {
                    bytesSent_ = input.readUInt64();
                    bitField0_ |= 0x00000001;
                    break;
                  } // case 8
                  case 16: {
                    bytesRecv_ = input.readUInt64();
                    bitField0_ |= 0x00000002;
                    break;
                  } // case 16
                  case 24: {
                    packetsSent_ = input.readUInt64();
                    bitField0_ |= 0x00000004;
                    break;
                  } // case 24
                  case 32: {
                    packetsRecv_ = input.readUInt64();
                    bitField0_ |= 0x00000008;
                    break;
                  } // case 32
                  case 40: {
                    peakBytesSentPerSec_ = input.readUInt64();
                    bitField0_ |= 0x00000010;
                    break;
                  } // case 40
                  case 48: {
                    peakBytesRecvPerSec_ = input.readUInt64();
                    bitField0_ |= 0x00000020;
                    break;
                  } // case 48
                  case 56: {
                    peakPacketsSentPerSec_ = input.readUInt64();
                    bitField0_ |= 0x00000040;
                    break;
                  } // case 56
                  case 64: {
                    peakPacketsRecvPerSec_ = input.readUInt64();
                    bitField0_ |= 0x00000080;
                    break;
                  } // case 64
                  default: {
                    if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                      done = true; // was an endgroup tag
                    }
                    break;
                  } // default:
                } // switch (tag)
              } // while (!done)
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.unwrapIOException();
            } finally {
              onChanged();
            } // finally
            return this;
          }
          private int bitField0_;

          private long bytesSent_ ;
          /**
           * <pre>
           * Total bytes sent during the invocation.
           * </pre>
           *
           * <code>uint64 bytes_sent = 1;</code>
           * @return The bytesSent.
           */
          @java.lang.Override
          public long getBytesSent() {
            return bytesSent_;
          }
          /**
           * <pre>
           * Total bytes sent during the invocation.
           * </pre>
           *
           * <code>uint64 bytes_sent = 1;</code>
           * @param value The bytesSent to set.
           * @return This builder for chaining.
           */
          public Builder setBytesSent(long value) {
            
            bytesSent_ = value;
            bitField0_ |= 0x00000001;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Total bytes sent during the invocation.
           * </pre>
           *
           * <code>uint64 bytes_sent = 1;</code>
           * @return This builder for chaining.
           */
          public Builder clearBytesSent() {
            bitField0_ = (bitField0_ & ~0x00000001);
            bytesSent_ = 0L;
            onChanged();
            return this;
          }

          private long bytesRecv_ ;
          /**
           * <pre>
           * Total bytes received during the invocation.
           * </pre>
           *
           * <code>uint64 bytes_recv = 2;</code>
           * @return The bytesRecv.
           */
          @java.lang.Override
          public long getBytesRecv() {
            return bytesRecv_;
          }
          /**
           * <pre>
           * Total bytes received during the invocation.
           * </pre>
           *
           * <code>uint64 bytes_recv = 2;</code>
           * @param value The bytesRecv to set.
           * @return This builder for chaining.
           */
          public Builder setBytesRecv(long value) {
            
            bytesRecv_ = value;
            bitField0_ |= 0x00000002;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Total bytes received during the invocation.
           * </pre>
           *
           * <code>uint64 bytes_recv = 2;</code>
           * @return This builder for chaining.
           */
          public Builder clearBytesRecv() {
            bitField0_ = (bitField0_ & ~0x00000002);
            bytesRecv_ = 0L;
            onChanged();
            return this;
          }

          private long packetsSent_ ;
          /**
           * <pre>
           * Total packets sent during the invocation.
           * </pre>
           *
           * <code>uint64 packets_sent = 3;</code>
           * @return The packetsSent.
           */
          @java.lang.Override
          public long getPacketsSent() {
            return packetsSent_;
          }
          /**
           * <pre>
           * Total packets sent during the invocation.
           * </pre>
           *
           * <code>uint64 packets_sent = 3;</code>
           * @param value The packetsSent to set.
           * @return This builder for chaining.
           */
          public Builder setPacketsSent(long value) {
            
            packetsSent_ = value;
            bitField0_ |= 0x00000004;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Total packets sent during the invocation.
           * </pre>
           *
           * <code>uint64 packets_sent = 3;</code>
           * @return This builder for chaining.
           */
          public Builder clearPacketsSent() {
            bitField0_ = (bitField0_ & ~0x00000004);
            packetsSent_ = 0L;
            onChanged();
            return this;
          }

          private long packetsRecv_ ;
          /**
           * <pre>
           * Total packets received during the invocation.
           * </pre>
           *
           * <code>uint64 packets_recv = 4;</code>
           * @return The packetsRecv.
           */
          @java.lang.Override
          public long getPacketsRecv() {
            return packetsRecv_;
          }
          /**
           * <pre>
           * Total packets received during the invocation.
           * </pre>
           *
           * <code>uint64 packets_recv = 4;</code>
           * @param value The packetsRecv to set.
           * @return This builder for chaining.
           */
          public Builder setPacketsRecv(long value) {
            
            packetsRecv_ = value;
            bitField0_ |= 0x00000008;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Total packets received during the invocation.
           * </pre>
           *
           * <code>uint64 packets_recv = 4;</code>
           * @return This builder for chaining.
           */
          public Builder clearPacketsRecv() {
            bitField0_ = (bitField0_ & ~0x00000008);
            packetsRecv_ = 0L;
            onChanged();
            return this;
          }

          private long peakBytesSentPerSec_ ;
          /**
           * <pre>
           * Peak bytes/sec sent during the invocation.
           * </pre>
           *
           * <code>uint64 peak_bytes_sent_per_sec = 5;</code>
           * @return The peakBytesSentPerSec.
           */
          @java.lang.Override
          public long getPeakBytesSentPerSec() {
            return peakBytesSentPerSec_;
          }
          /**
           * <pre>
           * Peak bytes/sec sent during the invocation.
           * </pre>
           *
           * <code>uint64 peak_bytes_sent_per_sec = 5;</code>
           * @param value The peakBytesSentPerSec to set.
           * @return This builder for chaining.
           */
          public Builder setPeakBytesSentPerSec(long value) {
            
            peakBytesSentPerSec_ = value;
            bitField0_ |= 0x00000010;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Peak bytes/sec sent during the invocation.
           * </pre>
           *
           * <code>uint64 peak_bytes_sent_per_sec = 5;</code>
           * @return This builder for chaining.
           */
          public Builder clearPeakBytesSentPerSec() {
            bitField0_ = (bitField0_ & ~0x00000010);
            peakBytesSentPerSec_ = 0L;
            onChanged();
            return this;
          }

          private long peakBytesRecvPerSec_ ;
          /**
           * <pre>
           * Peak bytes/sec received during the invocation.
           * </pre>
           *
           * <code>uint64 peak_bytes_recv_per_sec = 6;</code>
           * @return The peakBytesRecvPerSec.
           */
          @java.lang.Override
          public long getPeakBytesRecvPerSec() {
            return peakBytesRecvPerSec_;
          }
          /**
           * <pre>
           * Peak bytes/sec received during the invocation.
           * </pre>
           *
           * <code>uint64 peak_bytes_recv_per_sec = 6;</code>
           * @param value The peakBytesRecvPerSec to set.
           * @return This builder for chaining.
           */
          public Builder setPeakBytesRecvPerSec(long value) {
            
            peakBytesRecvPerSec_ = value;
            bitField0_ |= 0x00000020;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Peak bytes/sec received during the invocation.
           * </pre>
           *
           * <code>uint64 peak_bytes_recv_per_sec = 6;</code>
           * @return This builder for chaining.
           */
          public Builder clearPeakBytesRecvPerSec() {
            bitField0_ = (bitField0_ & ~0x00000020);
            peakBytesRecvPerSec_ = 0L;
            onChanged();
            return this;
          }

          private long peakPacketsSentPerSec_ ;
          /**
           * <pre>
           * Peak packets/sec sent during the invocation.
           * </pre>
           *
           * <code>uint64 peak_packets_sent_per_sec = 7;</code>
           * @return The peakPacketsSentPerSec.
           */
          @java.lang.Override
          public long getPeakPacketsSentPerSec() {
            return peakPacketsSentPerSec_;
          }
          /**
           * <pre>
           * Peak packets/sec sent during the invocation.
           * </pre>
           *
           * <code>uint64 peak_packets_sent_per_sec = 7;</code>
           * @param value The peakPacketsSentPerSec to set.
           * @return This builder for chaining.
           */
          public Builder setPeakPacketsSentPerSec(long value) {
            
            peakPacketsSentPerSec_ = value;
            bitField0_ |= 0x00000040;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Peak packets/sec sent during the invocation.
           * </pre>
           *
           * <code>uint64 peak_packets_sent_per_sec = 7;</code>
           * @return This builder for chaining.
           */
          public Builder clearPeakPacketsSentPerSec() {
            bitField0_ = (bitField0_ & ~0x00000040);
            peakPacketsSentPerSec_ = 0L;
            onChanged();
            return this;
          }

          private long peakPacketsRecvPerSec_ ;
          /**
           * <pre>
           * Peak packets/sec received during the invocation.
           * </pre>
           *
           * <code>uint64 peak_packets_recv_per_sec = 8;</code>
           * @return The peakPacketsRecvPerSec.
           */
          @java.lang.Override
          public long getPeakPacketsRecvPerSec() {
            return peakPacketsRecvPerSec_;
          }
          /**
           * <pre>
           * Peak packets/sec received during the invocation.
           * </pre>
           *
           * <code>uint64 peak_packets_recv_per_sec = 8;</code>
           * @param value The peakPacketsRecvPerSec to set.
           * @return This builder for chaining.
           */
          public Builder setPeakPacketsRecvPerSec(long value) {
            
            peakPacketsRecvPerSec_ = value;
            bitField0_ |= 0x00000080;
            onChanged();
            return this;
          }
          /**
           * <pre>
           * Peak packets/sec received during the invocation.
           * </pre>
           *
           * <code>uint64 peak_packets_recv_per_sec = 8;</code>
           * @return This builder for chaining.
           */
          public Builder clearPeakPacketsRecvPerSec() {
            bitField0_ = (bitField0_ & ~0x00000080);
            peakPacketsRecvPerSec_ = 0L;
            onChanged();
            return this;
          }
          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }

          @java.lang.Override
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }


          // @@protoc_insertion_point(builder_scope:build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats)
        }

        // @@protoc_insertion_point(class_scope:build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats)
        private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats();
        }

        public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

        private static final com.google.protobuf.Parser<SystemNetworkStats>
            PARSER = new com.google.protobuf.AbstractParser<SystemNetworkStats>() {
          @java.lang.Override
          public SystemNetworkStats parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

        public static com.google.protobuf.Parser<SystemNetworkStats> parser() {
          return PARSER;
        }

        @java.lang.Override
        public com.google.protobuf.Parser<SystemNetworkStats> getParserForType() {
          return PARSER;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }

      }

      public static final int SYSTEM_NETWORK_STATS_FIELD_NUMBER = 1;
      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats systemNetworkStats_;
      /**
       * <code>.build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats system_network_stats = 1;</code>
       * @return Whether the systemNetworkStats field is set.
       */
      @java.lang.Override
      public boolean hasSystemNetworkStats() {
        return systemNetworkStats_ != null;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats system_network_stats = 1;</code>
       * @return The systemNetworkStats.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats getSystemNetworkStats() {
        return systemNetworkStats_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats.getDefaultInstance() : systemNetworkStats_;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats system_network_stats = 1;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStatsOrBuilder getSystemNetworkStatsOrBuilder() {
        return systemNetworkStats_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats.getDefaultInstance() : systemNetworkStats_;
      }

      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 (systemNetworkStats_ != null) {
          output.writeMessage(1, getSystemNetworkStats());
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (systemNetworkStats_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getSystemNetworkStats());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics)) {
          return super.equals(obj);
        }
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics other = (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics) obj;

        if (hasSystemNetworkStats() != other.hasSystemNetworkStats()) return false;
        if (hasSystemNetworkStats()) {
          if (!getSystemNetworkStats()
              .equals(other.getSystemNetworkStats())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasSystemNetworkStats()) {
          hash = (37 * hash) + SYSTEM_NETWORK_STATS_FIELD_NUMBER;
          hash = (53 * hash) + getSystemNetworkStats().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics 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>
       * Information about host network.
       * </pre>
       *
       * Protobuf type {@code build_event_stream.BuildMetrics.NetworkMetrics}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:build_event_stream.BuildMetrics.NetworkMetrics)
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetricsOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_NetworkMetrics_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_NetworkMetrics_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.Builder.class);
        }

        // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.newBuilder()
        private Builder() {

        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);

        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          systemNetworkStats_ = null;
          if (systemNetworkStatsBuilder_ != null) {
            systemNetworkStatsBuilder_.dispose();
            systemNetworkStatsBuilder_ = null;
          }
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_NetworkMetrics_descriptor;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics getDefaultInstanceForType() {
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.getDefaultInstance();
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics build() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics buildPartial() {
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.systemNetworkStats_ = systemNetworkStatsBuilder_ == null
                ? systemNetworkStats_
                : systemNetworkStatsBuilder_.build();
          }
        }

        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics) {
            return mergeFrom((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics other) {
          if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.getDefaultInstance()) return this;
          if (other.hasSystemNetworkStats()) {
            mergeSystemNetworkStats(other.getSystemNetworkStats());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  input.readMessage(
                      getSystemNetworkStatsFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats systemNetworkStats_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStatsOrBuilder> systemNetworkStatsBuilder_;
        /**
         * <code>.build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats system_network_stats = 1;</code>
         * @return Whether the systemNetworkStats field is set.
         */
        public boolean hasSystemNetworkStats() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>.build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats system_network_stats = 1;</code>
         * @return The systemNetworkStats.
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats getSystemNetworkStats() {
          if (systemNetworkStatsBuilder_ == null) {
            return systemNetworkStats_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats.getDefaultInstance() : systemNetworkStats_;
          } else {
            return systemNetworkStatsBuilder_.getMessage();
          }
        }
        /**
         * <code>.build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats system_network_stats = 1;</code>
         */
        public Builder setSystemNetworkStats(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats value) {
          if (systemNetworkStatsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            systemNetworkStats_ = value;
          } else {
            systemNetworkStatsBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats system_network_stats = 1;</code>
         */
        public Builder setSystemNetworkStats(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats.Builder builderForValue) {
          if (systemNetworkStatsBuilder_ == null) {
            systemNetworkStats_ = builderForValue.build();
          } else {
            systemNetworkStatsBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats system_network_stats = 1;</code>
         */
        public Builder mergeSystemNetworkStats(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats value) {
          if (systemNetworkStatsBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
              systemNetworkStats_ != null &&
              systemNetworkStats_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats.getDefaultInstance()) {
              getSystemNetworkStatsBuilder().mergeFrom(value);
            } else {
              systemNetworkStats_ = value;
            }
          } else {
            systemNetworkStatsBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats system_network_stats = 1;</code>
         */
        public Builder clearSystemNetworkStats() {
          bitField0_ = (bitField0_ & ~0x00000001);
          systemNetworkStats_ = null;
          if (systemNetworkStatsBuilder_ != null) {
            systemNetworkStatsBuilder_.dispose();
            systemNetworkStatsBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * <code>.build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats system_network_stats = 1;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats.Builder getSystemNetworkStatsBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getSystemNetworkStatsFieldBuilder().getBuilder();
        }
        /**
         * <code>.build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats system_network_stats = 1;</code>
         */
        public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStatsOrBuilder getSystemNetworkStatsOrBuilder() {
          if (systemNetworkStatsBuilder_ != null) {
            return systemNetworkStatsBuilder_.getMessageOrBuilder();
          } else {
            return systemNetworkStats_ == null ?
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats.getDefaultInstance() : systemNetworkStats_;
          }
        }
        /**
         * <code>.build_event_stream.BuildMetrics.NetworkMetrics.SystemNetworkStats system_network_stats = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStatsOrBuilder> 
            getSystemNetworkStatsFieldBuilder() {
          if (systemNetworkStatsBuilder_ == null) {
            systemNetworkStatsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStats.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.SystemNetworkStatsOrBuilder>(
                    getSystemNetworkStats(),
                    getParentForChildren(),
                    isClean());
            systemNetworkStats_ = null;
          }
          return systemNetworkStatsBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }


        // @@protoc_insertion_point(builder_scope:build_event_stream.BuildMetrics.NetworkMetrics)
      }

      // @@protoc_insertion_point(class_scope:build_event_stream.BuildMetrics.NetworkMetrics)
      private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics();
      }

      public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<NetworkMetrics>
          PARSER = new com.google.protobuf.AbstractParser<NetworkMetrics>() {
        @java.lang.Override
        public NetworkMetrics parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser<NetworkMetrics> parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser<NetworkMetrics> getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int ACTION_SUMMARY_FIELD_NUMBER = 1;
    private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary actionSummary_;
    /**
     * <code>.build_event_stream.BuildMetrics.ActionSummary action_summary = 1;</code>
     * @return Whether the actionSummary field is set.
     */
    @java.lang.Override
    public boolean hasActionSummary() {
      return actionSummary_ != null;
    }
    /**
     * <code>.build_event_stream.BuildMetrics.ActionSummary action_summary = 1;</code>
     * @return The actionSummary.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary getActionSummary() {
      return actionSummary_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.getDefaultInstance() : actionSummary_;
    }
    /**
     * <code>.build_event_stream.BuildMetrics.ActionSummary action_summary = 1;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummaryOrBuilder getActionSummaryOrBuilder() {
      return actionSummary_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.getDefaultInstance() : actionSummary_;
    }

    public static final int MEMORY_METRICS_FIELD_NUMBER = 2;
    private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics memoryMetrics_;
    /**
     * <code>.build_event_stream.BuildMetrics.MemoryMetrics memory_metrics = 2;</code>
     * @return Whether the memoryMetrics field is set.
     */
    @java.lang.Override
    public boolean hasMemoryMetrics() {
      return memoryMetrics_ != null;
    }
    /**
     * <code>.build_event_stream.BuildMetrics.MemoryMetrics memory_metrics = 2;</code>
     * @return The memoryMetrics.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics getMemoryMetrics() {
      return memoryMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.getDefaultInstance() : memoryMetrics_;
    }
    /**
     * <code>.build_event_stream.BuildMetrics.MemoryMetrics memory_metrics = 2;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetricsOrBuilder getMemoryMetricsOrBuilder() {
      return memoryMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.getDefaultInstance() : memoryMetrics_;
    }

    public static final int TARGET_METRICS_FIELD_NUMBER = 3;
    private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics targetMetrics_;
    /**
     * <code>.build_event_stream.BuildMetrics.TargetMetrics target_metrics = 3;</code>
     * @return Whether the targetMetrics field is set.
     */
    @java.lang.Override
    public boolean hasTargetMetrics() {
      return targetMetrics_ != null;
    }
    /**
     * <code>.build_event_stream.BuildMetrics.TargetMetrics target_metrics = 3;</code>
     * @return The targetMetrics.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics getTargetMetrics() {
      return targetMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics.getDefaultInstance() : targetMetrics_;
    }
    /**
     * <code>.build_event_stream.BuildMetrics.TargetMetrics target_metrics = 3;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetricsOrBuilder getTargetMetricsOrBuilder() {
      return targetMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics.getDefaultInstance() : targetMetrics_;
    }

    public static final int PACKAGE_METRICS_FIELD_NUMBER = 4;
    private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics packageMetrics_;
    /**
     * <code>.build_event_stream.BuildMetrics.PackageMetrics package_metrics = 4;</code>
     * @return Whether the packageMetrics field is set.
     */
    @java.lang.Override
    public boolean hasPackageMetrics() {
      return packageMetrics_ != null;
    }
    /**
     * <code>.build_event_stream.BuildMetrics.PackageMetrics package_metrics = 4;</code>
     * @return The packageMetrics.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics getPackageMetrics() {
      return packageMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics.getDefaultInstance() : packageMetrics_;
    }
    /**
     * <code>.build_event_stream.BuildMetrics.PackageMetrics package_metrics = 4;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetricsOrBuilder getPackageMetricsOrBuilder() {
      return packageMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics.getDefaultInstance() : packageMetrics_;
    }

    public static final int TIMING_METRICS_FIELD_NUMBER = 5;
    private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics timingMetrics_;
    /**
     * <code>.build_event_stream.BuildMetrics.TimingMetrics timing_metrics = 5;</code>
     * @return Whether the timingMetrics field is set.
     */
    @java.lang.Override
    public boolean hasTimingMetrics() {
      return timingMetrics_ != null;
    }
    /**
     * <code>.build_event_stream.BuildMetrics.TimingMetrics timing_metrics = 5;</code>
     * @return The timingMetrics.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics getTimingMetrics() {
      return timingMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics.getDefaultInstance() : timingMetrics_;
    }
    /**
     * <code>.build_event_stream.BuildMetrics.TimingMetrics timing_metrics = 5;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetricsOrBuilder getTimingMetricsOrBuilder() {
      return timingMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics.getDefaultInstance() : timingMetrics_;
    }

    public static final int CUMULATIVE_METRICS_FIELD_NUMBER = 6;
    private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics cumulativeMetrics_;
    /**
     * <code>.build_event_stream.BuildMetrics.CumulativeMetrics cumulative_metrics = 6;</code>
     * @return Whether the cumulativeMetrics field is set.
     */
    @java.lang.Override
    public boolean hasCumulativeMetrics() {
      return cumulativeMetrics_ != null;
    }
    /**
     * <code>.build_event_stream.BuildMetrics.CumulativeMetrics cumulative_metrics = 6;</code>
     * @return The cumulativeMetrics.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics getCumulativeMetrics() {
      return cumulativeMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics.getDefaultInstance() : cumulativeMetrics_;
    }
    /**
     * <code>.build_event_stream.BuildMetrics.CumulativeMetrics cumulative_metrics = 6;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetricsOrBuilder getCumulativeMetricsOrBuilder() {
      return cumulativeMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics.getDefaultInstance() : cumulativeMetrics_;
    }

    public static final int ARTIFACT_METRICS_FIELD_NUMBER = 7;
    private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics artifactMetrics_;
    /**
     * <code>.build_event_stream.BuildMetrics.ArtifactMetrics artifact_metrics = 7;</code>
     * @return Whether the artifactMetrics field is set.
     */
    @java.lang.Override
    public boolean hasArtifactMetrics() {
      return artifactMetrics_ != null;
    }
    /**
     * <code>.build_event_stream.BuildMetrics.ArtifactMetrics artifact_metrics = 7;</code>
     * @return The artifactMetrics.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics getArtifactMetrics() {
      return artifactMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.getDefaultInstance() : artifactMetrics_;
    }
    /**
     * <code>.build_event_stream.BuildMetrics.ArtifactMetrics artifact_metrics = 7;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetricsOrBuilder getArtifactMetricsOrBuilder() {
      return artifactMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.getDefaultInstance() : artifactMetrics_;
    }

    public static final int BUILD_GRAPH_METRICS_FIELD_NUMBER = 8;
    private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics buildGraphMetrics_;
    /**
     * <code>.build_event_stream.BuildMetrics.BuildGraphMetrics build_graph_metrics = 8;</code>
     * @return Whether the buildGraphMetrics field is set.
     */
    @java.lang.Override
    public boolean hasBuildGraphMetrics() {
      return buildGraphMetrics_ != null;
    }
    /**
     * <code>.build_event_stream.BuildMetrics.BuildGraphMetrics build_graph_metrics = 8;</code>
     * @return The buildGraphMetrics.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics getBuildGraphMetrics() {
      return buildGraphMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics.getDefaultInstance() : buildGraphMetrics_;
    }
    /**
     * <code>.build_event_stream.BuildMetrics.BuildGraphMetrics build_graph_metrics = 8;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetricsOrBuilder getBuildGraphMetricsOrBuilder() {
      return buildGraphMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics.getDefaultInstance() : buildGraphMetrics_;
    }

    public static final int WORKER_METRICS_FIELD_NUMBER = 9;
    @SuppressWarnings("serial")
    private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics> workerMetrics_;
    /**
     * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics> getWorkerMetricsList() {
      return workerMetrics_;
    }
    /**
     * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetricsOrBuilder> 
        getWorkerMetricsOrBuilderList() {
      return workerMetrics_;
    }
    /**
     * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
     */
    @java.lang.Override
    public int getWorkerMetricsCount() {
      return workerMetrics_.size();
    }
    /**
     * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics getWorkerMetrics(int index) {
      return workerMetrics_.get(index);
    }
    /**
     * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetricsOrBuilder getWorkerMetricsOrBuilder(
        int index) {
      return workerMetrics_.get(index);
    }

    public static final int NETWORK_METRICS_FIELD_NUMBER = 10;
    private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics networkMetrics_;
    /**
     * <code>.build_event_stream.BuildMetrics.NetworkMetrics network_metrics = 10;</code>
     * @return Whether the networkMetrics field is set.
     */
    @java.lang.Override
    public boolean hasNetworkMetrics() {
      return networkMetrics_ != null;
    }
    /**
     * <code>.build_event_stream.BuildMetrics.NetworkMetrics network_metrics = 10;</code>
     * @return The networkMetrics.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics getNetworkMetrics() {
      return networkMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.getDefaultInstance() : networkMetrics_;
    }
    /**
     * <code>.build_event_stream.BuildMetrics.NetworkMetrics network_metrics = 10;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetricsOrBuilder getNetworkMetricsOrBuilder() {
      return networkMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.getDefaultInstance() : networkMetrics_;
    }

    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 (actionSummary_ != null) {
        output.writeMessage(1, getActionSummary());
      }
      if (memoryMetrics_ != null) {
        output.writeMessage(2, getMemoryMetrics());
      }
      if (targetMetrics_ != null) {
        output.writeMessage(3, getTargetMetrics());
      }
      if (packageMetrics_ != null) {
        output.writeMessage(4, getPackageMetrics());
      }
      if (timingMetrics_ != null) {
        output.writeMessage(5, getTimingMetrics());
      }
      if (cumulativeMetrics_ != null) {
        output.writeMessage(6, getCumulativeMetrics());
      }
      if (artifactMetrics_ != null) {
        output.writeMessage(7, getArtifactMetrics());
      }
      if (buildGraphMetrics_ != null) {
        output.writeMessage(8, getBuildGraphMetrics());
      }
      for (int i = 0; i < workerMetrics_.size(); i++) {
        output.writeMessage(9, workerMetrics_.get(i));
      }
      if (networkMetrics_ != null) {
        output.writeMessage(10, getNetworkMetrics());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (actionSummary_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getActionSummary());
      }
      if (memoryMetrics_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getMemoryMetrics());
      }
      if (targetMetrics_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getTargetMetrics());
      }
      if (packageMetrics_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getPackageMetrics());
      }
      if (timingMetrics_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getTimingMetrics());
      }
      if (cumulativeMetrics_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getCumulativeMetrics());
      }
      if (artifactMetrics_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getArtifactMetrics());
      }
      if (buildGraphMetrics_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getBuildGraphMetrics());
      }
      for (int i = 0; i < workerMetrics_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, workerMetrics_.get(i));
      }
      if (networkMetrics_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getNetworkMetrics());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics other = (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics) obj;

      if (hasActionSummary() != other.hasActionSummary()) return false;
      if (hasActionSummary()) {
        if (!getActionSummary()
            .equals(other.getActionSummary())) return false;
      }
      if (hasMemoryMetrics() != other.hasMemoryMetrics()) return false;
      if (hasMemoryMetrics()) {
        if (!getMemoryMetrics()
            .equals(other.getMemoryMetrics())) return false;
      }
      if (hasTargetMetrics() != other.hasTargetMetrics()) return false;
      if (hasTargetMetrics()) {
        if (!getTargetMetrics()
            .equals(other.getTargetMetrics())) return false;
      }
      if (hasPackageMetrics() != other.hasPackageMetrics()) return false;
      if (hasPackageMetrics()) {
        if (!getPackageMetrics()
            .equals(other.getPackageMetrics())) return false;
      }
      if (hasTimingMetrics() != other.hasTimingMetrics()) return false;
      if (hasTimingMetrics()) {
        if (!getTimingMetrics()
            .equals(other.getTimingMetrics())) return false;
      }
      if (hasCumulativeMetrics() != other.hasCumulativeMetrics()) return false;
      if (hasCumulativeMetrics()) {
        if (!getCumulativeMetrics()
            .equals(other.getCumulativeMetrics())) return false;
      }
      if (hasArtifactMetrics() != other.hasArtifactMetrics()) return false;
      if (hasArtifactMetrics()) {
        if (!getArtifactMetrics()
            .equals(other.getArtifactMetrics())) return false;
      }
      if (hasBuildGraphMetrics() != other.hasBuildGraphMetrics()) return false;
      if (hasBuildGraphMetrics()) {
        if (!getBuildGraphMetrics()
            .equals(other.getBuildGraphMetrics())) return false;
      }
      if (!getWorkerMetricsList()
          .equals(other.getWorkerMetricsList())) return false;
      if (hasNetworkMetrics() != other.hasNetworkMetrics()) return false;
      if (hasNetworkMetrics()) {
        if (!getNetworkMetrics()
            .equals(other.getNetworkMetrics())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasActionSummary()) {
        hash = (37 * hash) + ACTION_SUMMARY_FIELD_NUMBER;
        hash = (53 * hash) + getActionSummary().hashCode();
      }
      if (hasMemoryMetrics()) {
        hash = (37 * hash) + MEMORY_METRICS_FIELD_NUMBER;
        hash = (53 * hash) + getMemoryMetrics().hashCode();
      }
      if (hasTargetMetrics()) {
        hash = (37 * hash) + TARGET_METRICS_FIELD_NUMBER;
        hash = (53 * hash) + getTargetMetrics().hashCode();
      }
      if (hasPackageMetrics()) {
        hash = (37 * hash) + PACKAGE_METRICS_FIELD_NUMBER;
        hash = (53 * hash) + getPackageMetrics().hashCode();
      }
      if (hasTimingMetrics()) {
        hash = (37 * hash) + TIMING_METRICS_FIELD_NUMBER;
        hash = (53 * hash) + getTimingMetrics().hashCode();
      }
      if (hasCumulativeMetrics()) {
        hash = (37 * hash) + CUMULATIVE_METRICS_FIELD_NUMBER;
        hash = (53 * hash) + getCumulativeMetrics().hashCode();
      }
      if (hasArtifactMetrics()) {
        hash = (37 * hash) + ARTIFACT_METRICS_FIELD_NUMBER;
        hash = (53 * hash) + getArtifactMetrics().hashCode();
      }
      if (hasBuildGraphMetrics()) {
        hash = (37 * hash) + BUILD_GRAPH_METRICS_FIELD_NUMBER;
        hash = (53 * hash) + getBuildGraphMetrics().hashCode();
      }
      if (getWorkerMetricsCount() > 0) {
        hash = (37 * hash) + WORKER_METRICS_FIELD_NUMBER;
        hash = (53 * hash) + getWorkerMetricsList().hashCode();
      }
      if (hasNetworkMetrics()) {
        hash = (37 * hash) + NETWORK_METRICS_FIELD_NUMBER;
        hash = (53 * hash) + getNetworkMetrics().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics 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.buildeventstream.BuildEventStreamProtos.BuildMetrics 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 build_event_stream.BuildMetrics}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.BuildMetrics)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetricsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        actionSummary_ = null;
        if (actionSummaryBuilder_ != null) {
          actionSummaryBuilder_.dispose();
          actionSummaryBuilder_ = null;
        }
        memoryMetrics_ = null;
        if (memoryMetricsBuilder_ != null) {
          memoryMetricsBuilder_.dispose();
          memoryMetricsBuilder_ = null;
        }
        targetMetrics_ = null;
        if (targetMetricsBuilder_ != null) {
          targetMetricsBuilder_.dispose();
          targetMetricsBuilder_ = null;
        }
        packageMetrics_ = null;
        if (packageMetricsBuilder_ != null) {
          packageMetricsBuilder_.dispose();
          packageMetricsBuilder_ = null;
        }
        timingMetrics_ = null;
        if (timingMetricsBuilder_ != null) {
          timingMetricsBuilder_.dispose();
          timingMetricsBuilder_ = null;
        }
        cumulativeMetrics_ = null;
        if (cumulativeMetricsBuilder_ != null) {
          cumulativeMetricsBuilder_.dispose();
          cumulativeMetricsBuilder_ = null;
        }
        artifactMetrics_ = null;
        if (artifactMetricsBuilder_ != null) {
          artifactMetricsBuilder_.dispose();
          artifactMetricsBuilder_ = null;
        }
        buildGraphMetrics_ = null;
        if (buildGraphMetricsBuilder_ != null) {
          buildGraphMetricsBuilder_.dispose();
          buildGraphMetricsBuilder_ = null;
        }
        if (workerMetricsBuilder_ == null) {
          workerMetrics_ = java.util.Collections.emptyList();
        } else {
          workerMetrics_ = null;
          workerMetricsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        networkMetrics_ = null;
        if (networkMetricsBuilder_ != null) {
          networkMetricsBuilder_.dispose();
          networkMetricsBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildMetrics_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics build() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics result) {
        if (workerMetricsBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0)) {
            workerMetrics_ = java.util.Collections.unmodifiableList(workerMetrics_);
            bitField0_ = (bitField0_ & ~0x00000100);
          }
          result.workerMetrics_ = workerMetrics_;
        } else {
          result.workerMetrics_ = workerMetricsBuilder_.build();
        }
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.actionSummary_ = actionSummaryBuilder_ == null
              ? actionSummary_
              : actionSummaryBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.memoryMetrics_ = memoryMetricsBuilder_ == null
              ? memoryMetrics_
              : memoryMetricsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.targetMetrics_ = targetMetricsBuilder_ == null
              ? targetMetrics_
              : targetMetricsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.packageMetrics_ = packageMetricsBuilder_ == null
              ? packageMetrics_
              : packageMetricsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.timingMetrics_ = timingMetricsBuilder_ == null
              ? timingMetrics_
              : timingMetricsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.cumulativeMetrics_ = cumulativeMetricsBuilder_ == null
              ? cumulativeMetrics_
              : cumulativeMetricsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.artifactMetrics_ = artifactMetricsBuilder_ == null
              ? artifactMetrics_
              : artifactMetricsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.buildGraphMetrics_ = buildGraphMetricsBuilder_ == null
              ? buildGraphMetrics_
              : buildGraphMetricsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.networkMetrics_ = networkMetricsBuilder_ == null
              ? networkMetrics_
              : networkMetricsBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics) {
          return mergeFrom((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.getDefaultInstance()) return this;
        if (other.hasActionSummary()) {
          mergeActionSummary(other.getActionSummary());
        }
        if (other.hasMemoryMetrics()) {
          mergeMemoryMetrics(other.getMemoryMetrics());
        }
        if (other.hasTargetMetrics()) {
          mergeTargetMetrics(other.getTargetMetrics());
        }
        if (other.hasPackageMetrics()) {
          mergePackageMetrics(other.getPackageMetrics());
        }
        if (other.hasTimingMetrics()) {
          mergeTimingMetrics(other.getTimingMetrics());
        }
        if (other.hasCumulativeMetrics()) {
          mergeCumulativeMetrics(other.getCumulativeMetrics());
        }
        if (other.hasArtifactMetrics()) {
          mergeArtifactMetrics(other.getArtifactMetrics());
        }
        if (other.hasBuildGraphMetrics()) {
          mergeBuildGraphMetrics(other.getBuildGraphMetrics());
        }
        if (workerMetricsBuilder_ == null) {
          if (!other.workerMetrics_.isEmpty()) {
            if (workerMetrics_.isEmpty()) {
              workerMetrics_ = other.workerMetrics_;
              bitField0_ = (bitField0_ & ~0x00000100);
            } else {
              ensureWorkerMetricsIsMutable();
              workerMetrics_.addAll(other.workerMetrics_);
            }
            onChanged();
          }
        } else {
          if (!other.workerMetrics_.isEmpty()) {
            if (workerMetricsBuilder_.isEmpty()) {
              workerMetricsBuilder_.dispose();
              workerMetricsBuilder_ = null;
              workerMetrics_ = other.workerMetrics_;
              bitField0_ = (bitField0_ & ~0x00000100);
              workerMetricsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getWorkerMetricsFieldBuilder() : null;
            } else {
              workerMetricsBuilder_.addAllMessages(other.workerMetrics_);
            }
          }
        }
        if (other.hasNetworkMetrics()) {
          mergeNetworkMetrics(other.getNetworkMetrics());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getActionSummaryFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getMemoryMetricsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getTargetMetricsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getPackageMetricsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getTimingMetricsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                input.readMessage(
                    getCumulativeMetricsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getArtifactMetricsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                input.readMessage(
                    getBuildGraphMetricsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 74: {
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics m =
                    input.readMessage(
                        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.parser(),
                        extensionRegistry);
                if (workerMetricsBuilder_ == null) {
                  ensureWorkerMetricsIsMutable();
                  workerMetrics_.add(m);
                } else {
                  workerMetricsBuilder_.addMessage(m);
                }
                break;
              } // case 74
              case 82: {
                input.readMessage(
                    getNetworkMetricsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000200;
                break;
              } // case 82
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary actionSummary_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummaryOrBuilder> actionSummaryBuilder_;
      /**
       * <code>.build_event_stream.BuildMetrics.ActionSummary action_summary = 1;</code>
       * @return Whether the actionSummary field is set.
       */
      public boolean hasActionSummary() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>.build_event_stream.BuildMetrics.ActionSummary action_summary = 1;</code>
       * @return The actionSummary.
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary getActionSummary() {
        if (actionSummaryBuilder_ == null) {
          return actionSummary_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.getDefaultInstance() : actionSummary_;
        } else {
          return actionSummaryBuilder_.getMessage();
        }
      }
      /**
       * <code>.build_event_stream.BuildMetrics.ActionSummary action_summary = 1;</code>
       */
      public Builder setActionSummary(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary value) {
        if (actionSummaryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          actionSummary_ = value;
        } else {
          actionSummaryBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.ActionSummary action_summary = 1;</code>
       */
      public Builder setActionSummary(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.Builder builderForValue) {
        if (actionSummaryBuilder_ == null) {
          actionSummary_ = builderForValue.build();
        } else {
          actionSummaryBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.ActionSummary action_summary = 1;</code>
       */
      public Builder mergeActionSummary(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary value) {
        if (actionSummaryBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            actionSummary_ != null &&
            actionSummary_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.getDefaultInstance()) {
            getActionSummaryBuilder().mergeFrom(value);
          } else {
            actionSummary_ = value;
          }
        } else {
          actionSummaryBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.ActionSummary action_summary = 1;</code>
       */
      public Builder clearActionSummary() {
        bitField0_ = (bitField0_ & ~0x00000001);
        actionSummary_ = null;
        if (actionSummaryBuilder_ != null) {
          actionSummaryBuilder_.dispose();
          actionSummaryBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.ActionSummary action_summary = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.Builder getActionSummaryBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getActionSummaryFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildMetrics.ActionSummary action_summary = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummaryOrBuilder getActionSummaryOrBuilder() {
        if (actionSummaryBuilder_ != null) {
          return actionSummaryBuilder_.getMessageOrBuilder();
        } else {
          return actionSummary_ == null ?
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.getDefaultInstance() : actionSummary_;
        }
      }
      /**
       * <code>.build_event_stream.BuildMetrics.ActionSummary action_summary = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummaryOrBuilder> 
          getActionSummaryFieldBuilder() {
        if (actionSummaryBuilder_ == null) {
          actionSummaryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummary.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ActionSummaryOrBuilder>(
                  getActionSummary(),
                  getParentForChildren(),
                  isClean());
          actionSummary_ = null;
        }
        return actionSummaryBuilder_;
      }

      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics memoryMetrics_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetricsOrBuilder> memoryMetricsBuilder_;
      /**
       * <code>.build_event_stream.BuildMetrics.MemoryMetrics memory_metrics = 2;</code>
       * @return Whether the memoryMetrics field is set.
       */
      public boolean hasMemoryMetrics() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>.build_event_stream.BuildMetrics.MemoryMetrics memory_metrics = 2;</code>
       * @return The memoryMetrics.
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics getMemoryMetrics() {
        if (memoryMetricsBuilder_ == null) {
          return memoryMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.getDefaultInstance() : memoryMetrics_;
        } else {
          return memoryMetricsBuilder_.getMessage();
        }
      }
      /**
       * <code>.build_event_stream.BuildMetrics.MemoryMetrics memory_metrics = 2;</code>
       */
      public Builder setMemoryMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics value) {
        if (memoryMetricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          memoryMetrics_ = value;
        } else {
          memoryMetricsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.MemoryMetrics memory_metrics = 2;</code>
       */
      public Builder setMemoryMetrics(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.Builder builderForValue) {
        if (memoryMetricsBuilder_ == null) {
          memoryMetrics_ = builderForValue.build();
        } else {
          memoryMetricsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.MemoryMetrics memory_metrics = 2;</code>
       */
      public Builder mergeMemoryMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics value) {
        if (memoryMetricsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            memoryMetrics_ != null &&
            memoryMetrics_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.getDefaultInstance()) {
            getMemoryMetricsBuilder().mergeFrom(value);
          } else {
            memoryMetrics_ = value;
          }
        } else {
          memoryMetricsBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.MemoryMetrics memory_metrics = 2;</code>
       */
      public Builder clearMemoryMetrics() {
        bitField0_ = (bitField0_ & ~0x00000002);
        memoryMetrics_ = null;
        if (memoryMetricsBuilder_ != null) {
          memoryMetricsBuilder_.dispose();
          memoryMetricsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.MemoryMetrics memory_metrics = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.Builder getMemoryMetricsBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getMemoryMetricsFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildMetrics.MemoryMetrics memory_metrics = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetricsOrBuilder getMemoryMetricsOrBuilder() {
        if (memoryMetricsBuilder_ != null) {
          return memoryMetricsBuilder_.getMessageOrBuilder();
        } else {
          return memoryMetrics_ == null ?
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.getDefaultInstance() : memoryMetrics_;
        }
      }
      /**
       * <code>.build_event_stream.BuildMetrics.MemoryMetrics memory_metrics = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetricsOrBuilder> 
          getMemoryMetricsFieldBuilder() {
        if (memoryMetricsBuilder_ == null) {
          memoryMetricsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.MemoryMetricsOrBuilder>(
                  getMemoryMetrics(),
                  getParentForChildren(),
                  isClean());
          memoryMetrics_ = null;
        }
        return memoryMetricsBuilder_;
      }

      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics targetMetrics_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetricsOrBuilder> targetMetricsBuilder_;
      /**
       * <code>.build_event_stream.BuildMetrics.TargetMetrics target_metrics = 3;</code>
       * @return Whether the targetMetrics field is set.
       */
      public boolean hasTargetMetrics() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>.build_event_stream.BuildMetrics.TargetMetrics target_metrics = 3;</code>
       * @return The targetMetrics.
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics getTargetMetrics() {
        if (targetMetricsBuilder_ == null) {
          return targetMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics.getDefaultInstance() : targetMetrics_;
        } else {
          return targetMetricsBuilder_.getMessage();
        }
      }
      /**
       * <code>.build_event_stream.BuildMetrics.TargetMetrics target_metrics = 3;</code>
       */
      public Builder setTargetMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics value) {
        if (targetMetricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          targetMetrics_ = value;
        } else {
          targetMetricsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.TargetMetrics target_metrics = 3;</code>
       */
      public Builder setTargetMetrics(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics.Builder builderForValue) {
        if (targetMetricsBuilder_ == null) {
          targetMetrics_ = builderForValue.build();
        } else {
          targetMetricsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.TargetMetrics target_metrics = 3;</code>
       */
      public Builder mergeTargetMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics value) {
        if (targetMetricsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            targetMetrics_ != null &&
            targetMetrics_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics.getDefaultInstance()) {
            getTargetMetricsBuilder().mergeFrom(value);
          } else {
            targetMetrics_ = value;
          }
        } else {
          targetMetricsBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.TargetMetrics target_metrics = 3;</code>
       */
      public Builder clearTargetMetrics() {
        bitField0_ = (bitField0_ & ~0x00000004);
        targetMetrics_ = null;
        if (targetMetricsBuilder_ != null) {
          targetMetricsBuilder_.dispose();
          targetMetricsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.TargetMetrics target_metrics = 3;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics.Builder getTargetMetricsBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getTargetMetricsFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildMetrics.TargetMetrics target_metrics = 3;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetricsOrBuilder getTargetMetricsOrBuilder() {
        if (targetMetricsBuilder_ != null) {
          return targetMetricsBuilder_.getMessageOrBuilder();
        } else {
          return targetMetrics_ == null ?
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics.getDefaultInstance() : targetMetrics_;
        }
      }
      /**
       * <code>.build_event_stream.BuildMetrics.TargetMetrics target_metrics = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetricsOrBuilder> 
          getTargetMetricsFieldBuilder() {
        if (targetMetricsBuilder_ == null) {
          targetMetricsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TargetMetricsOrBuilder>(
                  getTargetMetrics(),
                  getParentForChildren(),
                  isClean());
          targetMetrics_ = null;
        }
        return targetMetricsBuilder_;
      }

      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics packageMetrics_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetricsOrBuilder> packageMetricsBuilder_;
      /**
       * <code>.build_event_stream.BuildMetrics.PackageMetrics package_metrics = 4;</code>
       * @return Whether the packageMetrics field is set.
       */
      public boolean hasPackageMetrics() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>.build_event_stream.BuildMetrics.PackageMetrics package_metrics = 4;</code>
       * @return The packageMetrics.
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics getPackageMetrics() {
        if (packageMetricsBuilder_ == null) {
          return packageMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics.getDefaultInstance() : packageMetrics_;
        } else {
          return packageMetricsBuilder_.getMessage();
        }
      }
      /**
       * <code>.build_event_stream.BuildMetrics.PackageMetrics package_metrics = 4;</code>
       */
      public Builder setPackageMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics value) {
        if (packageMetricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          packageMetrics_ = value;
        } else {
          packageMetricsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.PackageMetrics package_metrics = 4;</code>
       */
      public Builder setPackageMetrics(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics.Builder builderForValue) {
        if (packageMetricsBuilder_ == null) {
          packageMetrics_ = builderForValue.build();
        } else {
          packageMetricsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.PackageMetrics package_metrics = 4;</code>
       */
      public Builder mergePackageMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics value) {
        if (packageMetricsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            packageMetrics_ != null &&
            packageMetrics_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics.getDefaultInstance()) {
            getPackageMetricsBuilder().mergeFrom(value);
          } else {
            packageMetrics_ = value;
          }
        } else {
          packageMetricsBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.PackageMetrics package_metrics = 4;</code>
       */
      public Builder clearPackageMetrics() {
        bitField0_ = (bitField0_ & ~0x00000008);
        packageMetrics_ = null;
        if (packageMetricsBuilder_ != null) {
          packageMetricsBuilder_.dispose();
          packageMetricsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.PackageMetrics package_metrics = 4;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics.Builder getPackageMetricsBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getPackageMetricsFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildMetrics.PackageMetrics package_metrics = 4;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetricsOrBuilder getPackageMetricsOrBuilder() {
        if (packageMetricsBuilder_ != null) {
          return packageMetricsBuilder_.getMessageOrBuilder();
        } else {
          return packageMetrics_ == null ?
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics.getDefaultInstance() : packageMetrics_;
        }
      }
      /**
       * <code>.build_event_stream.BuildMetrics.PackageMetrics package_metrics = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetricsOrBuilder> 
          getPackageMetricsFieldBuilder() {
        if (packageMetricsBuilder_ == null) {
          packageMetricsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.PackageMetricsOrBuilder>(
                  getPackageMetrics(),
                  getParentForChildren(),
                  isClean());
          packageMetrics_ = null;
        }
        return packageMetricsBuilder_;
      }

      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics timingMetrics_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetricsOrBuilder> timingMetricsBuilder_;
      /**
       * <code>.build_event_stream.BuildMetrics.TimingMetrics timing_metrics = 5;</code>
       * @return Whether the timingMetrics field is set.
       */
      public boolean hasTimingMetrics() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>.build_event_stream.BuildMetrics.TimingMetrics timing_metrics = 5;</code>
       * @return The timingMetrics.
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics getTimingMetrics() {
        if (timingMetricsBuilder_ == null) {
          return timingMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics.getDefaultInstance() : timingMetrics_;
        } else {
          return timingMetricsBuilder_.getMessage();
        }
      }
      /**
       * <code>.build_event_stream.BuildMetrics.TimingMetrics timing_metrics = 5;</code>
       */
      public Builder setTimingMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics value) {
        if (timingMetricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          timingMetrics_ = value;
        } else {
          timingMetricsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.TimingMetrics timing_metrics = 5;</code>
       */
      public Builder setTimingMetrics(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics.Builder builderForValue) {
        if (timingMetricsBuilder_ == null) {
          timingMetrics_ = builderForValue.build();
        } else {
          timingMetricsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.TimingMetrics timing_metrics = 5;</code>
       */
      public Builder mergeTimingMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics value) {
        if (timingMetricsBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            timingMetrics_ != null &&
            timingMetrics_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics.getDefaultInstance()) {
            getTimingMetricsBuilder().mergeFrom(value);
          } else {
            timingMetrics_ = value;
          }
        } else {
          timingMetricsBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.TimingMetrics timing_metrics = 5;</code>
       */
      public Builder clearTimingMetrics() {
        bitField0_ = (bitField0_ & ~0x00000010);
        timingMetrics_ = null;
        if (timingMetricsBuilder_ != null) {
          timingMetricsBuilder_.dispose();
          timingMetricsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.TimingMetrics timing_metrics = 5;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics.Builder getTimingMetricsBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getTimingMetricsFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildMetrics.TimingMetrics timing_metrics = 5;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetricsOrBuilder getTimingMetricsOrBuilder() {
        if (timingMetricsBuilder_ != null) {
          return timingMetricsBuilder_.getMessageOrBuilder();
        } else {
          return timingMetrics_ == null ?
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics.getDefaultInstance() : timingMetrics_;
        }
      }
      /**
       * <code>.build_event_stream.BuildMetrics.TimingMetrics timing_metrics = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetricsOrBuilder> 
          getTimingMetricsFieldBuilder() {
        if (timingMetricsBuilder_ == null) {
          timingMetricsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.TimingMetricsOrBuilder>(
                  getTimingMetrics(),
                  getParentForChildren(),
                  isClean());
          timingMetrics_ = null;
        }
        return timingMetricsBuilder_;
      }

      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics cumulativeMetrics_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetricsOrBuilder> cumulativeMetricsBuilder_;
      /**
       * <code>.build_event_stream.BuildMetrics.CumulativeMetrics cumulative_metrics = 6;</code>
       * @return Whether the cumulativeMetrics field is set.
       */
      public boolean hasCumulativeMetrics() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>.build_event_stream.BuildMetrics.CumulativeMetrics cumulative_metrics = 6;</code>
       * @return The cumulativeMetrics.
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics getCumulativeMetrics() {
        if (cumulativeMetricsBuilder_ == null) {
          return cumulativeMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics.getDefaultInstance() : cumulativeMetrics_;
        } else {
          return cumulativeMetricsBuilder_.getMessage();
        }
      }
      /**
       * <code>.build_event_stream.BuildMetrics.CumulativeMetrics cumulative_metrics = 6;</code>
       */
      public Builder setCumulativeMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics value) {
        if (cumulativeMetricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          cumulativeMetrics_ = value;
        } else {
          cumulativeMetricsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.CumulativeMetrics cumulative_metrics = 6;</code>
       */
      public Builder setCumulativeMetrics(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics.Builder builderForValue) {
        if (cumulativeMetricsBuilder_ == null) {
          cumulativeMetrics_ = builderForValue.build();
        } else {
          cumulativeMetricsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.CumulativeMetrics cumulative_metrics = 6;</code>
       */
      public Builder mergeCumulativeMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics value) {
        if (cumulativeMetricsBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
            cumulativeMetrics_ != null &&
            cumulativeMetrics_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics.getDefaultInstance()) {
            getCumulativeMetricsBuilder().mergeFrom(value);
          } else {
            cumulativeMetrics_ = value;
          }
        } else {
          cumulativeMetricsBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.CumulativeMetrics cumulative_metrics = 6;</code>
       */
      public Builder clearCumulativeMetrics() {
        bitField0_ = (bitField0_ & ~0x00000020);
        cumulativeMetrics_ = null;
        if (cumulativeMetricsBuilder_ != null) {
          cumulativeMetricsBuilder_.dispose();
          cumulativeMetricsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.CumulativeMetrics cumulative_metrics = 6;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics.Builder getCumulativeMetricsBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getCumulativeMetricsFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildMetrics.CumulativeMetrics cumulative_metrics = 6;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetricsOrBuilder getCumulativeMetricsOrBuilder() {
        if (cumulativeMetricsBuilder_ != null) {
          return cumulativeMetricsBuilder_.getMessageOrBuilder();
        } else {
          return cumulativeMetrics_ == null ?
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics.getDefaultInstance() : cumulativeMetrics_;
        }
      }
      /**
       * <code>.build_event_stream.BuildMetrics.CumulativeMetrics cumulative_metrics = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetricsOrBuilder> 
          getCumulativeMetricsFieldBuilder() {
        if (cumulativeMetricsBuilder_ == null) {
          cumulativeMetricsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.CumulativeMetricsOrBuilder>(
                  getCumulativeMetrics(),
                  getParentForChildren(),
                  isClean());
          cumulativeMetrics_ = null;
        }
        return cumulativeMetricsBuilder_;
      }

      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics artifactMetrics_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetricsOrBuilder> artifactMetricsBuilder_;
      /**
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics artifact_metrics = 7;</code>
       * @return Whether the artifactMetrics field is set.
       */
      public boolean hasArtifactMetrics() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics artifact_metrics = 7;</code>
       * @return The artifactMetrics.
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics getArtifactMetrics() {
        if (artifactMetricsBuilder_ == null) {
          return artifactMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.getDefaultInstance() : artifactMetrics_;
        } else {
          return artifactMetricsBuilder_.getMessage();
        }
      }
      /**
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics artifact_metrics = 7;</code>
       */
      public Builder setArtifactMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics value) {
        if (artifactMetricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          artifactMetrics_ = value;
        } else {
          artifactMetricsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics artifact_metrics = 7;</code>
       */
      public Builder setArtifactMetrics(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.Builder builderForValue) {
        if (artifactMetricsBuilder_ == null) {
          artifactMetrics_ = builderForValue.build();
        } else {
          artifactMetricsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics artifact_metrics = 7;</code>
       */
      public Builder mergeArtifactMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics value) {
        if (artifactMetricsBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
            artifactMetrics_ != null &&
            artifactMetrics_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.getDefaultInstance()) {
            getArtifactMetricsBuilder().mergeFrom(value);
          } else {
            artifactMetrics_ = value;
          }
        } else {
          artifactMetricsBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics artifact_metrics = 7;</code>
       */
      public Builder clearArtifactMetrics() {
        bitField0_ = (bitField0_ & ~0x00000040);
        artifactMetrics_ = null;
        if (artifactMetricsBuilder_ != null) {
          artifactMetricsBuilder_.dispose();
          artifactMetricsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics artifact_metrics = 7;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.Builder getArtifactMetricsBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getArtifactMetricsFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics artifact_metrics = 7;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetricsOrBuilder getArtifactMetricsOrBuilder() {
        if (artifactMetricsBuilder_ != null) {
          return artifactMetricsBuilder_.getMessageOrBuilder();
        } else {
          return artifactMetrics_ == null ?
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.getDefaultInstance() : artifactMetrics_;
        }
      }
      /**
       * <code>.build_event_stream.BuildMetrics.ArtifactMetrics artifact_metrics = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetricsOrBuilder> 
          getArtifactMetricsFieldBuilder() {
        if (artifactMetricsBuilder_ == null) {
          artifactMetricsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.ArtifactMetricsOrBuilder>(
                  getArtifactMetrics(),
                  getParentForChildren(),
                  isClean());
          artifactMetrics_ = null;
        }
        return artifactMetricsBuilder_;
      }

      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics buildGraphMetrics_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetricsOrBuilder> buildGraphMetricsBuilder_;
      /**
       * <code>.build_event_stream.BuildMetrics.BuildGraphMetrics build_graph_metrics = 8;</code>
       * @return Whether the buildGraphMetrics field is set.
       */
      public boolean hasBuildGraphMetrics() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <code>.build_event_stream.BuildMetrics.BuildGraphMetrics build_graph_metrics = 8;</code>
       * @return The buildGraphMetrics.
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics getBuildGraphMetrics() {
        if (buildGraphMetricsBuilder_ == null) {
          return buildGraphMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics.getDefaultInstance() : buildGraphMetrics_;
        } else {
          return buildGraphMetricsBuilder_.getMessage();
        }
      }
      /**
       * <code>.build_event_stream.BuildMetrics.BuildGraphMetrics build_graph_metrics = 8;</code>
       */
      public Builder setBuildGraphMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics value) {
        if (buildGraphMetricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          buildGraphMetrics_ = value;
        } else {
          buildGraphMetricsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.BuildGraphMetrics build_graph_metrics = 8;</code>
       */
      public Builder setBuildGraphMetrics(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics.Builder builderForValue) {
        if (buildGraphMetricsBuilder_ == null) {
          buildGraphMetrics_ = builderForValue.build();
        } else {
          buildGraphMetricsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.BuildGraphMetrics build_graph_metrics = 8;</code>
       */
      public Builder mergeBuildGraphMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics value) {
        if (buildGraphMetricsBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0) &&
            buildGraphMetrics_ != null &&
            buildGraphMetrics_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics.getDefaultInstance()) {
            getBuildGraphMetricsBuilder().mergeFrom(value);
          } else {
            buildGraphMetrics_ = value;
          }
        } else {
          buildGraphMetricsBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.BuildGraphMetrics build_graph_metrics = 8;</code>
       */
      public Builder clearBuildGraphMetrics() {
        bitField0_ = (bitField0_ & ~0x00000080);
        buildGraphMetrics_ = null;
        if (buildGraphMetricsBuilder_ != null) {
          buildGraphMetricsBuilder_.dispose();
          buildGraphMetricsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.BuildGraphMetrics build_graph_metrics = 8;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics.Builder getBuildGraphMetricsBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getBuildGraphMetricsFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildMetrics.BuildGraphMetrics build_graph_metrics = 8;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetricsOrBuilder getBuildGraphMetricsOrBuilder() {
        if (buildGraphMetricsBuilder_ != null) {
          return buildGraphMetricsBuilder_.getMessageOrBuilder();
        } else {
          return buildGraphMetrics_ == null ?
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics.getDefaultInstance() : buildGraphMetrics_;
        }
      }
      /**
       * <code>.build_event_stream.BuildMetrics.BuildGraphMetrics build_graph_metrics = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetricsOrBuilder> 
          getBuildGraphMetricsFieldBuilder() {
        if (buildGraphMetricsBuilder_ == null) {
          buildGraphMetricsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.BuildGraphMetricsOrBuilder>(
                  getBuildGraphMetrics(),
                  getParentForChildren(),
                  isClean());
          buildGraphMetrics_ = null;
        }
        return buildGraphMetricsBuilder_;
      }

      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics> workerMetrics_ =
        java.util.Collections.emptyList();
      private void ensureWorkerMetricsIsMutable() {
        if (!((bitField0_ & 0x00000100) != 0)) {
          workerMetrics_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics>(workerMetrics_);
          bitField0_ |= 0x00000100;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetricsOrBuilder> workerMetricsBuilder_;

      /**
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics> getWorkerMetricsList() {
        if (workerMetricsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(workerMetrics_);
        } else {
          return workerMetricsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
       */
      public int getWorkerMetricsCount() {
        if (workerMetricsBuilder_ == null) {
          return workerMetrics_.size();
        } else {
          return workerMetricsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics getWorkerMetrics(int index) {
        if (workerMetricsBuilder_ == null) {
          return workerMetrics_.get(index);
        } else {
          return workerMetricsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
       */
      public Builder setWorkerMetrics(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics value) {
        if (workerMetricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureWorkerMetricsIsMutable();
          workerMetrics_.set(index, value);
          onChanged();
        } else {
          workerMetricsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
       */
      public Builder setWorkerMetrics(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.Builder builderForValue) {
        if (workerMetricsBuilder_ == null) {
          ensureWorkerMetricsIsMutable();
          workerMetrics_.set(index, builderForValue.build());
          onChanged();
        } else {
          workerMetricsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
       */
      public Builder addWorkerMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics value) {
        if (workerMetricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureWorkerMetricsIsMutable();
          workerMetrics_.add(value);
          onChanged();
        } else {
          workerMetricsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
       */
      public Builder addWorkerMetrics(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics value) {
        if (workerMetricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureWorkerMetricsIsMutable();
          workerMetrics_.add(index, value);
          onChanged();
        } else {
          workerMetricsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
       */
      public Builder addWorkerMetrics(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.Builder builderForValue) {
        if (workerMetricsBuilder_ == null) {
          ensureWorkerMetricsIsMutable();
          workerMetrics_.add(builderForValue.build());
          onChanged();
        } else {
          workerMetricsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
       */
      public Builder addWorkerMetrics(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.Builder builderForValue) {
        if (workerMetricsBuilder_ == null) {
          ensureWorkerMetricsIsMutable();
          workerMetrics_.add(index, builderForValue.build());
          onChanged();
        } else {
          workerMetricsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
       */
      public Builder addAllWorkerMetrics(
          java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics> values) {
        if (workerMetricsBuilder_ == null) {
          ensureWorkerMetricsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, workerMetrics_);
          onChanged();
        } else {
          workerMetricsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
       */
      public Builder clearWorkerMetrics() {
        if (workerMetricsBuilder_ == null) {
          workerMetrics_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000100);
          onChanged();
        } else {
          workerMetricsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
       */
      public Builder removeWorkerMetrics(int index) {
        if (workerMetricsBuilder_ == null) {
          ensureWorkerMetricsIsMutable();
          workerMetrics_.remove(index);
          onChanged();
        } else {
          workerMetricsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.Builder getWorkerMetricsBuilder(
          int index) {
        return getWorkerMetricsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetricsOrBuilder getWorkerMetricsOrBuilder(
          int index) {
        if (workerMetricsBuilder_ == null) {
          return workerMetrics_.get(index);  } else {
          return workerMetricsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetricsOrBuilder> 
           getWorkerMetricsOrBuilderList() {
        if (workerMetricsBuilder_ != null) {
          return workerMetricsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(workerMetrics_);
        }
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.Builder addWorkerMetricsBuilder() {
        return getWorkerMetricsFieldBuilder().addBuilder(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.getDefaultInstance());
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.Builder addWorkerMetricsBuilder(
          int index) {
        return getWorkerMetricsFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.getDefaultInstance());
      }
      /**
       * <code>repeated .build_event_stream.BuildMetrics.WorkerMetrics worker_metrics = 9;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.Builder> 
           getWorkerMetricsBuilderList() {
        return getWorkerMetricsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetricsOrBuilder> 
          getWorkerMetricsFieldBuilder() {
        if (workerMetricsBuilder_ == null) {
          workerMetricsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.WorkerMetricsOrBuilder>(
                  workerMetrics_,
                  ((bitField0_ & 0x00000100) != 0),
                  getParentForChildren(),
                  isClean());
          workerMetrics_ = null;
        }
        return workerMetricsBuilder_;
      }

      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics networkMetrics_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetricsOrBuilder> networkMetricsBuilder_;
      /**
       * <code>.build_event_stream.BuildMetrics.NetworkMetrics network_metrics = 10;</code>
       * @return Whether the networkMetrics field is set.
       */
      public boolean hasNetworkMetrics() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <code>.build_event_stream.BuildMetrics.NetworkMetrics network_metrics = 10;</code>
       * @return The networkMetrics.
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics getNetworkMetrics() {
        if (networkMetricsBuilder_ == null) {
          return networkMetrics_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.getDefaultInstance() : networkMetrics_;
        } else {
          return networkMetricsBuilder_.getMessage();
        }
      }
      /**
       * <code>.build_event_stream.BuildMetrics.NetworkMetrics network_metrics = 10;</code>
       */
      public Builder setNetworkMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics value) {
        if (networkMetricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          networkMetrics_ = value;
        } else {
          networkMetricsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.NetworkMetrics network_metrics = 10;</code>
       */
      public Builder setNetworkMetrics(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.Builder builderForValue) {
        if (networkMetricsBuilder_ == null) {
          networkMetrics_ = builderForValue.build();
        } else {
          networkMetricsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.NetworkMetrics network_metrics = 10;</code>
       */
      public Builder mergeNetworkMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics value) {
        if (networkMetricsBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0) &&
            networkMetrics_ != null &&
            networkMetrics_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.getDefaultInstance()) {
            getNetworkMetricsBuilder().mergeFrom(value);
          } else {
            networkMetrics_ = value;
          }
        } else {
          networkMetricsBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.NetworkMetrics network_metrics = 10;</code>
       */
      public Builder clearNetworkMetrics() {
        bitField0_ = (bitField0_ & ~0x00000200);
        networkMetrics_ = null;
        if (networkMetricsBuilder_ != null) {
          networkMetricsBuilder_.dispose();
          networkMetricsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics.NetworkMetrics network_metrics = 10;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.Builder getNetworkMetricsBuilder() {
        bitField0_ |= 0x00000200;
        onChanged();
        return getNetworkMetricsFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildMetrics.NetworkMetrics network_metrics = 10;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetricsOrBuilder getNetworkMetricsOrBuilder() {
        if (networkMetricsBuilder_ != null) {
          return networkMetricsBuilder_.getMessageOrBuilder();
        } else {
          return networkMetrics_ == null ?
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.getDefaultInstance() : networkMetrics_;
        }
      }
      /**
       * <code>.build_event_stream.BuildMetrics.NetworkMetrics network_metrics = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetricsOrBuilder> 
          getNetworkMetricsFieldBuilder() {
        if (networkMetricsBuilder_ == null) {
          networkMetricsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.NetworkMetricsOrBuilder>(
                  getNetworkMetrics(),
                  getParentForChildren(),
                  isClean());
          networkMetrics_ = null;
        }
        return networkMetricsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:build_event_stream.BuildMetrics)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.BuildMetrics)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BuildMetrics>
        PARSER = new com.google.protobuf.AbstractParser<BuildMetrics>() {
      @java.lang.Override
      public BuildMetrics parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<BuildMetrics> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BuildMetrics> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BuildToolLogsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.BuildToolLogs)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .build_event_stream.File log = 1;</code>
     */
    java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> 
        getLogList();
    /**
     * <code>repeated .build_event_stream.File log = 1;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getLog(int index);
    /**
     * <code>repeated .build_event_stream.File log = 1;</code>
     */
    int getLogCount();
    /**
     * <code>repeated .build_event_stream.File log = 1;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
        getLogOrBuilderList();
    /**
     * <code>repeated .build_event_stream.File log = 1;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getLogOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Event providing additional statistics/logs after completion of the build.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.BuildToolLogs}
   */
  public static final class BuildToolLogs extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.BuildToolLogs)
      BuildToolLogsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BuildToolLogs.newBuilder() to construct.
    private BuildToolLogs(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BuildToolLogs() {
      log_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BuildToolLogs();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildToolLogs_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildToolLogs_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs.Builder.class);
    }

    public static final int LOG_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> log_;
    /**
     * <code>repeated .build_event_stream.File log = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> getLogList() {
      return log_;
    }
    /**
     * <code>repeated .build_event_stream.File log = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
        getLogOrBuilderList() {
      return log_;
    }
    /**
     * <code>repeated .build_event_stream.File log = 1;</code>
     */
    @java.lang.Override
    public int getLogCount() {
      return log_.size();
    }
    /**
     * <code>repeated .build_event_stream.File log = 1;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getLog(int index) {
      return log_.get(index);
    }
    /**
     * <code>repeated .build_event_stream.File log = 1;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getLogOrBuilder(
        int index) {
      return log_.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 < log_.size(); i++) {
        output.writeMessage(1, log_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < log_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, log_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs other = (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs) obj;

      if (!getLogList()
          .equals(other.getLogList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getLogCount() > 0) {
        hash = (37 * hash) + LOG_FIELD_NUMBER;
        hash = (53 * hash) + getLogList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs 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.buildeventstream.BuildEventStreamProtos.BuildToolLogs parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs 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.buildeventstream.BuildEventStreamProtos.BuildToolLogs parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs 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.buildeventstream.BuildEventStreamProtos.BuildToolLogs parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs 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.buildeventstream.BuildEventStreamProtos.BuildToolLogs parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs 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.buildeventstream.BuildEventStreamProtos.BuildToolLogs 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.buildeventstream.BuildEventStreamProtos.BuildToolLogs 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.buildeventstream.BuildEventStreamProtos.BuildToolLogs 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>
     * Event providing additional statistics/logs after completion of the build.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildToolLogs}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.BuildToolLogs)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildToolLogs_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildToolLogs_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (logBuilder_ == null) {
          log_ = java.util.Collections.emptyList();
        } else {
          log_ = null;
          logBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildToolLogs_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs build() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs result) {
        if (logBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            log_ = java.util.Collections.unmodifiableList(log_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.log_ = log_;
        } else {
          result.log_ = logBuilder_.build();
        }
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs result) {
        int from_bitField0_ = bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs) {
          return mergeFrom((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs.getDefaultInstance()) return this;
        if (logBuilder_ == null) {
          if (!other.log_.isEmpty()) {
            if (log_.isEmpty()) {
              log_ = other.log_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureLogIsMutable();
              log_.addAll(other.log_);
            }
            onChanged();
          }
        } else {
          if (!other.log_.isEmpty()) {
            if (logBuilder_.isEmpty()) {
              logBuilder_.dispose();
              logBuilder_ = null;
              log_ = other.log_;
              bitField0_ = (bitField0_ & ~0x00000001);
              logBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getLogFieldBuilder() : null;
            } else {
              logBuilder_.addAllMessages(other.log_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File m =
                    input.readMessage(
                        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.parser(),
                        extensionRegistry);
                if (logBuilder_ == null) {
                  ensureLogIsMutable();
                  log_.add(m);
                } else {
                  logBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> log_ =
        java.util.Collections.emptyList();
      private void ensureLogIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          log_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File>(log_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> logBuilder_;

      /**
       * <code>repeated .build_event_stream.File log = 1;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> getLogList() {
        if (logBuilder_ == null) {
          return java.util.Collections.unmodifiableList(log_);
        } else {
          return logBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .build_event_stream.File log = 1;</code>
       */
      public int getLogCount() {
        if (logBuilder_ == null) {
          return log_.size();
        } else {
          return logBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .build_event_stream.File log = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File getLog(int index) {
        if (logBuilder_ == null) {
          return log_.get(index);
        } else {
          return logBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .build_event_stream.File log = 1;</code>
       */
      public Builder setLog(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (logBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLogIsMutable();
          log_.set(index, value);
          onChanged();
        } else {
          logBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.File log = 1;</code>
       */
      public Builder setLog(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (logBuilder_ == null) {
          ensureLogIsMutable();
          log_.set(index, builderForValue.build());
          onChanged();
        } else {
          logBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.File log = 1;</code>
       */
      public Builder addLog(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (logBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLogIsMutable();
          log_.add(value);
          onChanged();
        } else {
          logBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.File log = 1;</code>
       */
      public Builder addLog(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File value) {
        if (logBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLogIsMutable();
          log_.add(index, value);
          onChanged();
        } else {
          logBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.File log = 1;</code>
       */
      public Builder addLog(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (logBuilder_ == null) {
          ensureLogIsMutable();
          log_.add(builderForValue.build());
          onChanged();
        } else {
          logBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.File log = 1;</code>
       */
      public Builder addLog(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder builderForValue) {
        if (logBuilder_ == null) {
          ensureLogIsMutable();
          log_.add(index, builderForValue.build());
          onChanged();
        } else {
          logBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.File log = 1;</code>
       */
      public Builder addAllLog(
          java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File> values) {
        if (logBuilder_ == null) {
          ensureLogIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, log_);
          onChanged();
        } else {
          logBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.File log = 1;</code>
       */
      public Builder clearLog() {
        if (logBuilder_ == null) {
          log_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          logBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.File log = 1;</code>
       */
      public Builder removeLog(int index) {
        if (logBuilder_ == null) {
          ensureLogIsMutable();
          log_.remove(index);
          onChanged();
        } else {
          logBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.File log = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder getLogBuilder(
          int index) {
        return getLogFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .build_event_stream.File log = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder getLogOrBuilder(
          int index) {
        if (logBuilder_ == null) {
          return log_.get(index);  } else {
          return logBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .build_event_stream.File log = 1;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
           getLogOrBuilderList() {
        if (logBuilder_ != null) {
          return logBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(log_);
        }
      }
      /**
       * <code>repeated .build_event_stream.File log = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder addLogBuilder() {
        return getLogFieldBuilder().addBuilder(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance());
      }
      /**
       * <code>repeated .build_event_stream.File log = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder addLogBuilder(
          int index) {
        return getLogFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.getDefaultInstance());
      }
      /**
       * <code>repeated .build_event_stream.File log = 1;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder> 
           getLogBuilderList() {
        return getLogFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder> 
          getLogFieldBuilder() {
        if (logBuilder_ == null) {
          logBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FileOrBuilder>(
                  log_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          log_ = null;
        }
        return logBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:build_event_stream.BuildToolLogs)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.BuildToolLogs)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BuildToolLogs>
        PARSER = new com.google.protobuf.AbstractParser<BuildToolLogs>() {
      @java.lang.Override
      public BuildToolLogs parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<BuildToolLogs> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BuildToolLogs> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConvenienceSymlinksIdentifiedOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.ConvenienceSymlinksIdentified)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
     */
    java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink> 
        getConvenienceSymlinksList();
    /**
     * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink getConvenienceSymlinks(int index);
    /**
     * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
     */
    int getConvenienceSymlinksCount();
    /**
     * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinkOrBuilder> 
        getConvenienceSymlinksOrBuilderList();
    /**
     * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinkOrBuilder getConvenienceSymlinksOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Event describing all convenience symlinks (i.e., workspace symlinks) to be
   * created or deleted once the execution phase has begun. Note that this event
   * does not say anything about whether or not the build tool actually executed
   * these filesystem operations; it only says what logical operations should be
   * performed. This event is emitted exactly once per build; if no symlinks are
   * to be modified, the event is still emitted with empty contents.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.ConvenienceSymlinksIdentified}
   */
  public static final class ConvenienceSymlinksIdentified extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.ConvenienceSymlinksIdentified)
      ConvenienceSymlinksIdentifiedOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConvenienceSymlinksIdentified.newBuilder() to construct.
    private ConvenienceSymlinksIdentified(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ConvenienceSymlinksIdentified() {
      convenienceSymlinks_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConvenienceSymlinksIdentified();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_ConvenienceSymlinksIdentified_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_ConvenienceSymlinksIdentified_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified.Builder.class);
    }

    public static final int CONVENIENCE_SYMLINKS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink> convenienceSymlinks_;
    /**
     * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink> getConvenienceSymlinksList() {
      return convenienceSymlinks_;
    }
    /**
     * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinkOrBuilder> 
        getConvenienceSymlinksOrBuilderList() {
      return convenienceSymlinks_;
    }
    /**
     * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
     */
    @java.lang.Override
    public int getConvenienceSymlinksCount() {
      return convenienceSymlinks_.size();
    }
    /**
     * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink getConvenienceSymlinks(int index) {
      return convenienceSymlinks_.get(index);
    }
    /**
     * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinkOrBuilder getConvenienceSymlinksOrBuilder(
        int index) {
      return convenienceSymlinks_.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 < convenienceSymlinks_.size(); i++) {
        output.writeMessage(1, convenienceSymlinks_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < convenienceSymlinks_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, convenienceSymlinks_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified other = (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified) obj;

      if (!getConvenienceSymlinksList()
          .equals(other.getConvenienceSymlinksList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getConvenienceSymlinksCount() > 0) {
        hash = (37 * hash) + CONVENIENCE_SYMLINKS_FIELD_NUMBER;
        hash = (53 * hash) + getConvenienceSymlinksList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified 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.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified 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.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified 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.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified 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.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified 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.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified 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.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified 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.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified 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>
     * Event describing all convenience symlinks (i.e., workspace symlinks) to be
     * created or deleted once the execution phase has begun. Note that this event
     * does not say anything about whether or not the build tool actually executed
     * these filesystem operations; it only says what logical operations should be
     * performed. This event is emitted exactly once per build; if no symlinks are
     * to be modified, the event is still emitted with empty contents.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.ConvenienceSymlinksIdentified}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.ConvenienceSymlinksIdentified)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentifiedOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_ConvenienceSymlinksIdentified_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_ConvenienceSymlinksIdentified_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (convenienceSymlinksBuilder_ == null) {
          convenienceSymlinks_ = java.util.Collections.emptyList();
        } else {
          convenienceSymlinks_ = null;
          convenienceSymlinksBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_ConvenienceSymlinksIdentified_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified build() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified result) {
        if (convenienceSymlinksBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            convenienceSymlinks_ = java.util.Collections.unmodifiableList(convenienceSymlinks_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.convenienceSymlinks_ = convenienceSymlinks_;
        } else {
          result.convenienceSymlinks_ = convenienceSymlinksBuilder_.build();
        }
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified result) {
        int from_bitField0_ = bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified) {
          return mergeFrom((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified.getDefaultInstance()) return this;
        if (convenienceSymlinksBuilder_ == null) {
          if (!other.convenienceSymlinks_.isEmpty()) {
            if (convenienceSymlinks_.isEmpty()) {
              convenienceSymlinks_ = other.convenienceSymlinks_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureConvenienceSymlinksIsMutable();
              convenienceSymlinks_.addAll(other.convenienceSymlinks_);
            }
            onChanged();
          }
        } else {
          if (!other.convenienceSymlinks_.isEmpty()) {
            if (convenienceSymlinksBuilder_.isEmpty()) {
              convenienceSymlinksBuilder_.dispose();
              convenienceSymlinksBuilder_ = null;
              convenienceSymlinks_ = other.convenienceSymlinks_;
              bitField0_ = (bitField0_ & ~0x00000001);
              convenienceSymlinksBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getConvenienceSymlinksFieldBuilder() : null;
            } else {
              convenienceSymlinksBuilder_.addAllMessages(other.convenienceSymlinks_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink m =
                    input.readMessage(
                        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.parser(),
                        extensionRegistry);
                if (convenienceSymlinksBuilder_ == null) {
                  ensureConvenienceSymlinksIsMutable();
                  convenienceSymlinks_.add(m);
                } else {
                  convenienceSymlinksBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink> convenienceSymlinks_ =
        java.util.Collections.emptyList();
      private void ensureConvenienceSymlinksIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          convenienceSymlinks_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink>(convenienceSymlinks_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinkOrBuilder> convenienceSymlinksBuilder_;

      /**
       * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink> getConvenienceSymlinksList() {
        if (convenienceSymlinksBuilder_ == null) {
          return java.util.Collections.unmodifiableList(convenienceSymlinks_);
        } else {
          return convenienceSymlinksBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
       */
      public int getConvenienceSymlinksCount() {
        if (convenienceSymlinksBuilder_ == null) {
          return convenienceSymlinks_.size();
        } else {
          return convenienceSymlinksBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink getConvenienceSymlinks(int index) {
        if (convenienceSymlinksBuilder_ == null) {
          return convenienceSymlinks_.get(index);
        } else {
          return convenienceSymlinksBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
       */
      public Builder setConvenienceSymlinks(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink value) {
        if (convenienceSymlinksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConvenienceSymlinksIsMutable();
          convenienceSymlinks_.set(index, value);
          onChanged();
        } else {
          convenienceSymlinksBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
       */
      public Builder setConvenienceSymlinks(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Builder builderForValue) {
        if (convenienceSymlinksBuilder_ == null) {
          ensureConvenienceSymlinksIsMutable();
          convenienceSymlinks_.set(index, builderForValue.build());
          onChanged();
        } else {
          convenienceSymlinksBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
       */
      public Builder addConvenienceSymlinks(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink value) {
        if (convenienceSymlinksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConvenienceSymlinksIsMutable();
          convenienceSymlinks_.add(value);
          onChanged();
        } else {
          convenienceSymlinksBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
       */
      public Builder addConvenienceSymlinks(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink value) {
        if (convenienceSymlinksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureConvenienceSymlinksIsMutable();
          convenienceSymlinks_.add(index, value);
          onChanged();
        } else {
          convenienceSymlinksBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
       */
      public Builder addConvenienceSymlinks(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Builder builderForValue) {
        if (convenienceSymlinksBuilder_ == null) {
          ensureConvenienceSymlinksIsMutable();
          convenienceSymlinks_.add(builderForValue.build());
          onChanged();
        } else {
          convenienceSymlinksBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
       */
      public Builder addConvenienceSymlinks(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Builder builderForValue) {
        if (convenienceSymlinksBuilder_ == null) {
          ensureConvenienceSymlinksIsMutable();
          convenienceSymlinks_.add(index, builderForValue.build());
          onChanged();
        } else {
          convenienceSymlinksBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
       */
      public Builder addAllConvenienceSymlinks(
          java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink> values) {
        if (convenienceSymlinksBuilder_ == null) {
          ensureConvenienceSymlinksIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, convenienceSymlinks_);
          onChanged();
        } else {
          convenienceSymlinksBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
       */
      public Builder clearConvenienceSymlinks() {
        if (convenienceSymlinksBuilder_ == null) {
          convenienceSymlinks_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          convenienceSymlinksBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
       */
      public Builder removeConvenienceSymlinks(int index) {
        if (convenienceSymlinksBuilder_ == null) {
          ensureConvenienceSymlinksIsMutable();
          convenienceSymlinks_.remove(index);
          onChanged();
        } else {
          convenienceSymlinksBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Builder getConvenienceSymlinksBuilder(
          int index) {
        return getConvenienceSymlinksFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinkOrBuilder getConvenienceSymlinksOrBuilder(
          int index) {
        if (convenienceSymlinksBuilder_ == null) {
          return convenienceSymlinks_.get(index);  } else {
          return convenienceSymlinksBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinkOrBuilder> 
           getConvenienceSymlinksOrBuilderList() {
        if (convenienceSymlinksBuilder_ != null) {
          return convenienceSymlinksBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(convenienceSymlinks_);
        }
      }
      /**
       * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Builder addConvenienceSymlinksBuilder() {
        return getConvenienceSymlinksFieldBuilder().addBuilder(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.getDefaultInstance());
      }
      /**
       * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Builder addConvenienceSymlinksBuilder(
          int index) {
        return getConvenienceSymlinksFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.getDefaultInstance());
      }
      /**
       * <code>repeated .build_event_stream.ConvenienceSymlink convenience_symlinks = 1;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Builder> 
           getConvenienceSymlinksBuilderList() {
        return getConvenienceSymlinksFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinkOrBuilder> 
          getConvenienceSymlinksFieldBuilder() {
        if (convenienceSymlinksBuilder_ == null) {
          convenienceSymlinksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinkOrBuilder>(
                  convenienceSymlinks_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          convenienceSymlinks_ = null;
        }
        return convenienceSymlinksBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:build_event_stream.ConvenienceSymlinksIdentified)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.ConvenienceSymlinksIdentified)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ConvenienceSymlinksIdentified>
        PARSER = new com.google.protobuf.AbstractParser<ConvenienceSymlinksIdentified>() {
      @java.lang.Override
      public ConvenienceSymlinksIdentified parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ConvenienceSymlinksIdentified> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ConvenienceSymlinksIdentified> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConvenienceSymlinkOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.ConvenienceSymlink)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The path of the symlink to be created or deleted, absolute or relative to
     * the workspace, creating any directories necessary. If a symlink already
     * exists at that location, then it should be replaced by a symlink pointing
     * to the new target.
     * </pre>
     *
     * <code>string path = 1;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * The path of the symlink to be created or deleted, absolute or relative to
     * the workspace, creating any directories necessary. If a symlink already
     * exists at that location, then it should be replaced by a symlink pointing
     * to the new target.
     * </pre>
     *
     * <code>string path = 1;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();

    /**
     * <pre>
     * The operation we are performing on the symlink.
     * </pre>
     *
     * <code>.build_event_stream.ConvenienceSymlink.Action action = 2;</code>
     * @return The enum numeric value on the wire for action.
     */
    int getActionValue();
    /**
     * <pre>
     * The operation we are performing on the symlink.
     * </pre>
     *
     * <code>.build_event_stream.ConvenienceSymlink.Action action = 2;</code>
     * @return The action.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Action getAction();

    /**
     * <pre>
     * If action is CREATE, this is the target path that the symlink should point
     * to. If the path points underneath the output base, it is relative to the
     * output base; otherwise it is absolute.
     * If action is DELETE, this field is not set.
     * </pre>
     *
     * <code>string target = 3;</code>
     * @return The target.
     */
    java.lang.String getTarget();
    /**
     * <pre>
     * If action is CREATE, this is the target path that the symlink should point
     * to. If the path points underneath the output base, it is relative to the
     * output base; otherwise it is absolute.
     * If action is DELETE, this field is not set.
     * </pre>
     *
     * <code>string target = 3;</code>
     * @return The bytes for target.
     */
    com.google.protobuf.ByteString
        getTargetBytes();
  }
  /**
   * <pre>
   * The message that contains what type of action to perform on a given path and
   * target of a symlink.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.ConvenienceSymlink}
   */
  public static final class ConvenienceSymlink extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.ConvenienceSymlink)
      ConvenienceSymlinkOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConvenienceSymlink.newBuilder() to construct.
    private ConvenienceSymlink(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ConvenienceSymlink() {
      path_ = "";
      action_ = 0;
      target_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConvenienceSymlink();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_ConvenienceSymlink_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_ConvenienceSymlink_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Builder.class);
    }

    /**
     * Protobuf enum {@code build_event_stream.ConvenienceSymlink.Action}
     */
    public enum Action
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <pre>
       * Indicates a symlink should be created, or overwritten if it already
       * exists.
       * </pre>
       *
       * <code>CREATE = 1;</code>
       */
      CREATE(1),
      /**
       * <pre>
       * Indicates a symlink should be deleted if it already exists.
       * </pre>
       *
       * <code>DELETE = 2;</code>
       */
      DELETE(2),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <pre>
       * Indicates a symlink should be created, or overwritten if it already
       * exists.
       * </pre>
       *
       * <code>CREATE = 1;</code>
       */
      public static final int CREATE_VALUE = 1;
      /**
       * <pre>
       * Indicates a symlink should be deleted if it already exists.
       * </pre>
       *
       * <code>DELETE = 2;</code>
       */
      public static final int DELETE_VALUE = 2;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Action valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Action forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 1: return CREATE;
          case 2: return DELETE;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Action>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Action> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Action>() {
              public Action findValueByNumber(int number) {
                return Action.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.getDescriptor().getEnumTypes().get(0);
      }

      private static final Action[] VALUES = values();

      public static Action valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Action(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:build_event_stream.ConvenienceSymlink.Action)
    }

    public static final int PATH_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object path_ = "";
    /**
     * <pre>
     * The path of the symlink to be created or deleted, absolute or relative to
     * the workspace, creating any directories necessary. If a symlink already
     * exists at that location, then it should be replaced by a symlink pointing
     * to the new target.
     * </pre>
     *
     * <code>string path = 1;</code>
     * @return The path.
     */
    @java.lang.Override
    public java.lang.String getPath() {
      java.lang.Object ref = path_;
      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();
        path_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The path of the symlink to be created or deleted, absolute or relative to
     * the workspace, creating any directories necessary. If a symlink already
     * exists at that location, then it should be replaced by a symlink pointing
     * to the new target.
     * </pre>
     *
     * <code>string path = 1;</code>
     * @return The bytes for path.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPathBytes() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        path_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ACTION_FIELD_NUMBER = 2;
    private int action_ = 0;
    /**
     * <pre>
     * The operation we are performing on the symlink.
     * </pre>
     *
     * <code>.build_event_stream.ConvenienceSymlink.Action action = 2;</code>
     * @return The enum numeric value on the wire for action.
     */
    @java.lang.Override public int getActionValue() {
      return action_;
    }
    /**
     * <pre>
     * The operation we are performing on the symlink.
     * </pre>
     *
     * <code>.build_event_stream.ConvenienceSymlink.Action action = 2;</code>
     * @return The action.
     */
    @java.lang.Override public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Action getAction() {
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Action result = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Action.forNumber(action_);
      return result == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Action.UNRECOGNIZED : result;
    }

    public static final int TARGET_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object target_ = "";
    /**
     * <pre>
     * If action is CREATE, this is the target path that the symlink should point
     * to. If the path points underneath the output base, it is relative to the
     * output base; otherwise it is absolute.
     * If action is DELETE, this field is not set.
     * </pre>
     *
     * <code>string target = 3;</code>
     * @return The target.
     */
    @java.lang.Override
    public java.lang.String getTarget() {
      java.lang.Object ref = target_;
      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();
        target_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * If action is CREATE, this is the target path that the symlink should point
     * to. If the path points underneath the output base, it is relative to the
     * output base; otherwise it is absolute.
     * If action is DELETE, this field is not set.
     * </pre>
     *
     * <code>string target = 3;</code>
     * @return The bytes for target.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTargetBytes() {
      java.lang.Object ref = target_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        target_ = 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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(path_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, path_);
      }
      if (action_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Action.UNKNOWN.getNumber()) {
        output.writeEnum(2, action_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(target_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, target_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(path_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, path_);
      }
      if (action_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Action.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, action_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(target_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, target_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink other = (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink) obj;

      if (!getPath()
          .equals(other.getPath())) return false;
      if (action_ != other.action_) return false;
      if (!getTarget()
          .equals(other.getTarget())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PATH_FIELD_NUMBER;
      hash = (53 * hash) + getPath().hashCode();
      hash = (37 * hash) + ACTION_FIELD_NUMBER;
      hash = (53 * hash) + action_;
      hash = (37 * hash) + TARGET_FIELD_NUMBER;
      hash = (53 * hash) + getTarget().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink 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.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink 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.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink 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.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink 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.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink 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.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink 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.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink 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.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink 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>
     * The message that contains what type of action to perform on a given path and
     * target of a symlink.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.ConvenienceSymlink}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.ConvenienceSymlink)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinkOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_ConvenienceSymlink_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_ConvenienceSymlink_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        path_ = "";
        action_ = 0;
        target_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_ConvenienceSymlink_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink build() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.path_ = path_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.action_ = action_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.target_ = target_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink) {
          return mergeFrom((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.getDefaultInstance()) return this;
        if (!other.getPath().isEmpty()) {
          path_ = other.path_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.action_ != 0) {
          setActionValue(other.getActionValue());
        }
        if (!other.getTarget().isEmpty()) {
          target_ = other.target_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                path_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                action_ = input.readEnum();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 26: {
                target_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object path_ = "";
      /**
       * <pre>
       * The path of the symlink to be created or deleted, absolute or relative to
       * the workspace, creating any directories necessary. If a symlink already
       * exists at that location, then it should be replaced by a symlink pointing
       * to the new target.
       * </pre>
       *
       * <code>string path = 1;</code>
       * @return The path.
       */
      public java.lang.String getPath() {
        java.lang.Object ref = path_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          path_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The path of the symlink to be created or deleted, absolute or relative to
       * the workspace, creating any directories necessary. If a symlink already
       * exists at that location, then it should be replaced by a symlink pointing
       * to the new target.
       * </pre>
       *
       * <code>string path = 1;</code>
       * @return The bytes for path.
       */
      public com.google.protobuf.ByteString
          getPathBytes() {
        java.lang.Object ref = path_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          path_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The path of the symlink to be created or deleted, absolute or relative to
       * the workspace, creating any directories necessary. If a symlink already
       * exists at that location, then it should be replaced by a symlink pointing
       * to the new target.
       * </pre>
       *
       * <code>string path = 1;</code>
       * @param value The path to set.
       * @return This builder for chaining.
       */
      public Builder setPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        path_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The path of the symlink to be created or deleted, absolute or relative to
       * the workspace, creating any directories necessary. If a symlink already
       * exists at that location, then it should be replaced by a symlink pointing
       * to the new target.
       * </pre>
       *
       * <code>string path = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ = getDefaultInstance().getPath();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The path of the symlink to be created or deleted, absolute or relative to
       * the workspace, creating any directories necessary. If a symlink already
       * exists at that location, then it should be replaced by a symlink pointing
       * to the new target.
       * </pre>
       *
       * <code>string path = 1;</code>
       * @param value The bytes for path to set.
       * @return This builder for chaining.
       */
      public Builder setPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        path_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private int action_ = 0;
      /**
       * <pre>
       * The operation we are performing on the symlink.
       * </pre>
       *
       * <code>.build_event_stream.ConvenienceSymlink.Action action = 2;</code>
       * @return The enum numeric value on the wire for action.
       */
      @java.lang.Override public int getActionValue() {
        return action_;
      }
      /**
       * <pre>
       * The operation we are performing on the symlink.
       * </pre>
       *
       * <code>.build_event_stream.ConvenienceSymlink.Action action = 2;</code>
       * @param value The enum numeric value on the wire for action to set.
       * @return This builder for chaining.
       */
      public Builder setActionValue(int value) {
        action_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The operation we are performing on the symlink.
       * </pre>
       *
       * <code>.build_event_stream.ConvenienceSymlink.Action action = 2;</code>
       * @return The action.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Action getAction() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Action result = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Action.forNumber(action_);
        return result == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Action.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * The operation we are performing on the symlink.
       * </pre>
       *
       * <code>.build_event_stream.ConvenienceSymlink.Action action = 2;</code>
       * @param value The action to set.
       * @return This builder for chaining.
       */
      public Builder setAction(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink.Action value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        action_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The operation we are performing on the symlink.
       * </pre>
       *
       * <code>.build_event_stream.ConvenienceSymlink.Action action = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearAction() {
        bitField0_ = (bitField0_ & ~0x00000002);
        action_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object target_ = "";
      /**
       * <pre>
       * If action is CREATE, this is the target path that the symlink should point
       * to. If the path points underneath the output base, it is relative to the
       * output base; otherwise it is absolute.
       * If action is DELETE, this field is not set.
       * </pre>
       *
       * <code>string target = 3;</code>
       * @return The target.
       */
      public java.lang.String getTarget() {
        java.lang.Object ref = target_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          target_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * If action is CREATE, this is the target path that the symlink should point
       * to. If the path points underneath the output base, it is relative to the
       * output base; otherwise it is absolute.
       * If action is DELETE, this field is not set.
       * </pre>
       *
       * <code>string target = 3;</code>
       * @return The bytes for target.
       */
      public com.google.protobuf.ByteString
          getTargetBytes() {
        java.lang.Object ref = target_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          target_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * If action is CREATE, this is the target path that the symlink should point
       * to. If the path points underneath the output base, it is relative to the
       * output base; otherwise it is absolute.
       * If action is DELETE, this field is not set.
       * </pre>
       *
       * <code>string target = 3;</code>
       * @param value The target to set.
       * @return This builder for chaining.
       */
      public Builder setTarget(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        target_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If action is CREATE, this is the target path that the symlink should point
       * to. If the path points underneath the output base, it is relative to the
       * output base; otherwise it is absolute.
       * If action is DELETE, this field is not set.
       * </pre>
       *
       * <code>string target = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTarget() {
        target_ = getDefaultInstance().getTarget();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If action is CREATE, this is the target path that the symlink should point
       * to. If the path points underneath the output base, it is relative to the
       * output base; otherwise it is absolute.
       * If action is DELETE, this field is not set.
       * </pre>
       *
       * <code>string target = 3;</code>
       * @param value The bytes for target to set.
       * @return This builder for chaining.
       */
      public Builder setTargetBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        target_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:build_event_stream.ConvenienceSymlink)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.ConvenienceSymlink)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ConvenienceSymlink>
        PARSER = new com.google.protobuf.AbstractParser<ConvenienceSymlink>() {
      @java.lang.Override
      public ConvenienceSymlink parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ConvenienceSymlink> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ConvenienceSymlink> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BuildEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build_event_stream.BuildEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.build_event_stream.BuildEventId id = 1;</code>
     * @return Whether the id field is set.
     */
    boolean hasId();
    /**
     * <code>.build_event_stream.BuildEventId id = 1;</code>
     * @return The id.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId getId();
    /**
     * <code>.build_event_stream.BuildEventId id = 1;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventIdOrBuilder getIdOrBuilder();

    /**
     * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
     */
    java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId> 
        getChildrenList();
    /**
     * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId getChildren(int index);
    /**
     * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
     */
    int getChildrenCount();
    /**
     * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
     */
    java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventIdOrBuilder> 
        getChildrenOrBuilderList();
    /**
     * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventIdOrBuilder getChildrenOrBuilder(
        int index);

    /**
     * <code>bool last_message = 20;</code>
     * @return The lastMessage.
     */
    boolean getLastMessage();

    /**
     * <code>.build_event_stream.Progress progress = 3;</code>
     * @return Whether the progress field is set.
     */
    boolean hasProgress();
    /**
     * <code>.build_event_stream.Progress progress = 3;</code>
     * @return The progress.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress getProgress();
    /**
     * <code>.build_event_stream.Progress progress = 3;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ProgressOrBuilder getProgressOrBuilder();

    /**
     * <code>.build_event_stream.Aborted aborted = 4;</code>
     * @return Whether the aborted field is set.
     */
    boolean hasAborted();
    /**
     * <code>.build_event_stream.Aborted aborted = 4;</code>
     * @return The aborted.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted getAborted();
    /**
     * <code>.build_event_stream.Aborted aborted = 4;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.AbortedOrBuilder getAbortedOrBuilder();

    /**
     * <code>.build_event_stream.BuildStarted started = 5;</code>
     * @return Whether the started field is set.
     */
    boolean hasStarted();
    /**
     * <code>.build_event_stream.BuildStarted started = 5;</code>
     * @return The started.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted getStarted();
    /**
     * <code>.build_event_stream.BuildStarted started = 5;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStartedOrBuilder getStartedOrBuilder();

    /**
     * <code>.build_event_stream.UnstructuredCommandLine unstructured_command_line = 12;</code>
     * @return Whether the unstructuredCommandLine field is set.
     */
    boolean hasUnstructuredCommandLine();
    /**
     * <code>.build_event_stream.UnstructuredCommandLine unstructured_command_line = 12;</code>
     * @return The unstructuredCommandLine.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine getUnstructuredCommandLine();
    /**
     * <code>.build_event_stream.UnstructuredCommandLine unstructured_command_line = 12;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLineOrBuilder getUnstructuredCommandLineOrBuilder();

    /**
     * <code>.command_line.CommandLine structured_command_line = 22;</code>
     * @return Whether the structuredCommandLine field is set.
     */
    boolean hasStructuredCommandLine();
    /**
     * <code>.command_line.CommandLine structured_command_line = 22;</code>
     * @return The structuredCommandLine.
     */
    com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine getStructuredCommandLine();
    /**
     * <code>.command_line.CommandLine structured_command_line = 22;</code>
     */
    com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLineOrBuilder getStructuredCommandLineOrBuilder();

    /**
     * <code>.build_event_stream.OptionsParsed options_parsed = 13;</code>
     * @return Whether the optionsParsed field is set.
     */
    boolean hasOptionsParsed();
    /**
     * <code>.build_event_stream.OptionsParsed options_parsed = 13;</code>
     * @return The optionsParsed.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed getOptionsParsed();
    /**
     * <code>.build_event_stream.OptionsParsed options_parsed = 13;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsedOrBuilder getOptionsParsedOrBuilder();

    /**
     * <code>.build_event_stream.WorkspaceStatus workspace_status = 16;</code>
     * @return Whether the workspaceStatus field is set.
     */
    boolean hasWorkspaceStatus();
    /**
     * <code>.build_event_stream.WorkspaceStatus workspace_status = 16;</code>
     * @return The workspaceStatus.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus getWorkspaceStatus();
    /**
     * <code>.build_event_stream.WorkspaceStatus workspace_status = 16;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatusOrBuilder getWorkspaceStatusOrBuilder();

    /**
     * <code>.build_event_stream.Fetch fetch = 21;</code>
     * @return Whether the fetch field is set.
     */
    boolean hasFetch();
    /**
     * <code>.build_event_stream.Fetch fetch = 21;</code>
     * @return The fetch.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch getFetch();
    /**
     * <code>.build_event_stream.Fetch fetch = 21;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FetchOrBuilder getFetchOrBuilder();

    /**
     * <code>.build_event_stream.Configuration configuration = 17;</code>
     * @return Whether the configuration field is set.
     */
    boolean hasConfiguration();
    /**
     * <code>.build_event_stream.Configuration configuration = 17;</code>
     * @return The configuration.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration getConfiguration();
    /**
     * <code>.build_event_stream.Configuration configuration = 17;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConfigurationOrBuilder getConfigurationOrBuilder();

    /**
     * <code>.build_event_stream.PatternExpanded expanded = 6;</code>
     * @return Whether the expanded field is set.
     */
    boolean hasExpanded();
    /**
     * <code>.build_event_stream.PatternExpanded expanded = 6;</code>
     * @return The expanded.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded getExpanded();
    /**
     * <code>.build_event_stream.PatternExpanded expanded = 6;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpandedOrBuilder getExpandedOrBuilder();

    /**
     * <code>.build_event_stream.TargetConfigured configured = 18;</code>
     * @return Whether the configured field is set.
     */
    boolean hasConfigured();
    /**
     * <code>.build_event_stream.TargetConfigured configured = 18;</code>
     * @return The configured.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured getConfigured();
    /**
     * <code>.build_event_stream.TargetConfigured configured = 18;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfiguredOrBuilder getConfiguredOrBuilder();

    /**
     * <code>.build_event_stream.ActionExecuted action = 7;</code>
     * @return Whether the action field is set.
     */
    boolean hasAction();
    /**
     * <code>.build_event_stream.ActionExecuted action = 7;</code>
     * @return The action.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted getAction();
    /**
     * <code>.build_event_stream.ActionExecuted action = 7;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecutedOrBuilder getActionOrBuilder();

    /**
     * <code>.build_event_stream.NamedSetOfFiles named_set_of_files = 15;</code>
     * @return Whether the namedSetOfFiles field is set.
     */
    boolean hasNamedSetOfFiles();
    /**
     * <code>.build_event_stream.NamedSetOfFiles named_set_of_files = 15;</code>
     * @return The namedSetOfFiles.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles getNamedSetOfFiles();
    /**
     * <code>.build_event_stream.NamedSetOfFiles named_set_of_files = 15;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFilesOrBuilder getNamedSetOfFilesOrBuilder();

    /**
     * <code>.build_event_stream.TargetComplete completed = 8;</code>
     * @return Whether the completed field is set.
     */
    boolean hasCompleted();
    /**
     * <code>.build_event_stream.TargetComplete completed = 8;</code>
     * @return The completed.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete getCompleted();
    /**
     * <code>.build_event_stream.TargetComplete completed = 8;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetCompleteOrBuilder getCompletedOrBuilder();

    /**
     * <code>.build_event_stream.TestResult test_result = 10;</code>
     * @return Whether the testResult field is set.
     */
    boolean hasTestResult();
    /**
     * <code>.build_event_stream.TestResult test_result = 10;</code>
     * @return The testResult.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult getTestResult();
    /**
     * <code>.build_event_stream.TestResult test_result = 10;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResultOrBuilder getTestResultOrBuilder();

    /**
     * <code>.build_event_stream.TestSummary test_summary = 9;</code>
     * @return Whether the testSummary field is set.
     */
    boolean hasTestSummary();
    /**
     * <code>.build_event_stream.TestSummary test_summary = 9;</code>
     * @return The testSummary.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary getTestSummary();
    /**
     * <code>.build_event_stream.TestSummary test_summary = 9;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummaryOrBuilder getTestSummaryOrBuilder();

    /**
     * <code>.build_event_stream.TargetSummary target_summary = 28;</code>
     * @return Whether the targetSummary field is set.
     */
    boolean hasTargetSummary();
    /**
     * <code>.build_event_stream.TargetSummary target_summary = 28;</code>
     * @return The targetSummary.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary getTargetSummary();
    /**
     * <code>.build_event_stream.TargetSummary target_summary = 28;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummaryOrBuilder getTargetSummaryOrBuilder();

    /**
     * <code>.build_event_stream.BuildFinished finished = 14;</code>
     * @return Whether the finished field is set.
     */
    boolean hasFinished();
    /**
     * <code>.build_event_stream.BuildFinished finished = 14;</code>
     * @return The finished.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished getFinished();
    /**
     * <code>.build_event_stream.BuildFinished finished = 14;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinishedOrBuilder getFinishedOrBuilder();

    /**
     * <code>.build_event_stream.BuildToolLogs build_tool_logs = 23;</code>
     * @return Whether the buildToolLogs field is set.
     */
    boolean hasBuildToolLogs();
    /**
     * <code>.build_event_stream.BuildToolLogs build_tool_logs = 23;</code>
     * @return The buildToolLogs.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs getBuildToolLogs();
    /**
     * <code>.build_event_stream.BuildToolLogs build_tool_logs = 23;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogsOrBuilder getBuildToolLogsOrBuilder();

    /**
     * <code>.build_event_stream.BuildMetrics build_metrics = 24;</code>
     * @return Whether the buildMetrics field is set.
     */
    boolean hasBuildMetrics();
    /**
     * <code>.build_event_stream.BuildMetrics build_metrics = 24;</code>
     * @return The buildMetrics.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics getBuildMetrics();
    /**
     * <code>.build_event_stream.BuildMetrics build_metrics = 24;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetricsOrBuilder getBuildMetricsOrBuilder();

    /**
     * <code>.build_event_stream.WorkspaceConfig workspace_info = 25;</code>
     * @return Whether the workspaceInfo field is set.
     */
    boolean hasWorkspaceInfo();
    /**
     * <code>.build_event_stream.WorkspaceConfig workspace_info = 25;</code>
     * @return The workspaceInfo.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig getWorkspaceInfo();
    /**
     * <code>.build_event_stream.WorkspaceConfig workspace_info = 25;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfigOrBuilder getWorkspaceInfoOrBuilder();

    /**
     * <code>.build_event_stream.BuildMetadata build_metadata = 26;</code>
     * @return Whether the buildMetadata field is set.
     */
    boolean hasBuildMetadata();
    /**
     * <code>.build_event_stream.BuildMetadata build_metadata = 26;</code>
     * @return The buildMetadata.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata getBuildMetadata();
    /**
     * <code>.build_event_stream.BuildMetadata build_metadata = 26;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadataOrBuilder getBuildMetadataOrBuilder();

    /**
     * <code>.build_event_stream.ConvenienceSymlinksIdentified convenience_symlinks_identified = 27;</code>
     * @return Whether the convenienceSymlinksIdentified field is set.
     */
    boolean hasConvenienceSymlinksIdentified();
    /**
     * <code>.build_event_stream.ConvenienceSymlinksIdentified convenience_symlinks_identified = 27;</code>
     * @return The convenienceSymlinksIdentified.
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified getConvenienceSymlinksIdentified();
    /**
     * <code>.build_event_stream.ConvenienceSymlinksIdentified convenience_symlinks_identified = 27;</code>
     */
    com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentifiedOrBuilder getConvenienceSymlinksIdentifiedOrBuilder();

    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent.PayloadCase getPayloadCase();
  }
  /**
   * <pre>
   * Message describing a build event. Events will have an identifier that
   * is unique within a given build invocation; they also announce follow-up
   * events as children. More details, which are specific to the kind of event
   * that is observed, is provided in the payload. More options for the payload
   * might be added in the future.
   * </pre>
   *
   * Protobuf type {@code build_event_stream.BuildEvent}
   */
  public static final class BuildEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build_event_stream.BuildEvent)
      BuildEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BuildEvent.newBuilder() to construct.
    private BuildEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BuildEvent() {
      children_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BuildEvent();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEvent_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent.Builder.class);
    }

    private int payloadCase_ = 0;
    private java.lang.Object payload_;
    public enum PayloadCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      PROGRESS(3),
      ABORTED(4),
      STARTED(5),
      UNSTRUCTURED_COMMAND_LINE(12),
      STRUCTURED_COMMAND_LINE(22),
      OPTIONS_PARSED(13),
      WORKSPACE_STATUS(16),
      FETCH(21),
      CONFIGURATION(17),
      EXPANDED(6),
      CONFIGURED(18),
      ACTION(7),
      NAMED_SET_OF_FILES(15),
      COMPLETED(8),
      TEST_RESULT(10),
      TEST_SUMMARY(9),
      TARGET_SUMMARY(28),
      FINISHED(14),
      BUILD_TOOL_LOGS(23),
      BUILD_METRICS(24),
      WORKSPACE_INFO(25),
      BUILD_METADATA(26),
      CONVENIENCE_SYMLINKS_IDENTIFIED(27),
      PAYLOAD_NOT_SET(0);
      private final int value;
      private PayloadCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static PayloadCase valueOf(int value) {
        return forNumber(value);
      }

      public static PayloadCase forNumber(int value) {
        switch (value) {
          case 3: return PROGRESS;
          case 4: return ABORTED;
          case 5: return STARTED;
          case 12: return UNSTRUCTURED_COMMAND_LINE;
          case 22: return STRUCTURED_COMMAND_LINE;
          case 13: return OPTIONS_PARSED;
          case 16: return WORKSPACE_STATUS;
          case 21: return FETCH;
          case 17: return CONFIGURATION;
          case 6: return EXPANDED;
          case 18: return CONFIGURED;
          case 7: return ACTION;
          case 15: return NAMED_SET_OF_FILES;
          case 8: return COMPLETED;
          case 10: return TEST_RESULT;
          case 9: return TEST_SUMMARY;
          case 28: return TARGET_SUMMARY;
          case 14: return FINISHED;
          case 23: return BUILD_TOOL_LOGS;
          case 24: return BUILD_METRICS;
          case 25: return WORKSPACE_INFO;
          case 26: return BUILD_METADATA;
          case 27: return CONVENIENCE_SYMLINKS_IDENTIFIED;
          case 0: return PAYLOAD_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public PayloadCase
    getPayloadCase() {
      return PayloadCase.forNumber(
          payloadCase_);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId id_;
    /**
     * <code>.build_event_stream.BuildEventId id = 1;</code>
     * @return Whether the id field is set.
     */
    @java.lang.Override
    public boolean hasId() {
      return id_ != null;
    }
    /**
     * <code>.build_event_stream.BuildEventId id = 1;</code>
     * @return The id.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId getId() {
      return id_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.getDefaultInstance() : id_;
    }
    /**
     * <code>.build_event_stream.BuildEventId id = 1;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventIdOrBuilder getIdOrBuilder() {
      return id_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.getDefaultInstance() : id_;
    }

    public static final int CHILDREN_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId> children_;
    /**
     * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId> getChildrenList() {
      return children_;
    }
    /**
     * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventIdOrBuilder> 
        getChildrenOrBuilderList() {
      return children_;
    }
    /**
     * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
     */
    @java.lang.Override
    public int getChildrenCount() {
      return children_.size();
    }
    /**
     * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId getChildren(int index) {
      return children_.get(index);
    }
    /**
     * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventIdOrBuilder getChildrenOrBuilder(
        int index) {
      return children_.get(index);
    }

    public static final int LAST_MESSAGE_FIELD_NUMBER = 20;
    private boolean lastMessage_ = false;
    /**
     * <code>bool last_message = 20;</code>
     * @return The lastMessage.
     */
    @java.lang.Override
    public boolean getLastMessage() {
      return lastMessage_;
    }

    public static final int PROGRESS_FIELD_NUMBER = 3;
    /**
     * <code>.build_event_stream.Progress progress = 3;</code>
     * @return Whether the progress field is set.
     */
    @java.lang.Override
    public boolean hasProgress() {
      return payloadCase_ == 3;
    }
    /**
     * <code>.build_event_stream.Progress progress = 3;</code>
     * @return The progress.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress getProgress() {
      if (payloadCase_ == 3) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.Progress progress = 3;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ProgressOrBuilder getProgressOrBuilder() {
      if (payloadCase_ == 3) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress.getDefaultInstance();
    }

    public static final int ABORTED_FIELD_NUMBER = 4;
    /**
     * <code>.build_event_stream.Aborted aborted = 4;</code>
     * @return Whether the aborted field is set.
     */
    @java.lang.Override
    public boolean hasAborted() {
      return payloadCase_ == 4;
    }
    /**
     * <code>.build_event_stream.Aborted aborted = 4;</code>
     * @return The aborted.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted getAborted() {
      if (payloadCase_ == 4) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.Aborted aborted = 4;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.AbortedOrBuilder getAbortedOrBuilder() {
      if (payloadCase_ == 4) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.getDefaultInstance();
    }

    public static final int STARTED_FIELD_NUMBER = 5;
    /**
     * <code>.build_event_stream.BuildStarted started = 5;</code>
     * @return Whether the started field is set.
     */
    @java.lang.Override
    public boolean hasStarted() {
      return payloadCase_ == 5;
    }
    /**
     * <code>.build_event_stream.BuildStarted started = 5;</code>
     * @return The started.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted getStarted() {
      if (payloadCase_ == 5) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildStarted started = 5;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStartedOrBuilder getStartedOrBuilder() {
      if (payloadCase_ == 5) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted.getDefaultInstance();
    }

    public static final int UNSTRUCTURED_COMMAND_LINE_FIELD_NUMBER = 12;
    /**
     * <code>.build_event_stream.UnstructuredCommandLine unstructured_command_line = 12;</code>
     * @return Whether the unstructuredCommandLine field is set.
     */
    @java.lang.Override
    public boolean hasUnstructuredCommandLine() {
      return payloadCase_ == 12;
    }
    /**
     * <code>.build_event_stream.UnstructuredCommandLine unstructured_command_line = 12;</code>
     * @return The unstructuredCommandLine.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine getUnstructuredCommandLine() {
      if (payloadCase_ == 12) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.UnstructuredCommandLine unstructured_command_line = 12;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLineOrBuilder getUnstructuredCommandLineOrBuilder() {
      if (payloadCase_ == 12) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine.getDefaultInstance();
    }

    public static final int STRUCTURED_COMMAND_LINE_FIELD_NUMBER = 22;
    /**
     * <code>.command_line.CommandLine structured_command_line = 22;</code>
     * @return Whether the structuredCommandLine field is set.
     */
    @java.lang.Override
    public boolean hasStructuredCommandLine() {
      return payloadCase_ == 22;
    }
    /**
     * <code>.command_line.CommandLine structured_command_line = 22;</code>
     * @return The structuredCommandLine.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine getStructuredCommandLine() {
      if (payloadCase_ == 22) {
         return (com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine) payload_;
      }
      return com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine.getDefaultInstance();
    }
    /**
     * <code>.command_line.CommandLine structured_command_line = 22;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLineOrBuilder getStructuredCommandLineOrBuilder() {
      if (payloadCase_ == 22) {
         return (com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine) payload_;
      }
      return com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine.getDefaultInstance();
    }

    public static final int OPTIONS_PARSED_FIELD_NUMBER = 13;
    /**
     * <code>.build_event_stream.OptionsParsed options_parsed = 13;</code>
     * @return Whether the optionsParsed field is set.
     */
    @java.lang.Override
    public boolean hasOptionsParsed() {
      return payloadCase_ == 13;
    }
    /**
     * <code>.build_event_stream.OptionsParsed options_parsed = 13;</code>
     * @return The optionsParsed.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed getOptionsParsed() {
      if (payloadCase_ == 13) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.OptionsParsed options_parsed = 13;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsedOrBuilder getOptionsParsedOrBuilder() {
      if (payloadCase_ == 13) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed.getDefaultInstance();
    }

    public static final int WORKSPACE_STATUS_FIELD_NUMBER = 16;
    /**
     * <code>.build_event_stream.WorkspaceStatus workspace_status = 16;</code>
     * @return Whether the workspaceStatus field is set.
     */
    @java.lang.Override
    public boolean hasWorkspaceStatus() {
      return payloadCase_ == 16;
    }
    /**
     * <code>.build_event_stream.WorkspaceStatus workspace_status = 16;</code>
     * @return The workspaceStatus.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus getWorkspaceStatus() {
      if (payloadCase_ == 16) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.WorkspaceStatus workspace_status = 16;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatusOrBuilder getWorkspaceStatusOrBuilder() {
      if (payloadCase_ == 16) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.getDefaultInstance();
    }

    public static final int FETCH_FIELD_NUMBER = 21;
    /**
     * <code>.build_event_stream.Fetch fetch = 21;</code>
     * @return Whether the fetch field is set.
     */
    @java.lang.Override
    public boolean hasFetch() {
      return payloadCase_ == 21;
    }
    /**
     * <code>.build_event_stream.Fetch fetch = 21;</code>
     * @return The fetch.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch getFetch() {
      if (payloadCase_ == 21) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.Fetch fetch = 21;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FetchOrBuilder getFetchOrBuilder() {
      if (payloadCase_ == 21) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch.getDefaultInstance();
    }

    public static final int CONFIGURATION_FIELD_NUMBER = 17;
    /**
     * <code>.build_event_stream.Configuration configuration = 17;</code>
     * @return Whether the configuration field is set.
     */
    @java.lang.Override
    public boolean hasConfiguration() {
      return payloadCase_ == 17;
    }
    /**
     * <code>.build_event_stream.Configuration configuration = 17;</code>
     * @return The configuration.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration getConfiguration() {
      if (payloadCase_ == 17) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.Configuration configuration = 17;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConfigurationOrBuilder getConfigurationOrBuilder() {
      if (payloadCase_ == 17) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration.getDefaultInstance();
    }

    public static final int EXPANDED_FIELD_NUMBER = 6;
    /**
     * <code>.build_event_stream.PatternExpanded expanded = 6;</code>
     * @return Whether the expanded field is set.
     */
    @java.lang.Override
    public boolean hasExpanded() {
      return payloadCase_ == 6;
    }
    /**
     * <code>.build_event_stream.PatternExpanded expanded = 6;</code>
     * @return The expanded.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded getExpanded() {
      if (payloadCase_ == 6) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.PatternExpanded expanded = 6;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpandedOrBuilder getExpandedOrBuilder() {
      if (payloadCase_ == 6) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.getDefaultInstance();
    }

    public static final int CONFIGURED_FIELD_NUMBER = 18;
    /**
     * <code>.build_event_stream.TargetConfigured configured = 18;</code>
     * @return Whether the configured field is set.
     */
    @java.lang.Override
    public boolean hasConfigured() {
      return payloadCase_ == 18;
    }
    /**
     * <code>.build_event_stream.TargetConfigured configured = 18;</code>
     * @return The configured.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured getConfigured() {
      if (payloadCase_ == 18) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.TargetConfigured configured = 18;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfiguredOrBuilder getConfiguredOrBuilder() {
      if (payloadCase_ == 18) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured.getDefaultInstance();
    }

    public static final int ACTION_FIELD_NUMBER = 7;
    /**
     * <code>.build_event_stream.ActionExecuted action = 7;</code>
     * @return Whether the action field is set.
     */
    @java.lang.Override
    public boolean hasAction() {
      return payloadCase_ == 7;
    }
    /**
     * <code>.build_event_stream.ActionExecuted action = 7;</code>
     * @return The action.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted getAction() {
      if (payloadCase_ == 7) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.ActionExecuted action = 7;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecutedOrBuilder getActionOrBuilder() {
      if (payloadCase_ == 7) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted.getDefaultInstance();
    }

    public static final int NAMED_SET_OF_FILES_FIELD_NUMBER = 15;
    /**
     * <code>.build_event_stream.NamedSetOfFiles named_set_of_files = 15;</code>
     * @return Whether the namedSetOfFiles field is set.
     */
    @java.lang.Override
    public boolean hasNamedSetOfFiles() {
      return payloadCase_ == 15;
    }
    /**
     * <code>.build_event_stream.NamedSetOfFiles named_set_of_files = 15;</code>
     * @return The namedSetOfFiles.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles getNamedSetOfFiles() {
      if (payloadCase_ == 15) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.NamedSetOfFiles named_set_of_files = 15;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFilesOrBuilder getNamedSetOfFilesOrBuilder() {
      if (payloadCase_ == 15) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles.getDefaultInstance();
    }

    public static final int COMPLETED_FIELD_NUMBER = 8;
    /**
     * <code>.build_event_stream.TargetComplete completed = 8;</code>
     * @return Whether the completed field is set.
     */
    @java.lang.Override
    public boolean hasCompleted() {
      return payloadCase_ == 8;
    }
    /**
     * <code>.build_event_stream.TargetComplete completed = 8;</code>
     * @return The completed.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete getCompleted() {
      if (payloadCase_ == 8) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.TargetComplete completed = 8;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetCompleteOrBuilder getCompletedOrBuilder() {
      if (payloadCase_ == 8) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete.getDefaultInstance();
    }

    public static final int TEST_RESULT_FIELD_NUMBER = 10;
    /**
     * <code>.build_event_stream.TestResult test_result = 10;</code>
     * @return Whether the testResult field is set.
     */
    @java.lang.Override
    public boolean hasTestResult() {
      return payloadCase_ == 10;
    }
    /**
     * <code>.build_event_stream.TestResult test_result = 10;</code>
     * @return The testResult.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult getTestResult() {
      if (payloadCase_ == 10) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.TestResult test_result = 10;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResultOrBuilder getTestResultOrBuilder() {
      if (payloadCase_ == 10) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.getDefaultInstance();
    }

    public static final int TEST_SUMMARY_FIELD_NUMBER = 9;
    /**
     * <code>.build_event_stream.TestSummary test_summary = 9;</code>
     * @return Whether the testSummary field is set.
     */
    @java.lang.Override
    public boolean hasTestSummary() {
      return payloadCase_ == 9;
    }
    /**
     * <code>.build_event_stream.TestSummary test_summary = 9;</code>
     * @return The testSummary.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary getTestSummary() {
      if (payloadCase_ == 9) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.TestSummary test_summary = 9;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummaryOrBuilder getTestSummaryOrBuilder() {
      if (payloadCase_ == 9) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary.getDefaultInstance();
    }

    public static final int TARGET_SUMMARY_FIELD_NUMBER = 28;
    /**
     * <code>.build_event_stream.TargetSummary target_summary = 28;</code>
     * @return Whether the targetSummary field is set.
     */
    @java.lang.Override
    public boolean hasTargetSummary() {
      return payloadCase_ == 28;
    }
    /**
     * <code>.build_event_stream.TargetSummary target_summary = 28;</code>
     * @return The targetSummary.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary getTargetSummary() {
      if (payloadCase_ == 28) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.TargetSummary target_summary = 28;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummaryOrBuilder getTargetSummaryOrBuilder() {
      if (payloadCase_ == 28) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary.getDefaultInstance();
    }

    public static final int FINISHED_FIELD_NUMBER = 14;
    /**
     * <code>.build_event_stream.BuildFinished finished = 14;</code>
     * @return Whether the finished field is set.
     */
    @java.lang.Override
    public boolean hasFinished() {
      return payloadCase_ == 14;
    }
    /**
     * <code>.build_event_stream.BuildFinished finished = 14;</code>
     * @return The finished.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished getFinished() {
      if (payloadCase_ == 14) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildFinished finished = 14;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinishedOrBuilder getFinishedOrBuilder() {
      if (payloadCase_ == 14) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.getDefaultInstance();
    }

    public static final int BUILD_TOOL_LOGS_FIELD_NUMBER = 23;
    /**
     * <code>.build_event_stream.BuildToolLogs build_tool_logs = 23;</code>
     * @return Whether the buildToolLogs field is set.
     */
    @java.lang.Override
    public boolean hasBuildToolLogs() {
      return payloadCase_ == 23;
    }
    /**
     * <code>.build_event_stream.BuildToolLogs build_tool_logs = 23;</code>
     * @return The buildToolLogs.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs getBuildToolLogs() {
      if (payloadCase_ == 23) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildToolLogs build_tool_logs = 23;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogsOrBuilder getBuildToolLogsOrBuilder() {
      if (payloadCase_ == 23) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs.getDefaultInstance();
    }

    public static final int BUILD_METRICS_FIELD_NUMBER = 24;
    /**
     * <code>.build_event_stream.BuildMetrics build_metrics = 24;</code>
     * @return Whether the buildMetrics field is set.
     */
    @java.lang.Override
    public boolean hasBuildMetrics() {
      return payloadCase_ == 24;
    }
    /**
     * <code>.build_event_stream.BuildMetrics build_metrics = 24;</code>
     * @return The buildMetrics.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics getBuildMetrics() {
      if (payloadCase_ == 24) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildMetrics build_metrics = 24;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetricsOrBuilder getBuildMetricsOrBuilder() {
      if (payloadCase_ == 24) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.getDefaultInstance();
    }

    public static final int WORKSPACE_INFO_FIELD_NUMBER = 25;
    /**
     * <code>.build_event_stream.WorkspaceConfig workspace_info = 25;</code>
     * @return Whether the workspaceInfo field is set.
     */
    @java.lang.Override
    public boolean hasWorkspaceInfo() {
      return payloadCase_ == 25;
    }
    /**
     * <code>.build_event_stream.WorkspaceConfig workspace_info = 25;</code>
     * @return The workspaceInfo.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig getWorkspaceInfo() {
      if (payloadCase_ == 25) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.WorkspaceConfig workspace_info = 25;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfigOrBuilder getWorkspaceInfoOrBuilder() {
      if (payloadCase_ == 25) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig.getDefaultInstance();
    }

    public static final int BUILD_METADATA_FIELD_NUMBER = 26;
    /**
     * <code>.build_event_stream.BuildMetadata build_metadata = 26;</code>
     * @return Whether the buildMetadata field is set.
     */
    @java.lang.Override
    public boolean hasBuildMetadata() {
      return payloadCase_ == 26;
    }
    /**
     * <code>.build_event_stream.BuildMetadata build_metadata = 26;</code>
     * @return The buildMetadata.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata getBuildMetadata() {
      if (payloadCase_ == 26) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.BuildMetadata build_metadata = 26;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadataOrBuilder getBuildMetadataOrBuilder() {
      if (payloadCase_ == 26) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata.getDefaultInstance();
    }

    public static final int CONVENIENCE_SYMLINKS_IDENTIFIED_FIELD_NUMBER = 27;
    /**
     * <code>.build_event_stream.ConvenienceSymlinksIdentified convenience_symlinks_identified = 27;</code>
     * @return Whether the convenienceSymlinksIdentified field is set.
     */
    @java.lang.Override
    public boolean hasConvenienceSymlinksIdentified() {
      return payloadCase_ == 27;
    }
    /**
     * <code>.build_event_stream.ConvenienceSymlinksIdentified convenience_symlinks_identified = 27;</code>
     * @return The convenienceSymlinksIdentified.
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified getConvenienceSymlinksIdentified() {
      if (payloadCase_ == 27) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified.getDefaultInstance();
    }
    /**
     * <code>.build_event_stream.ConvenienceSymlinksIdentified convenience_symlinks_identified = 27;</code>
     */
    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentifiedOrBuilder getConvenienceSymlinksIdentifiedOrBuilder() {
      if (payloadCase_ == 27) {
         return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified) payload_;
      }
      return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified.getDefaultInstance();
    }

    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 (id_ != null) {
        output.writeMessage(1, getId());
      }
      for (int i = 0; i < children_.size(); i++) {
        output.writeMessage(2, children_.get(i));
      }
      if (payloadCase_ == 3) {
        output.writeMessage(3, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress) payload_);
      }
      if (payloadCase_ == 4) {
        output.writeMessage(4, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted) payload_);
      }
      if (payloadCase_ == 5) {
        output.writeMessage(5, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted) payload_);
      }
      if (payloadCase_ == 6) {
        output.writeMessage(6, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded) payload_);
      }
      if (payloadCase_ == 7) {
        output.writeMessage(7, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted) payload_);
      }
      if (payloadCase_ == 8) {
        output.writeMessage(8, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete) payload_);
      }
      if (payloadCase_ == 9) {
        output.writeMessage(9, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary) payload_);
      }
      if (payloadCase_ == 10) {
        output.writeMessage(10, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult) payload_);
      }
      if (payloadCase_ == 12) {
        output.writeMessage(12, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine) payload_);
      }
      if (payloadCase_ == 13) {
        output.writeMessage(13, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed) payload_);
      }
      if (payloadCase_ == 14) {
        output.writeMessage(14, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished) payload_);
      }
      if (payloadCase_ == 15) {
        output.writeMessage(15, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles) payload_);
      }
      if (payloadCase_ == 16) {
        output.writeMessage(16, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus) payload_);
      }
      if (payloadCase_ == 17) {
        output.writeMessage(17, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration) payload_);
      }
      if (payloadCase_ == 18) {
        output.writeMessage(18, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured) payload_);
      }
      if (lastMessage_ != false) {
        output.writeBool(20, lastMessage_);
      }
      if (payloadCase_ == 21) {
        output.writeMessage(21, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch) payload_);
      }
      if (payloadCase_ == 22) {
        output.writeMessage(22, (com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine) payload_);
      }
      if (payloadCase_ == 23) {
        output.writeMessage(23, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs) payload_);
      }
      if (payloadCase_ == 24) {
        output.writeMessage(24, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics) payload_);
      }
      if (payloadCase_ == 25) {
        output.writeMessage(25, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig) payload_);
      }
      if (payloadCase_ == 26) {
        output.writeMessage(26, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata) payload_);
      }
      if (payloadCase_ == 27) {
        output.writeMessage(27, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified) payload_);
      }
      if (payloadCase_ == 28) {
        output.writeMessage(28, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary) payload_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (id_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getId());
      }
      for (int i = 0; i < children_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, children_.get(i));
      }
      if (payloadCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress) payload_);
      }
      if (payloadCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted) payload_);
      }
      if (payloadCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted) payload_);
      }
      if (payloadCase_ == 6) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded) payload_);
      }
      if (payloadCase_ == 7) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted) payload_);
      }
      if (payloadCase_ == 8) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete) payload_);
      }
      if (payloadCase_ == 9) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary) payload_);
      }
      if (payloadCase_ == 10) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult) payload_);
      }
      if (payloadCase_ == 12) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine) payload_);
      }
      if (payloadCase_ == 13) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed) payload_);
      }
      if (payloadCase_ == 14) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished) payload_);
      }
      if (payloadCase_ == 15) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(15, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles) payload_);
      }
      if (payloadCase_ == 16) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(16, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus) payload_);
      }
      if (payloadCase_ == 17) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(17, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration) payload_);
      }
      if (payloadCase_ == 18) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(18, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured) payload_);
      }
      if (lastMessage_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(20, lastMessage_);
      }
      if (payloadCase_ == 21) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(21, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch) payload_);
      }
      if (payloadCase_ == 22) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(22, (com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine) payload_);
      }
      if (payloadCase_ == 23) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(23, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs) payload_);
      }
      if (payloadCase_ == 24) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(24, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics) payload_);
      }
      if (payloadCase_ == 25) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(25, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig) payload_);
      }
      if (payloadCase_ == 26) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(26, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata) payload_);
      }
      if (payloadCase_ == 27) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(27, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified) payload_);
      }
      if (payloadCase_ == 28) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(28, (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary) payload_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent other = (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent) obj;

      if (hasId() != other.hasId()) return false;
      if (hasId()) {
        if (!getId()
            .equals(other.getId())) return false;
      }
      if (!getChildrenList()
          .equals(other.getChildrenList())) return false;
      if (getLastMessage()
          != other.getLastMessage()) return false;
      if (!getPayloadCase().equals(other.getPayloadCase())) return false;
      switch (payloadCase_) {
        case 3:
          if (!getProgress()
              .equals(other.getProgress())) return false;
          break;
        case 4:
          if (!getAborted()
              .equals(other.getAborted())) return false;
          break;
        case 5:
          if (!getStarted()
              .equals(other.getStarted())) return false;
          break;
        case 12:
          if (!getUnstructuredCommandLine()
              .equals(other.getUnstructuredCommandLine())) return false;
          break;
        case 22:
          if (!getStructuredCommandLine()
              .equals(other.getStructuredCommandLine())) return false;
          break;
        case 13:
          if (!getOptionsParsed()
              .equals(other.getOptionsParsed())) return false;
          break;
        case 16:
          if (!getWorkspaceStatus()
              .equals(other.getWorkspaceStatus())) return false;
          break;
        case 21:
          if (!getFetch()
              .equals(other.getFetch())) return false;
          break;
        case 17:
          if (!getConfiguration()
              .equals(other.getConfiguration())) return false;
          break;
        case 6:
          if (!getExpanded()
              .equals(other.getExpanded())) return false;
          break;
        case 18:
          if (!getConfigured()
              .equals(other.getConfigured())) return false;
          break;
        case 7:
          if (!getAction()
              .equals(other.getAction())) return false;
          break;
        case 15:
          if (!getNamedSetOfFiles()
              .equals(other.getNamedSetOfFiles())) return false;
          break;
        case 8:
          if (!getCompleted()
              .equals(other.getCompleted())) return false;
          break;
        case 10:
          if (!getTestResult()
              .equals(other.getTestResult())) return false;
          break;
        case 9:
          if (!getTestSummary()
              .equals(other.getTestSummary())) return false;
          break;
        case 28:
          if (!getTargetSummary()
              .equals(other.getTargetSummary())) return false;
          break;
        case 14:
          if (!getFinished()
              .equals(other.getFinished())) return false;
          break;
        case 23:
          if (!getBuildToolLogs()
              .equals(other.getBuildToolLogs())) return false;
          break;
        case 24:
          if (!getBuildMetrics()
              .equals(other.getBuildMetrics())) return false;
          break;
        case 25:
          if (!getWorkspaceInfo()
              .equals(other.getWorkspaceInfo())) return false;
          break;
        case 26:
          if (!getBuildMetadata()
              .equals(other.getBuildMetadata())) return false;
          break;
        case 27:
          if (!getConvenienceSymlinksIdentified()
              .equals(other.getConvenienceSymlinksIdentified())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasId()) {
        hash = (37 * hash) + ID_FIELD_NUMBER;
        hash = (53 * hash) + getId().hashCode();
      }
      if (getChildrenCount() > 0) {
        hash = (37 * hash) + CHILDREN_FIELD_NUMBER;
        hash = (53 * hash) + getChildrenList().hashCode();
      }
      hash = (37 * hash) + LAST_MESSAGE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getLastMessage());
      switch (payloadCase_) {
        case 3:
          hash = (37 * hash) + PROGRESS_FIELD_NUMBER;
          hash = (53 * hash) + getProgress().hashCode();
          break;
        case 4:
          hash = (37 * hash) + ABORTED_FIELD_NUMBER;
          hash = (53 * hash) + getAborted().hashCode();
          break;
        case 5:
          hash = (37 * hash) + STARTED_FIELD_NUMBER;
          hash = (53 * hash) + getStarted().hashCode();
          break;
        case 12:
          hash = (37 * hash) + UNSTRUCTURED_COMMAND_LINE_FIELD_NUMBER;
          hash = (53 * hash) + getUnstructuredCommandLine().hashCode();
          break;
        case 22:
          hash = (37 * hash) + STRUCTURED_COMMAND_LINE_FIELD_NUMBER;
          hash = (53 * hash) + getStructuredCommandLine().hashCode();
          break;
        case 13:
          hash = (37 * hash) + OPTIONS_PARSED_FIELD_NUMBER;
          hash = (53 * hash) + getOptionsParsed().hashCode();
          break;
        case 16:
          hash = (37 * hash) + WORKSPACE_STATUS_FIELD_NUMBER;
          hash = (53 * hash) + getWorkspaceStatus().hashCode();
          break;
        case 21:
          hash = (37 * hash) + FETCH_FIELD_NUMBER;
          hash = (53 * hash) + getFetch().hashCode();
          break;
        case 17:
          hash = (37 * hash) + CONFIGURATION_FIELD_NUMBER;
          hash = (53 * hash) + getConfiguration().hashCode();
          break;
        case 6:
          hash = (37 * hash) + EXPANDED_FIELD_NUMBER;
          hash = (53 * hash) + getExpanded().hashCode();
          break;
        case 18:
          hash = (37 * hash) + CONFIGURED_FIELD_NUMBER;
          hash = (53 * hash) + getConfigured().hashCode();
          break;
        case 7:
          hash = (37 * hash) + ACTION_FIELD_NUMBER;
          hash = (53 * hash) + getAction().hashCode();
          break;
        case 15:
          hash = (37 * hash) + NAMED_SET_OF_FILES_FIELD_NUMBER;
          hash = (53 * hash) + getNamedSetOfFiles().hashCode();
          break;
        case 8:
          hash = (37 * hash) + COMPLETED_FIELD_NUMBER;
          hash = (53 * hash) + getCompleted().hashCode();
          break;
        case 10:
          hash = (37 * hash) + TEST_RESULT_FIELD_NUMBER;
          hash = (53 * hash) + getTestResult().hashCode();
          break;
        case 9:
          hash = (37 * hash) + TEST_SUMMARY_FIELD_NUMBER;
          hash = (53 * hash) + getTestSummary().hashCode();
          break;
        case 28:
          hash = (37 * hash) + TARGET_SUMMARY_FIELD_NUMBER;
          hash = (53 * hash) + getTargetSummary().hashCode();
          break;
        case 14:
          hash = (37 * hash) + FINISHED_FIELD_NUMBER;
          hash = (53 * hash) + getFinished().hashCode();
          break;
        case 23:
          hash = (37 * hash) + BUILD_TOOL_LOGS_FIELD_NUMBER;
          hash = (53 * hash) + getBuildToolLogs().hashCode();
          break;
        case 24:
          hash = (37 * hash) + BUILD_METRICS_FIELD_NUMBER;
          hash = (53 * hash) + getBuildMetrics().hashCode();
          break;
        case 25:
          hash = (37 * hash) + WORKSPACE_INFO_FIELD_NUMBER;
          hash = (53 * hash) + getWorkspaceInfo().hashCode();
          break;
        case 26:
          hash = (37 * hash) + BUILD_METADATA_FIELD_NUMBER;
          hash = (53 * hash) + getBuildMetadata().hashCode();
          break;
        case 27:
          hash = (37 * hash) + CONVENIENCE_SYMLINKS_IDENTIFIED_FIELD_NUMBER;
          hash = (53 * hash) + getConvenienceSymlinksIdentified().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent 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.buildeventstream.BuildEventStreamProtos.BuildEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent 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.buildeventstream.BuildEventStreamProtos.BuildEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent 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.buildeventstream.BuildEventStreamProtos.BuildEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent 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.buildeventstream.BuildEventStreamProtos.BuildEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent 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.buildeventstream.BuildEventStreamProtos.BuildEvent 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.buildeventstream.BuildEventStreamProtos.BuildEvent 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.buildeventstream.BuildEventStreamProtos.BuildEvent 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>
     * Message describing a build event. Events will have an identifier that
     * is unique within a given build invocation; they also announce follow-up
     * events as children. More details, which are specific to the kind of event
     * that is observed, is provided in the payload. More options for the payload
     * might be added in the future.
     * </pre>
     *
     * Protobuf type {@code build_event_stream.BuildEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:build_event_stream.BuildEvent)
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent.class, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        id_ = null;
        if (idBuilder_ != null) {
          idBuilder_.dispose();
          idBuilder_ = null;
        }
        if (childrenBuilder_ == null) {
          children_ = java.util.Collections.emptyList();
        } else {
          children_ = null;
          childrenBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        lastMessage_ = false;
        if (progressBuilder_ != null) {
          progressBuilder_.clear();
        }
        if (abortedBuilder_ != null) {
          abortedBuilder_.clear();
        }
        if (startedBuilder_ != null) {
          startedBuilder_.clear();
        }
        if (unstructuredCommandLineBuilder_ != null) {
          unstructuredCommandLineBuilder_.clear();
        }
        if (structuredCommandLineBuilder_ != null) {
          structuredCommandLineBuilder_.clear();
        }
        if (optionsParsedBuilder_ != null) {
          optionsParsedBuilder_.clear();
        }
        if (workspaceStatusBuilder_ != null) {
          workspaceStatusBuilder_.clear();
        }
        if (fetchBuilder_ != null) {
          fetchBuilder_.clear();
        }
        if (configurationBuilder_ != null) {
          configurationBuilder_.clear();
        }
        if (expandedBuilder_ != null) {
          expandedBuilder_.clear();
        }
        if (configuredBuilder_ != null) {
          configuredBuilder_.clear();
        }
        if (actionBuilder_ != null) {
          actionBuilder_.clear();
        }
        if (namedSetOfFilesBuilder_ != null) {
          namedSetOfFilesBuilder_.clear();
        }
        if (completedBuilder_ != null) {
          completedBuilder_.clear();
        }
        if (testResultBuilder_ != null) {
          testResultBuilder_.clear();
        }
        if (testSummaryBuilder_ != null) {
          testSummaryBuilder_.clear();
        }
        if (targetSummaryBuilder_ != null) {
          targetSummaryBuilder_.clear();
        }
        if (finishedBuilder_ != null) {
          finishedBuilder_.clear();
        }
        if (buildToolLogsBuilder_ != null) {
          buildToolLogsBuilder_.clear();
        }
        if (buildMetricsBuilder_ != null) {
          buildMetricsBuilder_.clear();
        }
        if (workspaceInfoBuilder_ != null) {
          workspaceInfoBuilder_.clear();
        }
        if (buildMetadataBuilder_ != null) {
          buildMetadataBuilder_.clear();
        }
        if (convenienceSymlinksIdentifiedBuilder_ != null) {
          convenienceSymlinksIdentifiedBuilder_.clear();
        }
        payloadCase_ = 0;
        payload_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.internal_static_build_event_stream_BuildEvent_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent getDefaultInstanceForType() {
        return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent build() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent buildPartial() {
        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent result = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent result) {
        if (childrenBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            children_ = java.util.Collections.unmodifiableList(children_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.children_ = children_;
        } else {
          result.children_ = childrenBuilder_.build();
        }
      }

      private void buildPartial0(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.id_ = idBuilder_ == null
              ? id_
              : idBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.lastMessage_ = lastMessage_;
        }
      }

      private void buildPartialOneofs(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent result) {
        result.payloadCase_ = payloadCase_;
        result.payload_ = this.payload_;
        if (payloadCase_ == 3 &&
            progressBuilder_ != null) {
          result.payload_ = progressBuilder_.build();
        }
        if (payloadCase_ == 4 &&
            abortedBuilder_ != null) {
          result.payload_ = abortedBuilder_.build();
        }
        if (payloadCase_ == 5 &&
            startedBuilder_ != null) {
          result.payload_ = startedBuilder_.build();
        }
        if (payloadCase_ == 12 &&
            unstructuredCommandLineBuilder_ != null) {
          result.payload_ = unstructuredCommandLineBuilder_.build();
        }
        if (payloadCase_ == 22 &&
            structuredCommandLineBuilder_ != null) {
          result.payload_ = structuredCommandLineBuilder_.build();
        }
        if (payloadCase_ == 13 &&
            optionsParsedBuilder_ != null) {
          result.payload_ = optionsParsedBuilder_.build();
        }
        if (payloadCase_ == 16 &&
            workspaceStatusBuilder_ != null) {
          result.payload_ = workspaceStatusBuilder_.build();
        }
        if (payloadCase_ == 21 &&
            fetchBuilder_ != null) {
          result.payload_ = fetchBuilder_.build();
        }
        if (payloadCase_ == 17 &&
            configurationBuilder_ != null) {
          result.payload_ = configurationBuilder_.build();
        }
        if (payloadCase_ == 6 &&
            expandedBuilder_ != null) {
          result.payload_ = expandedBuilder_.build();
        }
        if (payloadCase_ == 18 &&
            configuredBuilder_ != null) {
          result.payload_ = configuredBuilder_.build();
        }
        if (payloadCase_ == 7 &&
            actionBuilder_ != null) {
          result.payload_ = actionBuilder_.build();
        }
        if (payloadCase_ == 15 &&
            namedSetOfFilesBuilder_ != null) {
          result.payload_ = namedSetOfFilesBuilder_.build();
        }
        if (payloadCase_ == 8 &&
            completedBuilder_ != null) {
          result.payload_ = completedBuilder_.build();
        }
        if (payloadCase_ == 10 &&
            testResultBuilder_ != null) {
          result.payload_ = testResultBuilder_.build();
        }
        if (payloadCase_ == 9 &&
            testSummaryBuilder_ != null) {
          result.payload_ = testSummaryBuilder_.build();
        }
        if (payloadCase_ == 28 &&
            targetSummaryBuilder_ != null) {
          result.payload_ = targetSummaryBuilder_.build();
        }
        if (payloadCase_ == 14 &&
            finishedBuilder_ != null) {
          result.payload_ = finishedBuilder_.build();
        }
        if (payloadCase_ == 23 &&
            buildToolLogsBuilder_ != null) {
          result.payload_ = buildToolLogsBuilder_.build();
        }
        if (payloadCase_ == 24 &&
            buildMetricsBuilder_ != null) {
          result.payload_ = buildMetricsBuilder_.build();
        }
        if (payloadCase_ == 25 &&
            workspaceInfoBuilder_ != null) {
          result.payload_ = workspaceInfoBuilder_.build();
        }
        if (payloadCase_ == 26 &&
            buildMetadataBuilder_ != null) {
          result.payload_ = buildMetadataBuilder_.build();
        }
        if (payloadCase_ == 27 &&
            convenienceSymlinksIdentifiedBuilder_ != null) {
          result.payload_ = convenienceSymlinksIdentifiedBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent) {
          return mergeFrom((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent other) {
        if (other == com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent.getDefaultInstance()) return this;
        if (other.hasId()) {
          mergeId(other.getId());
        }
        if (childrenBuilder_ == null) {
          if (!other.children_.isEmpty()) {
            if (children_.isEmpty()) {
              children_ = other.children_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureChildrenIsMutable();
              children_.addAll(other.children_);
            }
            onChanged();
          }
        } else {
          if (!other.children_.isEmpty()) {
            if (childrenBuilder_.isEmpty()) {
              childrenBuilder_.dispose();
              childrenBuilder_ = null;
              children_ = other.children_;
              bitField0_ = (bitField0_ & ~0x00000002);
              childrenBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getChildrenFieldBuilder() : null;
            } else {
              childrenBuilder_.addAllMessages(other.children_);
            }
          }
        }
        if (other.getLastMessage() != false) {
          setLastMessage(other.getLastMessage());
        }
        switch (other.getPayloadCase()) {
          case PROGRESS: {
            mergeProgress(other.getProgress());
            break;
          }
          case ABORTED: {
            mergeAborted(other.getAborted());
            break;
          }
          case STARTED: {
            mergeStarted(other.getStarted());
            break;
          }
          case UNSTRUCTURED_COMMAND_LINE: {
            mergeUnstructuredCommandLine(other.getUnstructuredCommandLine());
            break;
          }
          case STRUCTURED_COMMAND_LINE: {
            mergeStructuredCommandLine(other.getStructuredCommandLine());
            break;
          }
          case OPTIONS_PARSED: {
            mergeOptionsParsed(other.getOptionsParsed());
            break;
          }
          case WORKSPACE_STATUS: {
            mergeWorkspaceStatus(other.getWorkspaceStatus());
            break;
          }
          case FETCH: {
            mergeFetch(other.getFetch());
            break;
          }
          case CONFIGURATION: {
            mergeConfiguration(other.getConfiguration());
            break;
          }
          case EXPANDED: {
            mergeExpanded(other.getExpanded());
            break;
          }
          case CONFIGURED: {
            mergeConfigured(other.getConfigured());
            break;
          }
          case ACTION: {
            mergeAction(other.getAction());
            break;
          }
          case NAMED_SET_OF_FILES: {
            mergeNamedSetOfFiles(other.getNamedSetOfFiles());
            break;
          }
          case COMPLETED: {
            mergeCompleted(other.getCompleted());
            break;
          }
          case TEST_RESULT: {
            mergeTestResult(other.getTestResult());
            break;
          }
          case TEST_SUMMARY: {
            mergeTestSummary(other.getTestSummary());
            break;
          }
          case TARGET_SUMMARY: {
            mergeTargetSummary(other.getTargetSummary());
            break;
          }
          case FINISHED: {
            mergeFinished(other.getFinished());
            break;
          }
          case BUILD_TOOL_LOGS: {
            mergeBuildToolLogs(other.getBuildToolLogs());
            break;
          }
          case BUILD_METRICS: {
            mergeBuildMetrics(other.getBuildMetrics());
            break;
          }
          case WORKSPACE_INFO: {
            mergeWorkspaceInfo(other.getWorkspaceInfo());
            break;
          }
          case BUILD_METADATA: {
            mergeBuildMetadata(other.getBuildMetadata());
            break;
          }
          case CONVENIENCE_SYMLINKS_IDENTIFIED: {
            mergeConvenienceSymlinksIdentified(other.getConvenienceSymlinksIdentified());
            break;
          }
          case PAYLOAD_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getIdFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId m =
                    input.readMessage(
                        com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.parser(),
                        extensionRegistry);
                if (childrenBuilder_ == null) {
                  ensureChildrenIsMutable();
                  children_.add(m);
                } else {
                  childrenBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getProgressFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 3;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getAbortedFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 4;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getStartedFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 5;
                break;
              } // case 42
              case 50: {
                input.readMessage(
                    getExpandedFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 6;
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getActionFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 7;
                break;
              } // case 58
              case 66: {
                input.readMessage(
                    getCompletedFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 8;
                break;
              } // case 66
              case 74: {
                input.readMessage(
                    getTestSummaryFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 9;
                break;
              } // case 74
              case 82: {
                input.readMessage(
                    getTestResultFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 10;
                break;
              } // case 82
              case 98: {
                input.readMessage(
                    getUnstructuredCommandLineFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 12;
                break;
              } // case 98
              case 106: {
                input.readMessage(
                    getOptionsParsedFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 13;
                break;
              } // case 106
              case 114: {
                input.readMessage(
                    getFinishedFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 14;
                break;
              } // case 114
              case 122: {
                input.readMessage(
                    getNamedSetOfFilesFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 15;
                break;
              } // case 122
              case 130: {
                input.readMessage(
                    getWorkspaceStatusFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 16;
                break;
              } // case 130
              case 138: {
                input.readMessage(
                    getConfigurationFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 17;
                break;
              } // case 138
              case 146: {
                input.readMessage(
                    getConfiguredFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 18;
                break;
              } // case 146
              case 160: {
                lastMessage_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 160
              case 170: {
                input.readMessage(
                    getFetchFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 21;
                break;
              } // case 170
              case 178: {
                input.readMessage(
                    getStructuredCommandLineFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 22;
                break;
              } // case 178
              case 186: {
                input.readMessage(
                    getBuildToolLogsFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 23;
                break;
              } // case 186
              case 194: {
                input.readMessage(
                    getBuildMetricsFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 24;
                break;
              } // case 194
              case 202: {
                input.readMessage(
                    getWorkspaceInfoFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 25;
                break;
              } // case 202
              case 210: {
                input.readMessage(
                    getBuildMetadataFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 26;
                break;
              } // case 210
              case 218: {
                input.readMessage(
                    getConvenienceSymlinksIdentifiedFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 27;
                break;
              } // case 218
              case 226: {
                input.readMessage(
                    getTargetSummaryFieldBuilder().getBuilder(),
                    extensionRegistry);
                payloadCase_ = 28;
                break;
              } // case 226
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int payloadCase_ = 0;
      private java.lang.Object payload_;
      public PayloadCase
          getPayloadCase() {
        return PayloadCase.forNumber(
            payloadCase_);
      }

      public Builder clearPayload() {
        payloadCase_ = 0;
        payload_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      private com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId id_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventIdOrBuilder> idBuilder_;
      /**
       * <code>.build_event_stream.BuildEventId id = 1;</code>
       * @return Whether the id field is set.
       */
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>.build_event_stream.BuildEventId id = 1;</code>
       * @return The id.
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId getId() {
        if (idBuilder_ == null) {
          return id_ == null ? com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.getDefaultInstance() : id_;
        } else {
          return idBuilder_.getMessage();
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId id = 1;</code>
       */
      public Builder setId(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId value) {
        if (idBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          id_ = value;
        } else {
          idBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId id = 1;</code>
       */
      public Builder setId(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.Builder builderForValue) {
        if (idBuilder_ == null) {
          id_ = builderForValue.build();
        } else {
          idBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId id = 1;</code>
       */
      public Builder mergeId(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId value) {
        if (idBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            id_ != null &&
            id_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.getDefaultInstance()) {
            getIdBuilder().mergeFrom(value);
          } else {
            id_ = value;
          }
        } else {
          idBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId id = 1;</code>
       */
      public Builder clearId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        id_ = null;
        if (idBuilder_ != null) {
          idBuilder_.dispose();
          idBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>.build_event_stream.BuildEventId id = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.Builder getIdBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getIdFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildEventId id = 1;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventIdOrBuilder getIdOrBuilder() {
        if (idBuilder_ != null) {
          return idBuilder_.getMessageOrBuilder();
        } else {
          return id_ == null ?
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.getDefaultInstance() : id_;
        }
      }
      /**
       * <code>.build_event_stream.BuildEventId id = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventIdOrBuilder> 
          getIdFieldBuilder() {
        if (idBuilder_ == null) {
          idBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventIdOrBuilder>(
                  getId(),
                  getParentForChildren(),
                  isClean());
          id_ = null;
        }
        return idBuilder_;
      }

      private java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId> children_ =
        java.util.Collections.emptyList();
      private void ensureChildrenIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          children_ = new java.util.ArrayList<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId>(children_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventIdOrBuilder> childrenBuilder_;

      /**
       * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId> getChildrenList() {
        if (childrenBuilder_ == null) {
          return java.util.Collections.unmodifiableList(children_);
        } else {
          return childrenBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
       */
      public int getChildrenCount() {
        if (childrenBuilder_ == null) {
          return children_.size();
        } else {
          return childrenBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId getChildren(int index) {
        if (childrenBuilder_ == null) {
          return children_.get(index);
        } else {
          return childrenBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
       */
      public Builder setChildren(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId value) {
        if (childrenBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChildrenIsMutable();
          children_.set(index, value);
          onChanged();
        } else {
          childrenBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
       */
      public Builder setChildren(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.Builder builderForValue) {
        if (childrenBuilder_ == null) {
          ensureChildrenIsMutable();
          children_.set(index, builderForValue.build());
          onChanged();
        } else {
          childrenBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
       */
      public Builder addChildren(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId value) {
        if (childrenBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChildrenIsMutable();
          children_.add(value);
          onChanged();
        } else {
          childrenBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
       */
      public Builder addChildren(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId value) {
        if (childrenBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChildrenIsMutable();
          children_.add(index, value);
          onChanged();
        } else {
          childrenBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
       */
      public Builder addChildren(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.Builder builderForValue) {
        if (childrenBuilder_ == null) {
          ensureChildrenIsMutable();
          children_.add(builderForValue.build());
          onChanged();
        } else {
          childrenBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
       */
      public Builder addChildren(
          int index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.Builder builderForValue) {
        if (childrenBuilder_ == null) {
          ensureChildrenIsMutable();
          children_.add(index, builderForValue.build());
          onChanged();
        } else {
          childrenBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
       */
      public Builder addAllChildren(
          java.lang.Iterable<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId> values) {
        if (childrenBuilder_ == null) {
          ensureChildrenIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, children_);
          onChanged();
        } else {
          childrenBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
       */
      public Builder clearChildren() {
        if (childrenBuilder_ == null) {
          children_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          childrenBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
       */
      public Builder removeChildren(int index) {
        if (childrenBuilder_ == null) {
          ensureChildrenIsMutable();
          children_.remove(index);
          onChanged();
        } else {
          childrenBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.Builder getChildrenBuilder(
          int index) {
        return getChildrenFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventIdOrBuilder getChildrenOrBuilder(
          int index) {
        if (childrenBuilder_ == null) {
          return children_.get(index);  } else {
          return childrenBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
       */
      public java.util.List<? extends com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventIdOrBuilder> 
           getChildrenOrBuilderList() {
        if (childrenBuilder_ != null) {
          return childrenBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(children_);
        }
      }
      /**
       * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.Builder addChildrenBuilder() {
        return getChildrenFieldBuilder().addBuilder(
            com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.getDefaultInstance());
      }
      /**
       * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.Builder addChildrenBuilder(
          int index) {
        return getChildrenFieldBuilder().addBuilder(
            index, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.getDefaultInstance());
      }
      /**
       * <code>repeated .build_event_stream.BuildEventId children = 2;</code>
       */
      public java.util.List<com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.Builder> 
           getChildrenBuilderList() {
        return getChildrenFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventIdOrBuilder> 
          getChildrenFieldBuilder() {
        if (childrenBuilder_ == null) {
          childrenBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventIdOrBuilder>(
                  children_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          children_ = null;
        }
        return childrenBuilder_;
      }

      private boolean lastMessage_ ;
      /**
       * <code>bool last_message = 20;</code>
       * @return The lastMessage.
       */
      @java.lang.Override
      public boolean getLastMessage() {
        return lastMessage_;
      }
      /**
       * <code>bool last_message = 20;</code>
       * @param value The lastMessage to set.
       * @return This builder for chaining.
       */
      public Builder setLastMessage(boolean value) {
        
        lastMessage_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>bool last_message = 20;</code>
       * @return This builder for chaining.
       */
      public Builder clearLastMessage() {
        bitField0_ = (bitField0_ & ~0x00000004);
        lastMessage_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ProgressOrBuilder> progressBuilder_;
      /**
       * <code>.build_event_stream.Progress progress = 3;</code>
       * @return Whether the progress field is set.
       */
      @java.lang.Override
      public boolean hasProgress() {
        return payloadCase_ == 3;
      }
      /**
       * <code>.build_event_stream.Progress progress = 3;</code>
       * @return The progress.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress getProgress() {
        if (progressBuilder_ == null) {
          if (payloadCase_ == 3) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress.getDefaultInstance();
        } else {
          if (payloadCase_ == 3) {
            return progressBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.Progress progress = 3;</code>
       */
      public Builder setProgress(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress value) {
        if (progressBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          progressBuilder_.setMessage(value);
        }
        payloadCase_ = 3;
        return this;
      }
      /**
       * <code>.build_event_stream.Progress progress = 3;</code>
       */
      public Builder setProgress(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress.Builder builderForValue) {
        if (progressBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          progressBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 3;
        return this;
      }
      /**
       * <code>.build_event_stream.Progress progress = 3;</code>
       */
      public Builder mergeProgress(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress value) {
        if (progressBuilder_ == null) {
          if (payloadCase_ == 3 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 3) {
            progressBuilder_.mergeFrom(value);
          } else {
            progressBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 3;
        return this;
      }
      /**
       * <code>.build_event_stream.Progress progress = 3;</code>
       */
      public Builder clearProgress() {
        if (progressBuilder_ == null) {
          if (payloadCase_ == 3) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 3) {
            payloadCase_ = 0;
            payload_ = null;
          }
          progressBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.Progress progress = 3;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress.Builder getProgressBuilder() {
        return getProgressFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.Progress progress = 3;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ProgressOrBuilder getProgressOrBuilder() {
        if ((payloadCase_ == 3) && (progressBuilder_ != null)) {
          return progressBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 3) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.Progress progress = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ProgressOrBuilder> 
          getProgressFieldBuilder() {
        if (progressBuilder_ == null) {
          if (!(payloadCase_ == 3)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress.getDefaultInstance();
          }
          progressBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ProgressOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Progress) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 3;
        onChanged();
        return progressBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.AbortedOrBuilder> abortedBuilder_;
      /**
       * <code>.build_event_stream.Aborted aborted = 4;</code>
       * @return Whether the aborted field is set.
       */
      @java.lang.Override
      public boolean hasAborted() {
        return payloadCase_ == 4;
      }
      /**
       * <code>.build_event_stream.Aborted aborted = 4;</code>
       * @return The aborted.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted getAborted() {
        if (abortedBuilder_ == null) {
          if (payloadCase_ == 4) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.getDefaultInstance();
        } else {
          if (payloadCase_ == 4) {
            return abortedBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.Aborted aborted = 4;</code>
       */
      public Builder setAborted(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted value) {
        if (abortedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          abortedBuilder_.setMessage(value);
        }
        payloadCase_ = 4;
        return this;
      }
      /**
       * <code>.build_event_stream.Aborted aborted = 4;</code>
       */
      public Builder setAborted(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.Builder builderForValue) {
        if (abortedBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          abortedBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 4;
        return this;
      }
      /**
       * <code>.build_event_stream.Aborted aborted = 4;</code>
       */
      public Builder mergeAborted(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted value) {
        if (abortedBuilder_ == null) {
          if (payloadCase_ == 4 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 4) {
            abortedBuilder_.mergeFrom(value);
          } else {
            abortedBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 4;
        return this;
      }
      /**
       * <code>.build_event_stream.Aborted aborted = 4;</code>
       */
      public Builder clearAborted() {
        if (abortedBuilder_ == null) {
          if (payloadCase_ == 4) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 4) {
            payloadCase_ = 0;
            payload_ = null;
          }
          abortedBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.Aborted aborted = 4;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.Builder getAbortedBuilder() {
        return getAbortedFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.Aborted aborted = 4;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.AbortedOrBuilder getAbortedOrBuilder() {
        if ((payloadCase_ == 4) && (abortedBuilder_ != null)) {
          return abortedBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 4) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.Aborted aborted = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.AbortedOrBuilder> 
          getAbortedFieldBuilder() {
        if (abortedBuilder_ == null) {
          if (!(payloadCase_ == 4)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.getDefaultInstance();
          }
          abortedBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.AbortedOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Aborted) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 4;
        onChanged();
        return abortedBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStartedOrBuilder> startedBuilder_;
      /**
       * <code>.build_event_stream.BuildStarted started = 5;</code>
       * @return Whether the started field is set.
       */
      @java.lang.Override
      public boolean hasStarted() {
        return payloadCase_ == 5;
      }
      /**
       * <code>.build_event_stream.BuildStarted started = 5;</code>
       * @return The started.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted getStarted() {
        if (startedBuilder_ == null) {
          if (payloadCase_ == 5) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted.getDefaultInstance();
        } else {
          if (payloadCase_ == 5) {
            return startedBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildStarted started = 5;</code>
       */
      public Builder setStarted(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted value) {
        if (startedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          startedBuilder_.setMessage(value);
        }
        payloadCase_ = 5;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildStarted started = 5;</code>
       */
      public Builder setStarted(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted.Builder builderForValue) {
        if (startedBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          startedBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 5;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildStarted started = 5;</code>
       */
      public Builder mergeStarted(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted value) {
        if (startedBuilder_ == null) {
          if (payloadCase_ == 5 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 5) {
            startedBuilder_.mergeFrom(value);
          } else {
            startedBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 5;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildStarted started = 5;</code>
       */
      public Builder clearStarted() {
        if (startedBuilder_ == null) {
          if (payloadCase_ == 5) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 5) {
            payloadCase_ = 0;
            payload_ = null;
          }
          startedBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildStarted started = 5;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted.Builder getStartedBuilder() {
        return getStartedFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildStarted started = 5;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStartedOrBuilder getStartedOrBuilder() {
        if ((payloadCase_ == 5) && (startedBuilder_ != null)) {
          return startedBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 5) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildStarted started = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStartedOrBuilder> 
          getStartedFieldBuilder() {
        if (startedBuilder_ == null) {
          if (!(payloadCase_ == 5)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted.getDefaultInstance();
          }
          startedBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStartedOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildStarted) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 5;
        onChanged();
        return startedBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLineOrBuilder> unstructuredCommandLineBuilder_;
      /**
       * <code>.build_event_stream.UnstructuredCommandLine unstructured_command_line = 12;</code>
       * @return Whether the unstructuredCommandLine field is set.
       */
      @java.lang.Override
      public boolean hasUnstructuredCommandLine() {
        return payloadCase_ == 12;
      }
      /**
       * <code>.build_event_stream.UnstructuredCommandLine unstructured_command_line = 12;</code>
       * @return The unstructuredCommandLine.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine getUnstructuredCommandLine() {
        if (unstructuredCommandLineBuilder_ == null) {
          if (payloadCase_ == 12) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine.getDefaultInstance();
        } else {
          if (payloadCase_ == 12) {
            return unstructuredCommandLineBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.UnstructuredCommandLine unstructured_command_line = 12;</code>
       */
      public Builder setUnstructuredCommandLine(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine value) {
        if (unstructuredCommandLineBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          unstructuredCommandLineBuilder_.setMessage(value);
        }
        payloadCase_ = 12;
        return this;
      }
      /**
       * <code>.build_event_stream.UnstructuredCommandLine unstructured_command_line = 12;</code>
       */
      public Builder setUnstructuredCommandLine(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine.Builder builderForValue) {
        if (unstructuredCommandLineBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          unstructuredCommandLineBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 12;
        return this;
      }
      /**
       * <code>.build_event_stream.UnstructuredCommandLine unstructured_command_line = 12;</code>
       */
      public Builder mergeUnstructuredCommandLine(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine value) {
        if (unstructuredCommandLineBuilder_ == null) {
          if (payloadCase_ == 12 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 12) {
            unstructuredCommandLineBuilder_.mergeFrom(value);
          } else {
            unstructuredCommandLineBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 12;
        return this;
      }
      /**
       * <code>.build_event_stream.UnstructuredCommandLine unstructured_command_line = 12;</code>
       */
      public Builder clearUnstructuredCommandLine() {
        if (unstructuredCommandLineBuilder_ == null) {
          if (payloadCase_ == 12) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 12) {
            payloadCase_ = 0;
            payload_ = null;
          }
          unstructuredCommandLineBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.UnstructuredCommandLine unstructured_command_line = 12;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine.Builder getUnstructuredCommandLineBuilder() {
        return getUnstructuredCommandLineFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.UnstructuredCommandLine unstructured_command_line = 12;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLineOrBuilder getUnstructuredCommandLineOrBuilder() {
        if ((payloadCase_ == 12) && (unstructuredCommandLineBuilder_ != null)) {
          return unstructuredCommandLineBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 12) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.UnstructuredCommandLine unstructured_command_line = 12;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLineOrBuilder> 
          getUnstructuredCommandLineFieldBuilder() {
        if (unstructuredCommandLineBuilder_ == null) {
          if (!(payloadCase_ == 12)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine.getDefaultInstance();
          }
          unstructuredCommandLineBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLineOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.UnstructuredCommandLine) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 12;
        onChanged();
        return unstructuredCommandLineBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine, com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine.Builder, com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLineOrBuilder> structuredCommandLineBuilder_;
      /**
       * <code>.command_line.CommandLine structured_command_line = 22;</code>
       * @return Whether the structuredCommandLine field is set.
       */
      @java.lang.Override
      public boolean hasStructuredCommandLine() {
        return payloadCase_ == 22;
      }
      /**
       * <code>.command_line.CommandLine structured_command_line = 22;</code>
       * @return The structuredCommandLine.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine getStructuredCommandLine() {
        if (structuredCommandLineBuilder_ == null) {
          if (payloadCase_ == 22) {
            return (com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine) payload_;
          }
          return com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine.getDefaultInstance();
        } else {
          if (payloadCase_ == 22) {
            return structuredCommandLineBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine.getDefaultInstance();
        }
      }
      /**
       * <code>.command_line.CommandLine structured_command_line = 22;</code>
       */
      public Builder setStructuredCommandLine(com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine value) {
        if (structuredCommandLineBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          structuredCommandLineBuilder_.setMessage(value);
        }
        payloadCase_ = 22;
        return this;
      }
      /**
       * <code>.command_line.CommandLine structured_command_line = 22;</code>
       */
      public Builder setStructuredCommandLine(
          com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine.Builder builderForValue) {
        if (structuredCommandLineBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          structuredCommandLineBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 22;
        return this;
      }
      /**
       * <code>.command_line.CommandLine structured_command_line = 22;</code>
       */
      public Builder mergeStructuredCommandLine(com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine value) {
        if (structuredCommandLineBuilder_ == null) {
          if (payloadCase_ == 22 &&
              payload_ != com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine.newBuilder((com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 22) {
            structuredCommandLineBuilder_.mergeFrom(value);
          } else {
            structuredCommandLineBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 22;
        return this;
      }
      /**
       * <code>.command_line.CommandLine structured_command_line = 22;</code>
       */
      public Builder clearStructuredCommandLine() {
        if (structuredCommandLineBuilder_ == null) {
          if (payloadCase_ == 22) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 22) {
            payloadCase_ = 0;
            payload_ = null;
          }
          structuredCommandLineBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.command_line.CommandLine structured_command_line = 22;</code>
       */
      public com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine.Builder getStructuredCommandLineBuilder() {
        return getStructuredCommandLineFieldBuilder().getBuilder();
      }
      /**
       * <code>.command_line.CommandLine structured_command_line = 22;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLineOrBuilder getStructuredCommandLineOrBuilder() {
        if ((payloadCase_ == 22) && (structuredCommandLineBuilder_ != null)) {
          return structuredCommandLineBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 22) {
            return (com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine) payload_;
          }
          return com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine.getDefaultInstance();
        }
      }
      /**
       * <code>.command_line.CommandLine structured_command_line = 22;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine, com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine.Builder, com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLineOrBuilder> 
          getStructuredCommandLineFieldBuilder() {
        if (structuredCommandLineBuilder_ == null) {
          if (!(payloadCase_ == 22)) {
            payload_ = com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine.getDefaultInstance();
          }
          structuredCommandLineBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine, com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine.Builder, com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLineOrBuilder>(
                  (com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.CommandLine) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 22;
        onChanged();
        return structuredCommandLineBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsedOrBuilder> optionsParsedBuilder_;
      /**
       * <code>.build_event_stream.OptionsParsed options_parsed = 13;</code>
       * @return Whether the optionsParsed field is set.
       */
      @java.lang.Override
      public boolean hasOptionsParsed() {
        return payloadCase_ == 13;
      }
      /**
       * <code>.build_event_stream.OptionsParsed options_parsed = 13;</code>
       * @return The optionsParsed.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed getOptionsParsed() {
        if (optionsParsedBuilder_ == null) {
          if (payloadCase_ == 13) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed.getDefaultInstance();
        } else {
          if (payloadCase_ == 13) {
            return optionsParsedBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.OptionsParsed options_parsed = 13;</code>
       */
      public Builder setOptionsParsed(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed value) {
        if (optionsParsedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          optionsParsedBuilder_.setMessage(value);
        }
        payloadCase_ = 13;
        return this;
      }
      /**
       * <code>.build_event_stream.OptionsParsed options_parsed = 13;</code>
       */
      public Builder setOptionsParsed(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed.Builder builderForValue) {
        if (optionsParsedBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          optionsParsedBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 13;
        return this;
      }
      /**
       * <code>.build_event_stream.OptionsParsed options_parsed = 13;</code>
       */
      public Builder mergeOptionsParsed(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed value) {
        if (optionsParsedBuilder_ == null) {
          if (payloadCase_ == 13 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 13) {
            optionsParsedBuilder_.mergeFrom(value);
          } else {
            optionsParsedBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 13;
        return this;
      }
      /**
       * <code>.build_event_stream.OptionsParsed options_parsed = 13;</code>
       */
      public Builder clearOptionsParsed() {
        if (optionsParsedBuilder_ == null) {
          if (payloadCase_ == 13) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 13) {
            payloadCase_ = 0;
            payload_ = null;
          }
          optionsParsedBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.OptionsParsed options_parsed = 13;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed.Builder getOptionsParsedBuilder() {
        return getOptionsParsedFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.OptionsParsed options_parsed = 13;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsedOrBuilder getOptionsParsedOrBuilder() {
        if ((payloadCase_ == 13) && (optionsParsedBuilder_ != null)) {
          return optionsParsedBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 13) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.OptionsParsed options_parsed = 13;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsedOrBuilder> 
          getOptionsParsedFieldBuilder() {
        if (optionsParsedBuilder_ == null) {
          if (!(payloadCase_ == 13)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed.getDefaultInstance();
          }
          optionsParsedBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsedOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OptionsParsed) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 13;
        onChanged();
        return optionsParsedBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatusOrBuilder> workspaceStatusBuilder_;
      /**
       * <code>.build_event_stream.WorkspaceStatus workspace_status = 16;</code>
       * @return Whether the workspaceStatus field is set.
       */
      @java.lang.Override
      public boolean hasWorkspaceStatus() {
        return payloadCase_ == 16;
      }
      /**
       * <code>.build_event_stream.WorkspaceStatus workspace_status = 16;</code>
       * @return The workspaceStatus.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus getWorkspaceStatus() {
        if (workspaceStatusBuilder_ == null) {
          if (payloadCase_ == 16) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.getDefaultInstance();
        } else {
          if (payloadCase_ == 16) {
            return workspaceStatusBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.WorkspaceStatus workspace_status = 16;</code>
       */
      public Builder setWorkspaceStatus(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus value) {
        if (workspaceStatusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          workspaceStatusBuilder_.setMessage(value);
        }
        payloadCase_ = 16;
        return this;
      }
      /**
       * <code>.build_event_stream.WorkspaceStatus workspace_status = 16;</code>
       */
      public Builder setWorkspaceStatus(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Builder builderForValue) {
        if (workspaceStatusBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          workspaceStatusBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 16;
        return this;
      }
      /**
       * <code>.build_event_stream.WorkspaceStatus workspace_status = 16;</code>
       */
      public Builder mergeWorkspaceStatus(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus value) {
        if (workspaceStatusBuilder_ == null) {
          if (payloadCase_ == 16 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 16) {
            workspaceStatusBuilder_.mergeFrom(value);
          } else {
            workspaceStatusBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 16;
        return this;
      }
      /**
       * <code>.build_event_stream.WorkspaceStatus workspace_status = 16;</code>
       */
      public Builder clearWorkspaceStatus() {
        if (workspaceStatusBuilder_ == null) {
          if (payloadCase_ == 16) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 16) {
            payloadCase_ = 0;
            payload_ = null;
          }
          workspaceStatusBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.WorkspaceStatus workspace_status = 16;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Builder getWorkspaceStatusBuilder() {
        return getWorkspaceStatusFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.WorkspaceStatus workspace_status = 16;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatusOrBuilder getWorkspaceStatusOrBuilder() {
        if ((payloadCase_ == 16) && (workspaceStatusBuilder_ != null)) {
          return workspaceStatusBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 16) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.WorkspaceStatus workspace_status = 16;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatusOrBuilder> 
          getWorkspaceStatusFieldBuilder() {
        if (workspaceStatusBuilder_ == null) {
          if (!(payloadCase_ == 16)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.getDefaultInstance();
          }
          workspaceStatusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatusOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceStatus) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 16;
        onChanged();
        return workspaceStatusBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FetchOrBuilder> fetchBuilder_;
      /**
       * <code>.build_event_stream.Fetch fetch = 21;</code>
       * @return Whether the fetch field is set.
       */
      @java.lang.Override
      public boolean hasFetch() {
        return payloadCase_ == 21;
      }
      /**
       * <code>.build_event_stream.Fetch fetch = 21;</code>
       * @return The fetch.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch getFetch() {
        if (fetchBuilder_ == null) {
          if (payloadCase_ == 21) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch.getDefaultInstance();
        } else {
          if (payloadCase_ == 21) {
            return fetchBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.Fetch fetch = 21;</code>
       */
      public Builder setFetch(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch value) {
        if (fetchBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          fetchBuilder_.setMessage(value);
        }
        payloadCase_ = 21;
        return this;
      }
      /**
       * <code>.build_event_stream.Fetch fetch = 21;</code>
       */
      public Builder setFetch(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch.Builder builderForValue) {
        if (fetchBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          fetchBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 21;
        return this;
      }
      /**
       * <code>.build_event_stream.Fetch fetch = 21;</code>
       */
      public Builder mergeFetch(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch value) {
        if (fetchBuilder_ == null) {
          if (payloadCase_ == 21 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 21) {
            fetchBuilder_.mergeFrom(value);
          } else {
            fetchBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 21;
        return this;
      }
      /**
       * <code>.build_event_stream.Fetch fetch = 21;</code>
       */
      public Builder clearFetch() {
        if (fetchBuilder_ == null) {
          if (payloadCase_ == 21) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 21) {
            payloadCase_ = 0;
            payload_ = null;
          }
          fetchBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.Fetch fetch = 21;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch.Builder getFetchBuilder() {
        return getFetchFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.Fetch fetch = 21;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FetchOrBuilder getFetchOrBuilder() {
        if ((payloadCase_ == 21) && (fetchBuilder_ != null)) {
          return fetchBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 21) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.Fetch fetch = 21;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FetchOrBuilder> 
          getFetchFieldBuilder() {
        if (fetchBuilder_ == null) {
          if (!(payloadCase_ == 21)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch.getDefaultInstance();
          }
          fetchBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.FetchOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Fetch) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 21;
        onChanged();
        return fetchBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConfigurationOrBuilder> configurationBuilder_;
      /**
       * <code>.build_event_stream.Configuration configuration = 17;</code>
       * @return Whether the configuration field is set.
       */
      @java.lang.Override
      public boolean hasConfiguration() {
        return payloadCase_ == 17;
      }
      /**
       * <code>.build_event_stream.Configuration configuration = 17;</code>
       * @return The configuration.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration getConfiguration() {
        if (configurationBuilder_ == null) {
          if (payloadCase_ == 17) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration.getDefaultInstance();
        } else {
          if (payloadCase_ == 17) {
            return configurationBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.Configuration configuration = 17;</code>
       */
      public Builder setConfiguration(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration value) {
        if (configurationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          configurationBuilder_.setMessage(value);
        }
        payloadCase_ = 17;
        return this;
      }
      /**
       * <code>.build_event_stream.Configuration configuration = 17;</code>
       */
      public Builder setConfiguration(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration.Builder builderForValue) {
        if (configurationBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          configurationBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 17;
        return this;
      }
      /**
       * <code>.build_event_stream.Configuration configuration = 17;</code>
       */
      public Builder mergeConfiguration(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration value) {
        if (configurationBuilder_ == null) {
          if (payloadCase_ == 17 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 17) {
            configurationBuilder_.mergeFrom(value);
          } else {
            configurationBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 17;
        return this;
      }
      /**
       * <code>.build_event_stream.Configuration configuration = 17;</code>
       */
      public Builder clearConfiguration() {
        if (configurationBuilder_ == null) {
          if (payloadCase_ == 17) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 17) {
            payloadCase_ = 0;
            payload_ = null;
          }
          configurationBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.Configuration configuration = 17;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration.Builder getConfigurationBuilder() {
        return getConfigurationFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.Configuration configuration = 17;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConfigurationOrBuilder getConfigurationOrBuilder() {
        if ((payloadCase_ == 17) && (configurationBuilder_ != null)) {
          return configurationBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 17) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.Configuration configuration = 17;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConfigurationOrBuilder> 
          getConfigurationFieldBuilder() {
        if (configurationBuilder_ == null) {
          if (!(payloadCase_ == 17)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration.getDefaultInstance();
          }
          configurationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConfigurationOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Configuration) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 17;
        onChanged();
        return configurationBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpandedOrBuilder> expandedBuilder_;
      /**
       * <code>.build_event_stream.PatternExpanded expanded = 6;</code>
       * @return Whether the expanded field is set.
       */
      @java.lang.Override
      public boolean hasExpanded() {
        return payloadCase_ == 6;
      }
      /**
       * <code>.build_event_stream.PatternExpanded expanded = 6;</code>
       * @return The expanded.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded getExpanded() {
        if (expandedBuilder_ == null) {
          if (payloadCase_ == 6) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.getDefaultInstance();
        } else {
          if (payloadCase_ == 6) {
            return expandedBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.PatternExpanded expanded = 6;</code>
       */
      public Builder setExpanded(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded value) {
        if (expandedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          expandedBuilder_.setMessage(value);
        }
        payloadCase_ = 6;
        return this;
      }
      /**
       * <code>.build_event_stream.PatternExpanded expanded = 6;</code>
       */
      public Builder setExpanded(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.Builder builderForValue) {
        if (expandedBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          expandedBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 6;
        return this;
      }
      /**
       * <code>.build_event_stream.PatternExpanded expanded = 6;</code>
       */
      public Builder mergeExpanded(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded value) {
        if (expandedBuilder_ == null) {
          if (payloadCase_ == 6 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 6) {
            expandedBuilder_.mergeFrom(value);
          } else {
            expandedBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 6;
        return this;
      }
      /**
       * <code>.build_event_stream.PatternExpanded expanded = 6;</code>
       */
      public Builder clearExpanded() {
        if (expandedBuilder_ == null) {
          if (payloadCase_ == 6) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 6) {
            payloadCase_ = 0;
            payload_ = null;
          }
          expandedBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.PatternExpanded expanded = 6;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.Builder getExpandedBuilder() {
        return getExpandedFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.PatternExpanded expanded = 6;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpandedOrBuilder getExpandedOrBuilder() {
        if ((payloadCase_ == 6) && (expandedBuilder_ != null)) {
          return expandedBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 6) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.PatternExpanded expanded = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpandedOrBuilder> 
          getExpandedFieldBuilder() {
        if (expandedBuilder_ == null) {
          if (!(payloadCase_ == 6)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.getDefaultInstance();
          }
          expandedBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpandedOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.PatternExpanded) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 6;
        onChanged();
        return expandedBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfiguredOrBuilder> configuredBuilder_;
      /**
       * <code>.build_event_stream.TargetConfigured configured = 18;</code>
       * @return Whether the configured field is set.
       */
      @java.lang.Override
      public boolean hasConfigured() {
        return payloadCase_ == 18;
      }
      /**
       * <code>.build_event_stream.TargetConfigured configured = 18;</code>
       * @return The configured.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured getConfigured() {
        if (configuredBuilder_ == null) {
          if (payloadCase_ == 18) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured.getDefaultInstance();
        } else {
          if (payloadCase_ == 18) {
            return configuredBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.TargetConfigured configured = 18;</code>
       */
      public Builder setConfigured(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured value) {
        if (configuredBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          configuredBuilder_.setMessage(value);
        }
        payloadCase_ = 18;
        return this;
      }
      /**
       * <code>.build_event_stream.TargetConfigured configured = 18;</code>
       */
      public Builder setConfigured(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured.Builder builderForValue) {
        if (configuredBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          configuredBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 18;
        return this;
      }
      /**
       * <code>.build_event_stream.TargetConfigured configured = 18;</code>
       */
      public Builder mergeConfigured(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured value) {
        if (configuredBuilder_ == null) {
          if (payloadCase_ == 18 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 18) {
            configuredBuilder_.mergeFrom(value);
          } else {
            configuredBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 18;
        return this;
      }
      /**
       * <code>.build_event_stream.TargetConfigured configured = 18;</code>
       */
      public Builder clearConfigured() {
        if (configuredBuilder_ == null) {
          if (payloadCase_ == 18) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 18) {
            payloadCase_ = 0;
            payload_ = null;
          }
          configuredBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.TargetConfigured configured = 18;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured.Builder getConfiguredBuilder() {
        return getConfiguredFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.TargetConfigured configured = 18;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfiguredOrBuilder getConfiguredOrBuilder() {
        if ((payloadCase_ == 18) && (configuredBuilder_ != null)) {
          return configuredBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 18) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.TargetConfigured configured = 18;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfiguredOrBuilder> 
          getConfiguredFieldBuilder() {
        if (configuredBuilder_ == null) {
          if (!(payloadCase_ == 18)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured.getDefaultInstance();
          }
          configuredBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfiguredOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetConfigured) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 18;
        onChanged();
        return configuredBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecutedOrBuilder> actionBuilder_;
      /**
       * <code>.build_event_stream.ActionExecuted action = 7;</code>
       * @return Whether the action field is set.
       */
      @java.lang.Override
      public boolean hasAction() {
        return payloadCase_ == 7;
      }
      /**
       * <code>.build_event_stream.ActionExecuted action = 7;</code>
       * @return The action.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted getAction() {
        if (actionBuilder_ == null) {
          if (payloadCase_ == 7) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted.getDefaultInstance();
        } else {
          if (payloadCase_ == 7) {
            return actionBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.ActionExecuted action = 7;</code>
       */
      public Builder setAction(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted value) {
        if (actionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          actionBuilder_.setMessage(value);
        }
        payloadCase_ = 7;
        return this;
      }
      /**
       * <code>.build_event_stream.ActionExecuted action = 7;</code>
       */
      public Builder setAction(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted.Builder builderForValue) {
        if (actionBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          actionBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 7;
        return this;
      }
      /**
       * <code>.build_event_stream.ActionExecuted action = 7;</code>
       */
      public Builder mergeAction(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted value) {
        if (actionBuilder_ == null) {
          if (payloadCase_ == 7 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 7) {
            actionBuilder_.mergeFrom(value);
          } else {
            actionBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 7;
        return this;
      }
      /**
       * <code>.build_event_stream.ActionExecuted action = 7;</code>
       */
      public Builder clearAction() {
        if (actionBuilder_ == null) {
          if (payloadCase_ == 7) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 7) {
            payloadCase_ = 0;
            payload_ = null;
          }
          actionBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.ActionExecuted action = 7;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted.Builder getActionBuilder() {
        return getActionFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.ActionExecuted action = 7;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecutedOrBuilder getActionOrBuilder() {
        if ((payloadCase_ == 7) && (actionBuilder_ != null)) {
          return actionBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 7) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.ActionExecuted action = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecutedOrBuilder> 
          getActionFieldBuilder() {
        if (actionBuilder_ == null) {
          if (!(payloadCase_ == 7)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted.getDefaultInstance();
          }
          actionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecutedOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ActionExecuted) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 7;
        onChanged();
        return actionBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFilesOrBuilder> namedSetOfFilesBuilder_;
      /**
       * <code>.build_event_stream.NamedSetOfFiles named_set_of_files = 15;</code>
       * @return Whether the namedSetOfFiles field is set.
       */
      @java.lang.Override
      public boolean hasNamedSetOfFiles() {
        return payloadCase_ == 15;
      }
      /**
       * <code>.build_event_stream.NamedSetOfFiles named_set_of_files = 15;</code>
       * @return The namedSetOfFiles.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles getNamedSetOfFiles() {
        if (namedSetOfFilesBuilder_ == null) {
          if (payloadCase_ == 15) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles.getDefaultInstance();
        } else {
          if (payloadCase_ == 15) {
            return namedSetOfFilesBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.NamedSetOfFiles named_set_of_files = 15;</code>
       */
      public Builder setNamedSetOfFiles(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles value) {
        if (namedSetOfFilesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          namedSetOfFilesBuilder_.setMessage(value);
        }
        payloadCase_ = 15;
        return this;
      }
      /**
       * <code>.build_event_stream.NamedSetOfFiles named_set_of_files = 15;</code>
       */
      public Builder setNamedSetOfFiles(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles.Builder builderForValue) {
        if (namedSetOfFilesBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          namedSetOfFilesBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 15;
        return this;
      }
      /**
       * <code>.build_event_stream.NamedSetOfFiles named_set_of_files = 15;</code>
       */
      public Builder mergeNamedSetOfFiles(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles value) {
        if (namedSetOfFilesBuilder_ == null) {
          if (payloadCase_ == 15 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 15) {
            namedSetOfFilesBuilder_.mergeFrom(value);
          } else {
            namedSetOfFilesBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 15;
        return this;
      }
      /**
       * <code>.build_event_stream.NamedSetOfFiles named_set_of_files = 15;</code>
       */
      public Builder clearNamedSetOfFiles() {
        if (namedSetOfFilesBuilder_ == null) {
          if (payloadCase_ == 15) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 15) {
            payloadCase_ = 0;
            payload_ = null;
          }
          namedSetOfFilesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.NamedSetOfFiles named_set_of_files = 15;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles.Builder getNamedSetOfFilesBuilder() {
        return getNamedSetOfFilesFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.NamedSetOfFiles named_set_of_files = 15;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFilesOrBuilder getNamedSetOfFilesOrBuilder() {
        if ((payloadCase_ == 15) && (namedSetOfFilesBuilder_ != null)) {
          return namedSetOfFilesBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 15) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.NamedSetOfFiles named_set_of_files = 15;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFilesOrBuilder> 
          getNamedSetOfFilesFieldBuilder() {
        if (namedSetOfFilesBuilder_ == null) {
          if (!(payloadCase_ == 15)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles.getDefaultInstance();
          }
          namedSetOfFilesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFilesOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.NamedSetOfFiles) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 15;
        onChanged();
        return namedSetOfFilesBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetCompleteOrBuilder> completedBuilder_;
      /**
       * <code>.build_event_stream.TargetComplete completed = 8;</code>
       * @return Whether the completed field is set.
       */
      @java.lang.Override
      public boolean hasCompleted() {
        return payloadCase_ == 8;
      }
      /**
       * <code>.build_event_stream.TargetComplete completed = 8;</code>
       * @return The completed.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete getCompleted() {
        if (completedBuilder_ == null) {
          if (payloadCase_ == 8) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete.getDefaultInstance();
        } else {
          if (payloadCase_ == 8) {
            return completedBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.TargetComplete completed = 8;</code>
       */
      public Builder setCompleted(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete value) {
        if (completedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          completedBuilder_.setMessage(value);
        }
        payloadCase_ = 8;
        return this;
      }
      /**
       * <code>.build_event_stream.TargetComplete completed = 8;</code>
       */
      public Builder setCompleted(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete.Builder builderForValue) {
        if (completedBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          completedBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 8;
        return this;
      }
      /**
       * <code>.build_event_stream.TargetComplete completed = 8;</code>
       */
      public Builder mergeCompleted(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete value) {
        if (completedBuilder_ == null) {
          if (payloadCase_ == 8 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 8) {
            completedBuilder_.mergeFrom(value);
          } else {
            completedBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 8;
        return this;
      }
      /**
       * <code>.build_event_stream.TargetComplete completed = 8;</code>
       */
      public Builder clearCompleted() {
        if (completedBuilder_ == null) {
          if (payloadCase_ == 8) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 8) {
            payloadCase_ = 0;
            payload_ = null;
          }
          completedBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.TargetComplete completed = 8;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete.Builder getCompletedBuilder() {
        return getCompletedFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.TargetComplete completed = 8;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetCompleteOrBuilder getCompletedOrBuilder() {
        if ((payloadCase_ == 8) && (completedBuilder_ != null)) {
          return completedBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 8) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.TargetComplete completed = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetCompleteOrBuilder> 
          getCompletedFieldBuilder() {
        if (completedBuilder_ == null) {
          if (!(payloadCase_ == 8)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete.getDefaultInstance();
          }
          completedBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetCompleteOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetComplete) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 8;
        onChanged();
        return completedBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResultOrBuilder> testResultBuilder_;
      /**
       * <code>.build_event_stream.TestResult test_result = 10;</code>
       * @return Whether the testResult field is set.
       */
      @java.lang.Override
      public boolean hasTestResult() {
        return payloadCase_ == 10;
      }
      /**
       * <code>.build_event_stream.TestResult test_result = 10;</code>
       * @return The testResult.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult getTestResult() {
        if (testResultBuilder_ == null) {
          if (payloadCase_ == 10) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.getDefaultInstance();
        } else {
          if (payloadCase_ == 10) {
            return testResultBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.TestResult test_result = 10;</code>
       */
      public Builder setTestResult(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult value) {
        if (testResultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          testResultBuilder_.setMessage(value);
        }
        payloadCase_ = 10;
        return this;
      }
      /**
       * <code>.build_event_stream.TestResult test_result = 10;</code>
       */
      public Builder setTestResult(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.Builder builderForValue) {
        if (testResultBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          testResultBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 10;
        return this;
      }
      /**
       * <code>.build_event_stream.TestResult test_result = 10;</code>
       */
      public Builder mergeTestResult(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult value) {
        if (testResultBuilder_ == null) {
          if (payloadCase_ == 10 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 10) {
            testResultBuilder_.mergeFrom(value);
          } else {
            testResultBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 10;
        return this;
      }
      /**
       * <code>.build_event_stream.TestResult test_result = 10;</code>
       */
      public Builder clearTestResult() {
        if (testResultBuilder_ == null) {
          if (payloadCase_ == 10) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 10) {
            payloadCase_ = 0;
            payload_ = null;
          }
          testResultBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.TestResult test_result = 10;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.Builder getTestResultBuilder() {
        return getTestResultFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.TestResult test_result = 10;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResultOrBuilder getTestResultOrBuilder() {
        if ((payloadCase_ == 10) && (testResultBuilder_ != null)) {
          return testResultBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 10) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.TestResult test_result = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResultOrBuilder> 
          getTestResultFieldBuilder() {
        if (testResultBuilder_ == null) {
          if (!(payloadCase_ == 10)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.getDefaultInstance();
          }
          testResultBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResultOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestResult) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 10;
        onChanged();
        return testResultBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummaryOrBuilder> testSummaryBuilder_;
      /**
       * <code>.build_event_stream.TestSummary test_summary = 9;</code>
       * @return Whether the testSummary field is set.
       */
      @java.lang.Override
      public boolean hasTestSummary() {
        return payloadCase_ == 9;
      }
      /**
       * <code>.build_event_stream.TestSummary test_summary = 9;</code>
       * @return The testSummary.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary getTestSummary() {
        if (testSummaryBuilder_ == null) {
          if (payloadCase_ == 9) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary.getDefaultInstance();
        } else {
          if (payloadCase_ == 9) {
            return testSummaryBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.TestSummary test_summary = 9;</code>
       */
      public Builder setTestSummary(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary value) {
        if (testSummaryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          testSummaryBuilder_.setMessage(value);
        }
        payloadCase_ = 9;
        return this;
      }
      /**
       * <code>.build_event_stream.TestSummary test_summary = 9;</code>
       */
      public Builder setTestSummary(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary.Builder builderForValue) {
        if (testSummaryBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          testSummaryBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 9;
        return this;
      }
      /**
       * <code>.build_event_stream.TestSummary test_summary = 9;</code>
       */
      public Builder mergeTestSummary(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary value) {
        if (testSummaryBuilder_ == null) {
          if (payloadCase_ == 9 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 9) {
            testSummaryBuilder_.mergeFrom(value);
          } else {
            testSummaryBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 9;
        return this;
      }
      /**
       * <code>.build_event_stream.TestSummary test_summary = 9;</code>
       */
      public Builder clearTestSummary() {
        if (testSummaryBuilder_ == null) {
          if (payloadCase_ == 9) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 9) {
            payloadCase_ = 0;
            payload_ = null;
          }
          testSummaryBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.TestSummary test_summary = 9;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary.Builder getTestSummaryBuilder() {
        return getTestSummaryFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.TestSummary test_summary = 9;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummaryOrBuilder getTestSummaryOrBuilder() {
        if ((payloadCase_ == 9) && (testSummaryBuilder_ != null)) {
          return testSummaryBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 9) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.TestSummary test_summary = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummaryOrBuilder> 
          getTestSummaryFieldBuilder() {
        if (testSummaryBuilder_ == null) {
          if (!(payloadCase_ == 9)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary.getDefaultInstance();
          }
          testSummaryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummaryOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TestSummary) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 9;
        onChanged();
        return testSummaryBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummaryOrBuilder> targetSummaryBuilder_;
      /**
       * <code>.build_event_stream.TargetSummary target_summary = 28;</code>
       * @return Whether the targetSummary field is set.
       */
      @java.lang.Override
      public boolean hasTargetSummary() {
        return payloadCase_ == 28;
      }
      /**
       * <code>.build_event_stream.TargetSummary target_summary = 28;</code>
       * @return The targetSummary.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary getTargetSummary() {
        if (targetSummaryBuilder_ == null) {
          if (payloadCase_ == 28) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary.getDefaultInstance();
        } else {
          if (payloadCase_ == 28) {
            return targetSummaryBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.TargetSummary target_summary = 28;</code>
       */
      public Builder setTargetSummary(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary value) {
        if (targetSummaryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          targetSummaryBuilder_.setMessage(value);
        }
        payloadCase_ = 28;
        return this;
      }
      /**
       * <code>.build_event_stream.TargetSummary target_summary = 28;</code>
       */
      public Builder setTargetSummary(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary.Builder builderForValue) {
        if (targetSummaryBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          targetSummaryBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 28;
        return this;
      }
      /**
       * <code>.build_event_stream.TargetSummary target_summary = 28;</code>
       */
      public Builder mergeTargetSummary(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary value) {
        if (targetSummaryBuilder_ == null) {
          if (payloadCase_ == 28 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 28) {
            targetSummaryBuilder_.mergeFrom(value);
          } else {
            targetSummaryBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 28;
        return this;
      }
      /**
       * <code>.build_event_stream.TargetSummary target_summary = 28;</code>
       */
      public Builder clearTargetSummary() {
        if (targetSummaryBuilder_ == null) {
          if (payloadCase_ == 28) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 28) {
            payloadCase_ = 0;
            payload_ = null;
          }
          targetSummaryBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.TargetSummary target_summary = 28;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary.Builder getTargetSummaryBuilder() {
        return getTargetSummaryFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.TargetSummary target_summary = 28;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummaryOrBuilder getTargetSummaryOrBuilder() {
        if ((payloadCase_ == 28) && (targetSummaryBuilder_ != null)) {
          return targetSummaryBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 28) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.TargetSummary target_summary = 28;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummaryOrBuilder> 
          getTargetSummaryFieldBuilder() {
        if (targetSummaryBuilder_ == null) {
          if (!(payloadCase_ == 28)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary.getDefaultInstance();
          }
          targetSummaryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummaryOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.TargetSummary) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 28;
        onChanged();
        return targetSummaryBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinishedOrBuilder> finishedBuilder_;
      /**
       * <code>.build_event_stream.BuildFinished finished = 14;</code>
       * @return Whether the finished field is set.
       */
      @java.lang.Override
      public boolean hasFinished() {
        return payloadCase_ == 14;
      }
      /**
       * <code>.build_event_stream.BuildFinished finished = 14;</code>
       * @return The finished.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished getFinished() {
        if (finishedBuilder_ == null) {
          if (payloadCase_ == 14) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.getDefaultInstance();
        } else {
          if (payloadCase_ == 14) {
            return finishedBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildFinished finished = 14;</code>
       */
      public Builder setFinished(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished value) {
        if (finishedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          finishedBuilder_.setMessage(value);
        }
        payloadCase_ = 14;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildFinished finished = 14;</code>
       */
      public Builder setFinished(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.Builder builderForValue) {
        if (finishedBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          finishedBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 14;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildFinished finished = 14;</code>
       */
      public Builder mergeFinished(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished value) {
        if (finishedBuilder_ == null) {
          if (payloadCase_ == 14 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 14) {
            finishedBuilder_.mergeFrom(value);
          } else {
            finishedBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 14;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildFinished finished = 14;</code>
       */
      public Builder clearFinished() {
        if (finishedBuilder_ == null) {
          if (payloadCase_ == 14) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 14) {
            payloadCase_ = 0;
            payload_ = null;
          }
          finishedBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildFinished finished = 14;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.Builder getFinishedBuilder() {
        return getFinishedFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildFinished finished = 14;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinishedOrBuilder getFinishedOrBuilder() {
        if ((payloadCase_ == 14) && (finishedBuilder_ != null)) {
          return finishedBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 14) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildFinished finished = 14;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinishedOrBuilder> 
          getFinishedFieldBuilder() {
        if (finishedBuilder_ == null) {
          if (!(payloadCase_ == 14)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.getDefaultInstance();
          }
          finishedBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinishedOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildFinished) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 14;
        onChanged();
        return finishedBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogsOrBuilder> buildToolLogsBuilder_;
      /**
       * <code>.build_event_stream.BuildToolLogs build_tool_logs = 23;</code>
       * @return Whether the buildToolLogs field is set.
       */
      @java.lang.Override
      public boolean hasBuildToolLogs() {
        return payloadCase_ == 23;
      }
      /**
       * <code>.build_event_stream.BuildToolLogs build_tool_logs = 23;</code>
       * @return The buildToolLogs.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs getBuildToolLogs() {
        if (buildToolLogsBuilder_ == null) {
          if (payloadCase_ == 23) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs.getDefaultInstance();
        } else {
          if (payloadCase_ == 23) {
            return buildToolLogsBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildToolLogs build_tool_logs = 23;</code>
       */
      public Builder setBuildToolLogs(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs value) {
        if (buildToolLogsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          buildToolLogsBuilder_.setMessage(value);
        }
        payloadCase_ = 23;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildToolLogs build_tool_logs = 23;</code>
       */
      public Builder setBuildToolLogs(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs.Builder builderForValue) {
        if (buildToolLogsBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          buildToolLogsBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 23;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildToolLogs build_tool_logs = 23;</code>
       */
      public Builder mergeBuildToolLogs(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs value) {
        if (buildToolLogsBuilder_ == null) {
          if (payloadCase_ == 23 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 23) {
            buildToolLogsBuilder_.mergeFrom(value);
          } else {
            buildToolLogsBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 23;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildToolLogs build_tool_logs = 23;</code>
       */
      public Builder clearBuildToolLogs() {
        if (buildToolLogsBuilder_ == null) {
          if (payloadCase_ == 23) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 23) {
            payloadCase_ = 0;
            payload_ = null;
          }
          buildToolLogsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildToolLogs build_tool_logs = 23;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs.Builder getBuildToolLogsBuilder() {
        return getBuildToolLogsFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildToolLogs build_tool_logs = 23;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogsOrBuilder getBuildToolLogsOrBuilder() {
        if ((payloadCase_ == 23) && (buildToolLogsBuilder_ != null)) {
          return buildToolLogsBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 23) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildToolLogs build_tool_logs = 23;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogsOrBuilder> 
          getBuildToolLogsFieldBuilder() {
        if (buildToolLogsBuilder_ == null) {
          if (!(payloadCase_ == 23)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs.getDefaultInstance();
          }
          buildToolLogsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogsOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildToolLogs) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 23;
        onChanged();
        return buildToolLogsBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetricsOrBuilder> buildMetricsBuilder_;
      /**
       * <code>.build_event_stream.BuildMetrics build_metrics = 24;</code>
       * @return Whether the buildMetrics field is set.
       */
      @java.lang.Override
      public boolean hasBuildMetrics() {
        return payloadCase_ == 24;
      }
      /**
       * <code>.build_event_stream.BuildMetrics build_metrics = 24;</code>
       * @return The buildMetrics.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics getBuildMetrics() {
        if (buildMetricsBuilder_ == null) {
          if (payloadCase_ == 24) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.getDefaultInstance();
        } else {
          if (payloadCase_ == 24) {
            return buildMetricsBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildMetrics build_metrics = 24;</code>
       */
      public Builder setBuildMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics value) {
        if (buildMetricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          buildMetricsBuilder_.setMessage(value);
        }
        payloadCase_ = 24;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics build_metrics = 24;</code>
       */
      public Builder setBuildMetrics(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.Builder builderForValue) {
        if (buildMetricsBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          buildMetricsBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 24;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics build_metrics = 24;</code>
       */
      public Builder mergeBuildMetrics(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics value) {
        if (buildMetricsBuilder_ == null) {
          if (payloadCase_ == 24 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 24) {
            buildMetricsBuilder_.mergeFrom(value);
          } else {
            buildMetricsBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 24;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics build_metrics = 24;</code>
       */
      public Builder clearBuildMetrics() {
        if (buildMetricsBuilder_ == null) {
          if (payloadCase_ == 24) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 24) {
            payloadCase_ = 0;
            payload_ = null;
          }
          buildMetricsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetrics build_metrics = 24;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.Builder getBuildMetricsBuilder() {
        return getBuildMetricsFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildMetrics build_metrics = 24;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetricsOrBuilder getBuildMetricsOrBuilder() {
        if ((payloadCase_ == 24) && (buildMetricsBuilder_ != null)) {
          return buildMetricsBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 24) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildMetrics build_metrics = 24;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetricsOrBuilder> 
          getBuildMetricsFieldBuilder() {
        if (buildMetricsBuilder_ == null) {
          if (!(payloadCase_ == 24)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.getDefaultInstance();
          }
          buildMetricsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetricsOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetrics) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 24;
        onChanged();
        return buildMetricsBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfigOrBuilder> workspaceInfoBuilder_;
      /**
       * <code>.build_event_stream.WorkspaceConfig workspace_info = 25;</code>
       * @return Whether the workspaceInfo field is set.
       */
      @java.lang.Override
      public boolean hasWorkspaceInfo() {
        return payloadCase_ == 25;
      }
      /**
       * <code>.build_event_stream.WorkspaceConfig workspace_info = 25;</code>
       * @return The workspaceInfo.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig getWorkspaceInfo() {
        if (workspaceInfoBuilder_ == null) {
          if (payloadCase_ == 25) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig.getDefaultInstance();
        } else {
          if (payloadCase_ == 25) {
            return workspaceInfoBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.WorkspaceConfig workspace_info = 25;</code>
       */
      public Builder setWorkspaceInfo(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig value) {
        if (workspaceInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          workspaceInfoBuilder_.setMessage(value);
        }
        payloadCase_ = 25;
        return this;
      }
      /**
       * <code>.build_event_stream.WorkspaceConfig workspace_info = 25;</code>
       */
      public Builder setWorkspaceInfo(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig.Builder builderForValue) {
        if (workspaceInfoBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          workspaceInfoBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 25;
        return this;
      }
      /**
       * <code>.build_event_stream.WorkspaceConfig workspace_info = 25;</code>
       */
      public Builder mergeWorkspaceInfo(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig value) {
        if (workspaceInfoBuilder_ == null) {
          if (payloadCase_ == 25 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 25) {
            workspaceInfoBuilder_.mergeFrom(value);
          } else {
            workspaceInfoBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 25;
        return this;
      }
      /**
       * <code>.build_event_stream.WorkspaceConfig workspace_info = 25;</code>
       */
      public Builder clearWorkspaceInfo() {
        if (workspaceInfoBuilder_ == null) {
          if (payloadCase_ == 25) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 25) {
            payloadCase_ = 0;
            payload_ = null;
          }
          workspaceInfoBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.WorkspaceConfig workspace_info = 25;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig.Builder getWorkspaceInfoBuilder() {
        return getWorkspaceInfoFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.WorkspaceConfig workspace_info = 25;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfigOrBuilder getWorkspaceInfoOrBuilder() {
        if ((payloadCase_ == 25) && (workspaceInfoBuilder_ != null)) {
          return workspaceInfoBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 25) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.WorkspaceConfig workspace_info = 25;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfigOrBuilder> 
          getWorkspaceInfoFieldBuilder() {
        if (workspaceInfoBuilder_ == null) {
          if (!(payloadCase_ == 25)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig.getDefaultInstance();
          }
          workspaceInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfigOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.WorkspaceConfig) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 25;
        onChanged();
        return workspaceInfoBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadataOrBuilder> buildMetadataBuilder_;
      /**
       * <code>.build_event_stream.BuildMetadata build_metadata = 26;</code>
       * @return Whether the buildMetadata field is set.
       */
      @java.lang.Override
      public boolean hasBuildMetadata() {
        return payloadCase_ == 26;
      }
      /**
       * <code>.build_event_stream.BuildMetadata build_metadata = 26;</code>
       * @return The buildMetadata.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata getBuildMetadata() {
        if (buildMetadataBuilder_ == null) {
          if (payloadCase_ == 26) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata.getDefaultInstance();
        } else {
          if (payloadCase_ == 26) {
            return buildMetadataBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildMetadata build_metadata = 26;</code>
       */
      public Builder setBuildMetadata(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata value) {
        if (buildMetadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          buildMetadataBuilder_.setMessage(value);
        }
        payloadCase_ = 26;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetadata build_metadata = 26;</code>
       */
      public Builder setBuildMetadata(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata.Builder builderForValue) {
        if (buildMetadataBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          buildMetadataBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 26;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetadata build_metadata = 26;</code>
       */
      public Builder mergeBuildMetadata(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata value) {
        if (buildMetadataBuilder_ == null) {
          if (payloadCase_ == 26 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 26) {
            buildMetadataBuilder_.mergeFrom(value);
          } else {
            buildMetadataBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 26;
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetadata build_metadata = 26;</code>
       */
      public Builder clearBuildMetadata() {
        if (buildMetadataBuilder_ == null) {
          if (payloadCase_ == 26) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 26) {
            payloadCase_ = 0;
            payload_ = null;
          }
          buildMetadataBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.BuildMetadata build_metadata = 26;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata.Builder getBuildMetadataBuilder() {
        return getBuildMetadataFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.BuildMetadata build_metadata = 26;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadataOrBuilder getBuildMetadataOrBuilder() {
        if ((payloadCase_ == 26) && (buildMetadataBuilder_ != null)) {
          return buildMetadataBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 26) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.BuildMetadata build_metadata = 26;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadataOrBuilder> 
          getBuildMetadataFieldBuilder() {
        if (buildMetadataBuilder_ == null) {
          if (!(payloadCase_ == 26)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata.getDefaultInstance();
          }
          buildMetadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadataOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildMetadata) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 26;
        onChanged();
        return buildMetadataBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentifiedOrBuilder> convenienceSymlinksIdentifiedBuilder_;
      /**
       * <code>.build_event_stream.ConvenienceSymlinksIdentified convenience_symlinks_identified = 27;</code>
       * @return Whether the convenienceSymlinksIdentified field is set.
       */
      @java.lang.Override
      public boolean hasConvenienceSymlinksIdentified() {
        return payloadCase_ == 27;
      }
      /**
       * <code>.build_event_stream.ConvenienceSymlinksIdentified convenience_symlinks_identified = 27;</code>
       * @return The convenienceSymlinksIdentified.
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified getConvenienceSymlinksIdentified() {
        if (convenienceSymlinksIdentifiedBuilder_ == null) {
          if (payloadCase_ == 27) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified.getDefaultInstance();
        } else {
          if (payloadCase_ == 27) {
            return convenienceSymlinksIdentifiedBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.ConvenienceSymlinksIdentified convenience_symlinks_identified = 27;</code>
       */
      public Builder setConvenienceSymlinksIdentified(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified value) {
        if (convenienceSymlinksIdentifiedBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          payload_ = value;
          onChanged();
        } else {
          convenienceSymlinksIdentifiedBuilder_.setMessage(value);
        }
        payloadCase_ = 27;
        return this;
      }
      /**
       * <code>.build_event_stream.ConvenienceSymlinksIdentified convenience_symlinks_identified = 27;</code>
       */
      public Builder setConvenienceSymlinksIdentified(
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified.Builder builderForValue) {
        if (convenienceSymlinksIdentifiedBuilder_ == null) {
          payload_ = builderForValue.build();
          onChanged();
        } else {
          convenienceSymlinksIdentifiedBuilder_.setMessage(builderForValue.build());
        }
        payloadCase_ = 27;
        return this;
      }
      /**
       * <code>.build_event_stream.ConvenienceSymlinksIdentified convenience_symlinks_identified = 27;</code>
       */
      public Builder mergeConvenienceSymlinksIdentified(com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified value) {
        if (convenienceSymlinksIdentifiedBuilder_ == null) {
          if (payloadCase_ == 27 &&
              payload_ != com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified.getDefaultInstance()) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified.newBuilder((com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified) payload_)
                .mergeFrom(value).buildPartial();
          } else {
            payload_ = value;
          }
          onChanged();
        } else {
          if (payloadCase_ == 27) {
            convenienceSymlinksIdentifiedBuilder_.mergeFrom(value);
          } else {
            convenienceSymlinksIdentifiedBuilder_.setMessage(value);
          }
        }
        payloadCase_ = 27;
        return this;
      }
      /**
       * <code>.build_event_stream.ConvenienceSymlinksIdentified convenience_symlinks_identified = 27;</code>
       */
      public Builder clearConvenienceSymlinksIdentified() {
        if (convenienceSymlinksIdentifiedBuilder_ == null) {
          if (payloadCase_ == 27) {
            payloadCase_ = 0;
            payload_ = null;
            onChanged();
          }
        } else {
          if (payloadCase_ == 27) {
            payloadCase_ = 0;
            payload_ = null;
          }
          convenienceSymlinksIdentifiedBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.build_event_stream.ConvenienceSymlinksIdentified convenience_symlinks_identified = 27;</code>
       */
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified.Builder getConvenienceSymlinksIdentifiedBuilder() {
        return getConvenienceSymlinksIdentifiedFieldBuilder().getBuilder();
      }
      /**
       * <code>.build_event_stream.ConvenienceSymlinksIdentified convenience_symlinks_identified = 27;</code>
       */
      @java.lang.Override
      public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentifiedOrBuilder getConvenienceSymlinksIdentifiedOrBuilder() {
        if ((payloadCase_ == 27) && (convenienceSymlinksIdentifiedBuilder_ != null)) {
          return convenienceSymlinksIdentifiedBuilder_.getMessageOrBuilder();
        } else {
          if (payloadCase_ == 27) {
            return (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified) payload_;
          }
          return com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified.getDefaultInstance();
        }
      }
      /**
       * <code>.build_event_stream.ConvenienceSymlinksIdentified convenience_symlinks_identified = 27;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentifiedOrBuilder> 
          getConvenienceSymlinksIdentifiedFieldBuilder() {
        if (convenienceSymlinksIdentifiedBuilder_ == null) {
          if (!(payloadCase_ == 27)) {
            payload_ = com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified.getDefaultInstance();
          }
          convenienceSymlinksIdentifiedBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified.Builder, com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentifiedOrBuilder>(
                  (com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlinksIdentified) payload_,
                  getParentForChildren(),
                  isClean());
          payload_ = null;
        }
        payloadCase_ = 27;
        onChanged();
        return convenienceSymlinksIdentifiedBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:build_event_stream.BuildEvent)
    }

    // @@protoc_insertion_point(class_scope:build_event_stream.BuildEvent)
    private static final com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent();
    }

    public static com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<BuildEvent>
        PARSER = new com.google.protobuf.AbstractParser<BuildEvent>() {
      @java.lang.Override
      public BuildEvent parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<BuildEvent> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<BuildEvent> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEvent getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_UnknownBuildEventId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_UnknownBuildEventId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_ProgressId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_ProgressId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_BuildStartedId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_BuildStartedId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_UnstructuredCommandLineId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_UnstructuredCommandLineId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_StructuredCommandLineId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_StructuredCommandLineId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_WorkspaceStatusId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_WorkspaceStatusId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_OptionsParsedId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_OptionsParsedId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_FetchId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_FetchId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_PatternExpandedId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_PatternExpandedId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_WorkspaceConfigId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_WorkspaceConfigId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_BuildMetadataId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_BuildMetadataId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_TargetConfiguredId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_TargetConfiguredId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_NamedSetOfFilesId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_NamedSetOfFilesId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_ConfigurationId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_ConfigurationId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_TargetCompletedId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_TargetCompletedId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_ActionCompletedId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_ActionCompletedId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_UnconfiguredLabelId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_UnconfiguredLabelId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_ConfiguredLabelId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_ConfiguredLabelId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_TestResultId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_TestResultId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_TestSummaryId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_TestSummaryId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_TargetSummaryId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_TargetSummaryId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_BuildFinishedId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_BuildFinishedId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_BuildToolLogsId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_BuildToolLogsId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_BuildMetricsId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_BuildMetricsId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEventId_ConvenienceSymlinksIdentifiedId_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEventId_ConvenienceSymlinksIdentifiedId_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_Progress_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_Progress_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_Aborted_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_Aborted_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildStarted_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildStarted_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_WorkspaceConfig_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_WorkspaceConfig_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_UnstructuredCommandLine_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_UnstructuredCommandLine_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_OptionsParsed_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_OptionsParsed_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_Fetch_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_Fetch_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_WorkspaceStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_WorkspaceStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_WorkspaceStatus_Item_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_WorkspaceStatus_Item_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildMetadata_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildMetadata_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildMetadata_MetadataEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildMetadata_MetadataEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_Configuration_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_Configuration_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_Configuration_MakeVariableEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_Configuration_MakeVariableEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_PatternExpanded_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_PatternExpanded_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_PatternExpanded_TestSuiteExpansion_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_PatternExpanded_TestSuiteExpansion_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_TargetConfigured_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_TargetConfigured_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_File_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_File_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_NamedSetOfFiles_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_NamedSetOfFiles_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_ActionExecuted_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_ActionExecuted_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_OutputGroup_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_OutputGroup_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_TargetComplete_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_TargetComplete_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_TestResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_TestResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_TestResult_ExecutionInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_TestResult_ExecutionInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_TestResult_ExecutionInfo_TimingBreakdown_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_TestResult_ExecutionInfo_TimingBreakdown_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_TestResult_ExecutionInfo_ResourceUsage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_TestResult_ExecutionInfo_ResourceUsage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_TestSummary_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_TestSummary_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_TargetSummary_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_TargetSummary_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildFinished_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildFinished_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildFinished_ExitCode_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildFinished_ExitCode_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildFinished_AnomalyReport_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildFinished_AnomalyReport_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildMetrics_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildMetrics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildMetrics_ActionSummary_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildMetrics_ActionSummary_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildMetrics_ActionSummary_ActionData_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildMetrics_ActionSummary_ActionData_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildMetrics_ActionSummary_RunnerCount_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildMetrics_ActionSummary_RunnerCount_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildMetrics_MemoryMetrics_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildMetrics_MemoryMetrics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildMetrics_MemoryMetrics_GarbageMetrics_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildMetrics_MemoryMetrics_GarbageMetrics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildMetrics_TargetMetrics_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildMetrics_TargetMetrics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildMetrics_PackageMetrics_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildMetrics_PackageMetrics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildMetrics_TimingMetrics_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildMetrics_TimingMetrics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildMetrics_CumulativeMetrics_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildMetrics_CumulativeMetrics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_FilesMetric_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_FilesMetric_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildMetrics_BuildGraphMetrics_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildMetrics_BuildGraphMetrics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildMetrics_WorkerMetrics_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildMetrics_WorkerMetrics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildMetrics_WorkerMetrics_WorkerStats_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildMetrics_WorkerMetrics_WorkerStats_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildMetrics_NetworkMetrics_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildMetrics_NetworkMetrics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildMetrics_NetworkMetrics_SystemNetworkStats_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildMetrics_NetworkMetrics_SystemNetworkStats_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildToolLogs_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildToolLogs_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_ConvenienceSymlinksIdentified_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_ConvenienceSymlinksIdentified_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_ConvenienceSymlink_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_ConvenienceSymlink_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_event_stream_BuildEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_event_stream_BuildEvent_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\036bazel/build_event_stream.proto\022\022build_" +
      "event_stream\032\027protobuf/duration.proto\032\030p" +
      "rotobuf/timestamp.proto\032\030bazel/command_l" +
      "ine.proto\032\033bazel/failure_details.proto\032\035" +
      "bazel/invocation_policy.proto\"\206\032\n\014BuildE" +
      "ventId\022G\n\007unknown\030\001 \001(\01324.build_event_st" +
      "ream.BuildEventId.UnknownBuildEventIdH\000\022" +
      "?\n\010progress\030\002 \001(\0132+.build_event_stream.B" +
      "uildEventId.ProgressIdH\000\022B\n\007started\030\003 \001(" +
      "\0132/.build_event_stream.BuildEventId.Buil" +
      "dStartedIdH\000\022_\n\031unstructured_command_lin" +
      "e\030\013 \001(\0132:.build_event_stream.BuildEventI" +
      "d.UnstructuredCommandLineIdH\000\022[\n\027structu" +
      "red_command_line\030\022 \001(\01328.build_event_str" +
      "eam.BuildEventId.StructuredCommandLineId" +
      "H\000\022N\n\020workspace_status\030\016 \001(\01322.build_eve" +
      "nt_stream.BuildEventId.WorkspaceStatusId" +
      "H\000\022J\n\016options_parsed\030\014 \001(\01320.build_event" +
      "_stream.BuildEventId.OptionsParsedIdH\000\0229" +
      "\n\005fetch\030\021 \001(\0132(.build_event_stream.Build" +
      "EventId.FetchIdH\000\022I\n\rconfiguration\030\017 \001(\013" +
      "20.build_event_stream.BuildEventId.Confi" +
      "gurationIdH\000\022P\n\021target_configured\030\020 \001(\0132" +
      "3.build_event_stream.BuildEventId.Target" +
      "ConfiguredIdH\000\022E\n\007pattern\030\004 \001(\01322.build_" +
      "event_stream.BuildEventId.PatternExpande" +
      "dIdH\000\022M\n\017pattern_skipped\030\n \001(\01322.build_e" +
      "vent_stream.BuildEventId.PatternExpanded" +
      "IdH\000\022G\n\tnamed_set\030\r \001(\01322.build_event_st" +
      "ream.BuildEventId.NamedSetOfFilesIdH\000\022N\n" +
      "\020target_completed\030\005 \001(\01322.build_event_st" +
      "ream.BuildEventId.TargetCompletedIdH\000\022N\n" +
      "\020action_completed\030\006 \001(\01322.build_event_st" +
      "ream.BuildEventId.ActionCompletedIdH\000\022R\n" +
      "\022unconfigured_label\030\023 \001(\01324.build_event_" +
      "stream.BuildEventId.UnconfiguredLabelIdH" +
      "\000\022N\n\020configured_label\030\025 \001(\01322.build_even" +
      "t_stream.BuildEventId.ConfiguredLabelIdH" +
      "\000\022D\n\013test_result\030\010 \001(\0132-.build_event_str" +
      "eam.BuildEventId.TestResultIdH\000\022F\n\014test_" +
      "summary\030\007 \001(\0132..build_event_stream.Build" +
      "EventId.TestSummaryIdH\000\022J\n\016target_summar" +
      "y\030\032 \001(\01320.build_event_stream.BuildEventI" +
      "d.TargetSummaryIdH\000\022J\n\016build_finished\030\t " +
      "\001(\01320.build_event_stream.BuildEventId.Bu" +
      "ildFinishedIdH\000\022K\n\017build_tool_logs\030\024 \001(\013" +
      "20.build_event_stream.BuildEventId.Build" +
      "ToolLogsIdH\000\022H\n\rbuild_metrics\030\026 \001(\0132/.bu" +
      "ild_event_stream.BuildEventId.BuildMetri" +
      "csIdH\000\022G\n\tworkspace\030\027 \001(\01322.build_event_" +
      "stream.BuildEventId.WorkspaceConfigIdH\000\022" +
      "J\n\016build_metadata\030\030 \001(\01320.build_event_st" +
      "ream.BuildEventId.BuildMetadataIdH\000\022k\n\037c" +
      "onvenience_symlinks_identified\030\031 \001(\0132@.b" +
      "uild_event_stream.BuildEventId.Convenien" +
      "ceSymlinksIdentifiedIdH\000\032&\n\023UnknownBuild" +
      "EventId\022\017\n\007details\030\001 \001(\t\032\"\n\nProgressId\022\024" +
      "\n\014opaque_count\030\001 \001(\005\032\020\n\016BuildStartedId\032\033" +
      "\n\031UnstructuredCommandLineId\0325\n\027Structure" +
      "dCommandLineId\022\032\n\022command_line_label\030\001 \001" +
      "(\t\032\023\n\021WorkspaceStatusId\032\021\n\017OptionsParsed" +
      "Id\032\026\n\007FetchId\022\013\n\003url\030\001 \001(\t\032$\n\021PatternExp" +
      "andedId\022\017\n\007pattern\030\001 \003(\t\032\023\n\021WorkspaceCon" +
      "figId\032\021\n\017BuildMetadataId\0323\n\022TargetConfig" +
      "uredId\022\r\n\005label\030\001 \001(\t\022\016\n\006aspect\030\002 \001(\t\032\037\n" +
      "\021NamedSetOfFilesId\022\n\n\002id\030\001 \001(\t\032\035\n\017Config" +
      "urationId\022\n\n\002id\030\001 \001(\t\032{\n\021TargetCompleted" +
      "Id\022\r\n\005label\030\001 \001(\t\022G\n\rconfiguration\030\003 \001(\013" +
      "20.build_event_stream.BuildEventId.Confi" +
      "gurationId\022\016\n\006aspect\030\002 \001(\t\032\203\001\n\021ActionCom" +
      "pletedId\022\026\n\016primary_output\030\001 \001(\t\022\r\n\005labe" +
      "l\030\002 \001(\t\022G\n\rconfiguration\030\003 \001(\01320.build_e" +
      "vent_stream.BuildEventId.ConfigurationId" +
      "\032$\n\023UnconfiguredLabelId\022\r\n\005label\030\001 \001(\t\032k" +
      "\n\021ConfiguredLabelId\022\r\n\005label\030\001 \001(\t\022G\n\rco" +
      "nfiguration\030\002 \001(\01320.build_event_stream.B" +
      "uildEventId.ConfigurationId\032\223\001\n\014TestResu" +
      "ltId\022\r\n\005label\030\001 \001(\t\022G\n\rconfiguration\030\005 \001" +
      "(\01320.build_event_stream.BuildEventId.Con" +
      "figurationId\022\013\n\003run\030\002 \001(\005\022\r\n\005shard\030\003 \001(\005" +
      "\022\017\n\007attempt\030\004 \001(\005\032g\n\rTestSummaryId\022\r\n\005la" +
      "bel\030\001 \001(\t\022G\n\rconfiguration\030\002 \001(\01320.build" +
      "_event_stream.BuildEventId.Configuration" +
      "Id\032i\n\017TargetSummaryId\022\r\n\005label\030\001 \001(\t\022G\n\r" +
      "configuration\030\002 \001(\01320.build_event_stream" +
      ".BuildEventId.ConfigurationId\032\021\n\017BuildFi" +
      "nishedId\032\021\n\017BuildToolLogsId\032\020\n\016BuildMetr" +
      "icsId\032!\n\037ConvenienceSymlinksIdentifiedId" +
      "B\004\n\002id\"*\n\010Progress\022\016\n\006stdout\030\001 \001(\t\022\016\n\006st" +
      "derr\030\002 \001(\t\"\277\002\n\007Aborted\0227\n\006reason\030\001 \001(\0162\'" +
      ".build_event_stream.Aborted.AbortReason\022" +
      "\023\n\013description\030\002 \001(\t\"\345\001\n\013AbortReason\022\013\n\007" +
      "UNKNOWN\020\000\022\024\n\020USER_INTERRUPTED\020\001\022\016\n\nNO_AN" +
      "ALYZE\020\010\022\014\n\010NO_BUILD\020\t\022\014\n\010TIME_OUT\020\002\022\036\n\032R" +
      "EMOTE_ENVIRONMENT_FAILURE\020\003\022\014\n\010INTERNAL\020" +
      "\004\022\023\n\017LOADING_FAILURE\020\005\022\024\n\020ANALYSIS_FAILU" +
      "RE\020\006\022\013\n\007SKIPPED\020\007\022\016\n\nINCOMPLETE\020\n\022\021\n\rOUT" +
      "_OF_MEMORY\020\013\"\201\002\n\014BuildStarted\022\014\n\004uuid\030\001 " +
      "\001(\t\022\035\n\021start_time_millis\030\002 \001(\003B\002\030\001\022.\n\nst" +
      "art_time\030\t \001(\0132\032.google.protobuf.Timesta" +
      "mp\022\032\n\022build_tool_version\030\003 \001(\t\022\033\n\023option" +
      "s_description\030\004 \001(\t\022\017\n\007command\030\005 \001(\t\022\031\n\021" +
      "working_directory\030\006 \001(\t\022\033\n\023workspace_dir" +
      "ectory\030\007 \001(\t\022\022\n\nserver_pid\030\010 \001(\003\"*\n\017Work" +
      "spaceConfig\022\027\n\017local_exec_root\030\001 \001(\t\"\'\n\027" +
      "UnstructuredCommandLine\022\014\n\004args\030\001 \003(\t\"\317\001" +
      "\n\rOptionsParsed\022\027\n\017startup_options\030\001 \003(\t" +
      "\022 \n\030explicit_startup_options\030\002 \003(\t\022\020\n\010cm" +
      "d_line\030\003 \003(\t\022\031\n\021explicit_cmd_line\030\004 \003(\t\022" +
      "D\n\021invocation_policy\030\005 \001(\0132).blaze.invoc" +
      "ation_policy.InvocationPolicy\022\020\n\010tool_ta" +
      "g\030\006 \001(\t\"\030\n\005Fetch\022\017\n\007success\030\001 \001(\010\"m\n\017Wor" +
      "kspaceStatus\0226\n\004item\030\001 \003(\0132(.build_event" +
      "_stream.WorkspaceStatus.Item\032\"\n\004Item\022\013\n\003" +
      "key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t\"\203\001\n\rBuildMetada" +
      "ta\022A\n\010metadata\030\001 \003(\0132/.build_event_strea" +
      "m.BuildMetadata.MetadataEntry\032/\n\rMetadat" +
      "aEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\327" +
      "\001\n\rConfiguration\022\020\n\010mnemonic\030\001 \001(\t\022\025\n\rpl" +
      "atform_name\030\002 \001(\t\022\013\n\003cpu\030\003 \001(\t\022J\n\rmake_v" +
      "ariable\030\004 \003(\01323.build_event_stream.Confi" +
      "guration.MakeVariableEntry\022\017\n\007is_tool\030\005 " +
      "\001(\010\0323\n\021MakeVariableEntry\022\013\n\003key\030\001 \001(\t\022\r\n" +
      "\005value\030\002 \001(\t:\0028\001\"\250\001\n\017PatternExpanded\022U\n\025" +
      "test_suite_expansions\030\001 \003(\01326.build_even" +
      "t_stream.PatternExpanded.TestSuiteExpans" +
      "ion\032>\n\022TestSuiteExpansion\022\023\n\013suite_label" +
      "\030\001 \001(\t\022\023\n\013test_labels\030\002 \003(\t\"e\n\020TargetCon" +
      "figured\022\023\n\013target_kind\030\001 \001(\t\022/\n\ttest_siz" +
      "e\030\002 \001(\0162\034.build_event_stream.TestSize\022\013\n" +
      "\003tag\030\003 \003(\t\"t\n\004File\022\023\n\013path_prefix\030\004 \003(\t\022" +
      "\014\n\004name\030\001 \001(\t\022\r\n\003uri\030\002 \001(\tH\000\022\022\n\010contents" +
      "\030\003 \001(\014H\000\022\016\n\006digest\030\005 \001(\t\022\016\n\006length\030\006 \001(\003" +
      "B\006\n\004file\"\201\001\n\017NamedSetOfFiles\022\'\n\005files\030\001 " +
      "\003(\0132\030.build_event_stream.File\022E\n\tfile_se" +
      "ts\030\002 \003(\01322.build_event_stream.BuildEvent" +
      "Id.NamedSetOfFilesId\"\256\003\n\016ActionExecuted\022" +
      "\017\n\007success\030\001 \001(\010\022\014\n\004type\030\010 \001(\t\022\021\n\texit_c" +
      "ode\030\002 \001(\005\022(\n\006stdout\030\003 \001(\0132\030.build_event_" +
      "stream.File\022(\n\006stderr\030\004 \001(\0132\030.build_even" +
      "t_stream.File\022\021\n\005label\030\005 \001(\tB\002\030\001\022K\n\rconf" +
      "iguration\030\007 \001(\01320.build_event_stream.Bui" +
      "ldEventId.ConfigurationIdB\002\030\001\0220\n\016primary" +
      "_output\030\006 \001(\0132\030.build_event_stream.File\022" +
      "\024\n\014command_line\030\t \003(\t\0226\n\024action_metadata" +
      "_logs\030\n \003(\0132\030.build_event_stream.File\0226\n" +
      "\016failure_detail\030\013 \001(\0132\036.failure_details." +
      "FailureDetail\"|\n\013OutputGroup\022\014\n\004name\030\001 \001" +
      "(\t\022E\n\tfile_sets\030\003 \003(\01322.build_event_stre" +
      "am.BuildEventId.NamedSetOfFilesId\022\022\n\ninc" +
      "omplete\030\004 \001(\010J\004\010\002\020\003\"\252\003\n\016TargetComplete\022\017" +
      "\n\007success\030\001 \001(\010\022\027\n\013target_kind\030\005 \001(\tB\002\030\001" +
      "\0223\n\ttest_size\030\006 \001(\0162\034.build_event_stream" +
      ".TestSizeB\002\030\001\0225\n\014output_group\030\002 \003(\0132\037.bu" +
      "ild_event_stream.OutputGroup\0226\n\020importan" +
      "t_output\030\004 \003(\0132\030.build_event_stream.File" +
      "B\002\030\001\0222\n\020directory_output\030\010 \003(\0132\030.build_e" +
      "vent_stream.File\022\013\n\003tag\030\003 \003(\t\022 \n\024test_ti" +
      "meout_seconds\030\007 \001(\003B\002\030\001\022/\n\014test_timeout\030" +
      "\n \001(\0132\031.google.protobuf.Duration\0226\n\016fail" +
      "ure_detail\030\t \001(\0132\036.failure_details.Failu" +
      "reDetail\"\322\007\n\nTestResult\022.\n\006status\030\005 \001(\0162" +
      "\036.build_event_stream.TestStatus\022\026\n\016statu" +
      "s_details\030\t \001(\t\022\026\n\016cached_locally\030\004 \001(\010\022" +
      "+\n\037test_attempt_start_millis_epoch\030\006 \001(\003" +
      "B\002\030\001\0226\n\022test_attempt_start\030\n \001(\0132\032.googl" +
      "e.protobuf.Timestamp\022(\n\034test_attempt_dur" +
      "ation_millis\030\003 \001(\003B\002\030\001\0228\n\025test_attempt_d" +
      "uration\030\013 \001(\0132\031.google.protobuf.Duration" +
      "\0224\n\022test_action_output\030\002 \003(\0132\030.build_eve" +
      "nt_stream.File\022\017\n\007warning\030\007 \003(\t\022D\n\016execu" +
      "tion_info\030\010 \001(\0132,.build_event_stream.Tes" +
      "tResult.ExecutionInfo\032\207\004\n\rExecutionInfo\022" +
      "\033\n\017timeout_seconds\030\001 \001(\005B\002\030\001\022\020\n\010strategy" +
      "\030\002 \001(\t\022\027\n\017cached_remotely\030\006 \001(\010\022\021\n\texit_" +
      "code\030\007 \001(\005\022\020\n\010hostname\030\003 \001(\t\022V\n\020timing_b" +
      "reakdown\030\004 \001(\0132<.build_event_stream.Test" +
      "Result.ExecutionInfo.TimingBreakdown\022R\n\016" +
      "resource_usage\030\005 \003(\0132:.build_event_strea" +
      "m.TestResult.ExecutionInfo.ResourceUsage" +
      "\032\256\001\n\017TimingBreakdown\022K\n\005child\030\001 \003(\0132<.bu" +
      "ild_event_stream.TestResult.ExecutionInf" +
      "o.TimingBreakdown\022\014\n\004name\030\002 \001(\t\022\027\n\013time_" +
      "millis\030\003 \001(\003B\002\030\001\022\'\n\004time\030\004 \001(\0132\031.google." +
      "protobuf.Duration\032,\n\rResourceUsage\022\014\n\004na" +
      "me\030\001 \001(\t\022\r\n\005value\030\002 \001(\003J\004\010\001\020\002\"\233\004\n\013TestSu" +
      "mmary\0226\n\016overall_status\030\005 \001(\0162\036.build_ev" +
      "ent_stream.TestStatus\022\027\n\017total_run_count" +
      "\030\001 \001(\005\022\021\n\trun_count\030\n \001(\005\022\025\n\rattempt_cou" +
      "nt\030\017 \001(\005\022\023\n\013shard_count\030\013 \001(\005\022(\n\006passed\030" +
      "\003 \003(\0132\030.build_event_stream.File\022(\n\006faile" +
      "d\030\004 \003(\0132\030.build_event_stream.File\022\030\n\020tot" +
      "al_num_cached\030\006 \001(\005\022#\n\027first_start_time_" +
      "millis\030\007 \001(\003B\002\030\001\0224\n\020first_start_time\030\r \001" +
      "(\0132\032.google.protobuf.Timestamp\022!\n\025last_s" +
      "top_time_millis\030\010 \001(\003B\002\030\001\0222\n\016last_stop_t" +
      "ime\030\016 \001(\0132\032.google.protobuf.Timestamp\022%\n" +
      "\031total_run_duration_millis\030\t \001(\003B\002\030\001\0225\n\022" +
      "total_run_duration\030\014 \001(\0132\031.google.protob" +
      "uf.Duration\"k\n\rTargetSummary\022\035\n\025overall_" +
      "build_success\030\001 \001(\010\022;\n\023overall_test_stat" +
      "us\030\002 \001(\0162\036.build_event_stream.TestStatus" +
      "\"\331\002\n\rBuildFinished\022\033\n\017overall_success\030\001 " +
      "\001(\010B\002\030\001\022=\n\texit_code\030\003 \001(\0132*.build_event" +
      "_stream.BuildFinished.ExitCode\022\036\n\022finish" +
      "_time_millis\030\002 \001(\003B\002\030\001\022/\n\013finish_time\030\005 " +
      "\001(\0132\032.google.protobuf.Timestamp\022K\n\016anoma" +
      "ly_report\030\004 \001(\0132/.build_event_stream.Bui" +
      "ldFinished.AnomalyReportB\002\030\001\032&\n\010ExitCode" +
      "\022\014\n\004name\030\001 \001(\t\022\014\n\004code\030\002 \001(\005\032&\n\rAnomalyR" +
      "eport\022\025\n\rwas_suspended\030\001 \001(\010\"\271\032\n\014BuildMe" +
      "trics\022F\n\016action_summary\030\001 \001(\0132..build_ev" +
      "ent_stream.BuildMetrics.ActionSummary\022F\n" +
      "\016memory_metrics\030\002 \001(\0132..build_event_stre" +
      "am.BuildMetrics.MemoryMetrics\022F\n\016target_" +
      "metrics\030\003 \001(\0132..build_event_stream.Build" +
      "Metrics.TargetMetrics\022H\n\017package_metrics" +
      "\030\004 \001(\0132/.build_event_stream.BuildMetrics" +
      ".PackageMetrics\022F\n\016timing_metrics\030\005 \001(\0132" +
      "..build_event_stream.BuildMetrics.Timing" +
      "Metrics\022N\n\022cumulative_metrics\030\006 \001(\01322.bu" +
      "ild_event_stream.BuildMetrics.Cumulative" +
      "Metrics\022J\n\020artifact_metrics\030\007 \001(\01320.buil" +
      "d_event_stream.BuildMetrics.ArtifactMetr" +
      "ics\022O\n\023build_graph_metrics\030\010 \001(\01322.build" +
      "_event_stream.BuildMetrics.BuildGraphMet" +
      "rics\022F\n\016worker_metrics\030\t \003(\0132..build_eve" +
      "nt_stream.BuildMetrics.WorkerMetrics\022H\n\017" +
      "network_metrics\030\n \001(\0132/.build_event_stre" +
      "am.BuildMetrics.NetworkMetrics\032\311\003\n\rActio" +
      "nSummary\022\027\n\017actions_created\030\001 \001(\003\022-\n%act" +
      "ions_created_not_including_aspects\030\003 \001(\003" +
      "\022\030\n\020actions_executed\030\002 \001(\003\022N\n\013action_dat" +
      "a\030\004 \003(\01329.build_event_stream.BuildMetric" +
      "s.ActionSummary.ActionData\022\035\n\021remote_cac" +
      "he_hits\030\005 \001(\003B\002\030\001\022P\n\014runner_count\030\006 \003(\0132" +
      ":.build_event_stream.BuildMetrics.Action" +
      "Summary.RunnerCount\032i\n\nActionData\022\020\n\010mne" +
      "monic\030\001 \001(\t\022\030\n\020actions_executed\030\002 \001(\003\022\030\n" +
      "\020first_started_ms\030\003 \001(\003\022\025\n\rlast_ended_ms" +
      "\030\004 \001(\003\032*\n\013RunnerCount\022\014\n\004name\030\001 \001(\t\022\r\n\005c" +
      "ount\030\002 \001(\005\032\223\002\n\rMemoryMetrics\022!\n\031used_hea" +
      "p_size_post_build\030\001 \001(\003\022\036\n\026peak_post_gc_" +
      "heap_size\030\002 \001(\003\022,\n$peak_post_gc_tenured_" +
      "space_heap_size\030\004 \001(\003\022V\n\017garbage_metrics" +
      "\030\003 \003(\0132=.build_event_stream.BuildMetrics" +
      ".MemoryMetrics.GarbageMetrics\0329\n\016Garbage" +
      "Metrics\022\014\n\004type\030\001 \001(\t\022\031\n\021garbage_collect" +
      "ed\030\002 \001(\003\032u\n\rTargetMetrics\022\026\n\016targets_loa" +
      "ded\030\001 \001(\003\022\032\n\022targets_configured\030\002 \001(\003\0220\n" +
      "(targets_configured_not_including_aspect" +
      "s\030\003 \001(\003\032)\n\016PackageMetrics\022\027\n\017packages_lo" +
      "aded\030\001 \001(\003\032c\n\rTimingMetrics\022\026\n\016cpu_time_" +
      "in_ms\030\001 \001(\003\022\027\n\017wall_time_in_ms\030\002 \001(\003\022!\n\031" +
      "analysis_phase_time_in_ms\030\003 \001(\003\032=\n\021Cumul" +
      "ativeMetrics\022\024\n\014num_analyses\030\013 \001(\005\022\022\n\nnu" +
      "m_builds\030\014 \001(\005\032\313\003\n\017ArtifactMetrics\022[\n\025so" +
      "urce_artifacts_read\030\002 \001(\0132<.build_event_" +
      "stream.BuildMetrics.ArtifactMetrics.File" +
      "sMetric\022[\n\025output_artifacts_seen\030\003 \001(\0132<" +
      ".build_event_stream.BuildMetrics.Artifac" +
      "tMetrics.FilesMetric\022h\n\"output_artifacts" +
      "_from_action_cache\030\004 \001(\0132<.build_event_s" +
      "tream.BuildMetrics.ArtifactMetrics.Files" +
      "Metric\022Y\n\023top_level_artifacts\030\005 \001(\0132<.bu" +
      "ild_event_stream.BuildMetrics.ArtifactMe" +
      "trics.FilesMetric\0323\n\013FilesMetric\022\025\n\rsize" +
      "_in_bytes\030\001 \001(\003\022\r\n\005count\030\002 \001(\005J\004\010\001\020\002\032\375\002\n" +
      "\021BuildGraphMetrics\022!\n\031action_lookup_valu" +
      "e_count\030\001 \001(\005\0227\n/action_lookup_value_cou" +
      "nt_not_including_aspects\030\005 \001(\005\022\024\n\014action" +
      "_count\030\002 \001(\005\022*\n\"action_count_not_includi" +
      "ng_aspects\030\006 \001(\005\022*\n\"input_file_configure" +
      "d_target_count\030\007 \001(\005\022+\n#output_file_conf" +
      "igured_target_count\030\010 \001(\005\022%\n\035other_confi" +
      "gured_target_count\030\t \001(\005\022\035\n\025output_artif" +
      "act_count\030\003 \001(\005\022+\n#post_invocation_skyfr" +
      "ame_node_count\030\004 \001(\005\032\341\002\n\rWorkerMetrics\022\025" +
      "\n\tworker_id\030\001 \001(\005B\002\030\001\022\022\n\nworker_ids\030\010 \003(" +
      "\r\022\022\n\nprocess_id\030\002 \001(\r\022\020\n\010mnemonic\030\003 \001(\t\022" +
      "\024\n\014is_multiplex\030\004 \001(\010\022\022\n\nis_sandbox\030\005 \001(" +
      "\010\022\025\n\ris_measurable\030\006 \001(\010\022P\n\014worker_stats" +
      "\030\007 \003(\0132:.build_event_stream.BuildMetrics" +
      ".WorkerMetrics.WorkerStats\032l\n\013WorkerStat" +
      "s\022\032\n\022collect_time_in_ms\030\001 \001(\003\022\033\n\023worker_" +
      "memory_in_kb\030\002 \001(\005\022$\n\034last_action_start_" +
      "time_in_ms\030\003 \001(\003\032\345\002\n\016NetworkMetrics\022`\n\024s" +
      "ystem_network_stats\030\001 \001(\0132B.build_event_" +
      "stream.BuildMetrics.NetworkMetrics.Syste" +
      "mNetworkStats\032\360\001\n\022SystemNetworkStats\022\022\n\n" +
      "bytes_sent\030\001 \001(\004\022\022\n\nbytes_recv\030\002 \001(\004\022\024\n\014" +
      "packets_sent\030\003 \001(\004\022\024\n\014packets_recv\030\004 \001(\004" +
      "\022\037\n\027peak_bytes_sent_per_sec\030\005 \001(\004\022\037\n\027pea" +
      "k_bytes_recv_per_sec\030\006 \001(\004\022!\n\031peak_packe" +
      "ts_sent_per_sec\030\007 \001(\004\022!\n\031peak_packets_re" +
      "cv_per_sec\030\010 \001(\004\"6\n\rBuildToolLogs\022%\n\003log" +
      "\030\001 \003(\0132\030.build_event_stream.File\"e\n\035Conv" +
      "enienceSymlinksIdentified\022D\n\024convenience" +
      "_symlinks\030\001 \003(\0132&.build_event_stream.Con" +
      "venienceSymlink\"\240\001\n\022ConvenienceSymlink\022\014" +
      "\n\004path\030\001 \001(\t\022=\n\006action\030\002 \001(\0162-.build_eve" +
      "nt_stream.ConvenienceSymlink.Action\022\016\n\006t" +
      "arget\030\003 \001(\t\"-\n\006Action\022\013\n\007UNKNOWN\020\000\022\n\n\006CR" +
      "EATE\020\001\022\n\n\006DELETE\020\002\"\206\014\n\nBuildEvent\022,\n\002id\030" +
      "\001 \001(\0132 .build_event_stream.BuildEventId\022" +
      "2\n\010children\030\002 \003(\0132 .build_event_stream.B" +
      "uildEventId\022\024\n\014last_message\030\024 \001(\010\0220\n\010pro" +
      "gress\030\003 \001(\0132\034.build_event_stream.Progres" +
      "sH\000\022.\n\007aborted\030\004 \001(\0132\033.build_event_strea" +
      "m.AbortedH\000\0223\n\007started\030\005 \001(\0132 .build_eve" +
      "nt_stream.BuildStartedH\000\022P\n\031unstructured" +
      "_command_line\030\014 \001(\0132+.build_event_stream" +
      ".UnstructuredCommandLineH\000\022<\n\027structured" +
      "_command_line\030\026 \001(\0132\031.command_line.Comma" +
      "ndLineH\000\022;\n\016options_parsed\030\r \001(\0132!.build" +
      "_event_stream.OptionsParsedH\000\022?\n\020workspa" +
      "ce_status\030\020 \001(\0132#.build_event_stream.Wor" +
      "kspaceStatusH\000\022*\n\005fetch\030\025 \001(\0132\031.build_ev" +
      "ent_stream.FetchH\000\022:\n\rconfiguration\030\021 \001(" +
      "\0132!.build_event_stream.ConfigurationH\000\0227" +
      "\n\010expanded\030\006 \001(\0132#.build_event_stream.Pa" +
      "tternExpandedH\000\022:\n\nconfigured\030\022 \001(\0132$.bu" +
      "ild_event_stream.TargetConfiguredH\000\0224\n\006a" +
      "ction\030\007 \001(\0132\".build_event_stream.ActionE" +
      "xecutedH\000\022A\n\022named_set_of_files\030\017 \001(\0132#." +
      "build_event_stream.NamedSetOfFilesH\000\0227\n\t" +
      "completed\030\010 \001(\0132\".build_event_stream.Tar" +
      "getCompleteH\000\0225\n\013test_result\030\n \001(\0132\036.bui" +
      "ld_event_stream.TestResultH\000\0227\n\014test_sum" +
      "mary\030\t \001(\0132\037.build_event_stream.TestSumm" +
      "aryH\000\022;\n\016target_summary\030\034 \001(\0132!.build_ev" +
      "ent_stream.TargetSummaryH\000\0225\n\010finished\030\016" +
      " \001(\0132!.build_event_stream.BuildFinishedH" +
      "\000\022<\n\017build_tool_logs\030\027 \001(\0132!.build_event" +
      "_stream.BuildToolLogsH\000\0229\n\rbuild_metrics" +
      "\030\030 \001(\0132 .build_event_stream.BuildMetrics" +
      "H\000\022=\n\016workspace_info\030\031 \001(\0132#.build_event" +
      "_stream.WorkspaceConfigH\000\022;\n\016build_metad" +
      "ata\030\032 \001(\0132!.build_event_stream.BuildMeta" +
      "dataH\000\022\\\n\037convenience_symlinks_identifie" +
      "d\030\033 \001(\01321.build_event_stream.Convenience" +
      "SymlinksIdentifiedH\000B\t\n\007payloadJ\004\010\013\020\014J\004\010" +
      "\023\020\024*G\n\010TestSize\022\013\n\007UNKNOWN\020\000\022\t\n\005SMALL\020\001\022" +
      "\n\n\006MEDIUM\020\002\022\t\n\005LARGE\020\003\022\014\n\010ENORMOUS\020\004*\244\001\n" +
      "\nTestStatus\022\r\n\tNO_STATUS\020\000\022\n\n\006PASSED\020\001\022\t" +
      "\n\005FLAKY\020\002\022\013\n\007TIMEOUT\020\003\022\n\n\006FAILED\020\004\022\016\n\nIN" +
      "COMPLETE\020\005\022\022\n\016REMOTE_FAILURE\020\006\022\023\n\017FAILED" +
      "_TO_BUILD\020\007\022\036\n\032TOOL_HALTED_BEFORE_TESTIN" +
      "G\020\010BH\n.com.google.devtools.build.lib.bui" +
      "ldeventstreamB\026BuildEventStreamProtosb\006p" +
      "roto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.google.protobuf.DurationProto.getDescriptor(),
          com.google.protobuf.TimestampProto.getDescriptor(),
          com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.getDescriptor(),
          com.google.devtools.build.lib.server.FailureDetails.getDescriptor(),
          com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.getDescriptor(),
        });
    internal_static_build_event_stream_BuildEventId_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_build_event_stream_BuildEventId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_descriptor,
        new java.lang.String[] { "Unknown", "Progress", "Started", "UnstructuredCommandLine", "StructuredCommandLine", "WorkspaceStatus", "OptionsParsed", "Fetch", "Configuration", "TargetConfigured", "Pattern", "PatternSkipped", "NamedSet", "TargetCompleted", "ActionCompleted", "UnconfiguredLabel", "ConfiguredLabel", "TestResult", "TestSummary", "TargetSummary", "BuildFinished", "BuildToolLogs", "BuildMetrics", "Workspace", "BuildMetadata", "ConvenienceSymlinksIdentified", "Id", });
    internal_static_build_event_stream_BuildEventId_UnknownBuildEventId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(0);
    internal_static_build_event_stream_BuildEventId_UnknownBuildEventId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_UnknownBuildEventId_descriptor,
        new java.lang.String[] { "Details", });
    internal_static_build_event_stream_BuildEventId_ProgressId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(1);
    internal_static_build_event_stream_BuildEventId_ProgressId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_ProgressId_descriptor,
        new java.lang.String[] { "OpaqueCount", });
    internal_static_build_event_stream_BuildEventId_BuildStartedId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(2);
    internal_static_build_event_stream_BuildEventId_BuildStartedId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_BuildStartedId_descriptor,
        new java.lang.String[] { });
    internal_static_build_event_stream_BuildEventId_UnstructuredCommandLineId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(3);
    internal_static_build_event_stream_BuildEventId_UnstructuredCommandLineId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_UnstructuredCommandLineId_descriptor,
        new java.lang.String[] { });
    internal_static_build_event_stream_BuildEventId_StructuredCommandLineId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(4);
    internal_static_build_event_stream_BuildEventId_StructuredCommandLineId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_StructuredCommandLineId_descriptor,
        new java.lang.String[] { "CommandLineLabel", });
    internal_static_build_event_stream_BuildEventId_WorkspaceStatusId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(5);
    internal_static_build_event_stream_BuildEventId_WorkspaceStatusId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_WorkspaceStatusId_descriptor,
        new java.lang.String[] { });
    internal_static_build_event_stream_BuildEventId_OptionsParsedId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(6);
    internal_static_build_event_stream_BuildEventId_OptionsParsedId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_OptionsParsedId_descriptor,
        new java.lang.String[] { });
    internal_static_build_event_stream_BuildEventId_FetchId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(7);
    internal_static_build_event_stream_BuildEventId_FetchId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_FetchId_descriptor,
        new java.lang.String[] { "Url", });
    internal_static_build_event_stream_BuildEventId_PatternExpandedId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(8);
    internal_static_build_event_stream_BuildEventId_PatternExpandedId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_PatternExpandedId_descriptor,
        new java.lang.String[] { "Pattern", });
    internal_static_build_event_stream_BuildEventId_WorkspaceConfigId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(9);
    internal_static_build_event_stream_BuildEventId_WorkspaceConfigId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_WorkspaceConfigId_descriptor,
        new java.lang.String[] { });
    internal_static_build_event_stream_BuildEventId_BuildMetadataId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(10);
    internal_static_build_event_stream_BuildEventId_BuildMetadataId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_BuildMetadataId_descriptor,
        new java.lang.String[] { });
    internal_static_build_event_stream_BuildEventId_TargetConfiguredId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(11);
    internal_static_build_event_stream_BuildEventId_TargetConfiguredId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_TargetConfiguredId_descriptor,
        new java.lang.String[] { "Label", "Aspect", });
    internal_static_build_event_stream_BuildEventId_NamedSetOfFilesId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(12);
    internal_static_build_event_stream_BuildEventId_NamedSetOfFilesId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_NamedSetOfFilesId_descriptor,
        new java.lang.String[] { "Id", });
    internal_static_build_event_stream_BuildEventId_ConfigurationId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(13);
    internal_static_build_event_stream_BuildEventId_ConfigurationId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_ConfigurationId_descriptor,
        new java.lang.String[] { "Id", });
    internal_static_build_event_stream_BuildEventId_TargetCompletedId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(14);
    internal_static_build_event_stream_BuildEventId_TargetCompletedId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_TargetCompletedId_descriptor,
        new java.lang.String[] { "Label", "Configuration", "Aspect", });
    internal_static_build_event_stream_BuildEventId_ActionCompletedId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(15);
    internal_static_build_event_stream_BuildEventId_ActionCompletedId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_ActionCompletedId_descriptor,
        new java.lang.String[] { "PrimaryOutput", "Label", "Configuration", });
    internal_static_build_event_stream_BuildEventId_UnconfiguredLabelId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(16);
    internal_static_build_event_stream_BuildEventId_UnconfiguredLabelId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_UnconfiguredLabelId_descriptor,
        new java.lang.String[] { "Label", });
    internal_static_build_event_stream_BuildEventId_ConfiguredLabelId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(17);
    internal_static_build_event_stream_BuildEventId_ConfiguredLabelId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_ConfiguredLabelId_descriptor,
        new java.lang.String[] { "Label", "Configuration", });
    internal_static_build_event_stream_BuildEventId_TestResultId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(18);
    internal_static_build_event_stream_BuildEventId_TestResultId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_TestResultId_descriptor,
        new java.lang.String[] { "Label", "Configuration", "Run", "Shard", "Attempt", });
    internal_static_build_event_stream_BuildEventId_TestSummaryId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(19);
    internal_static_build_event_stream_BuildEventId_TestSummaryId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_TestSummaryId_descriptor,
        new java.lang.String[] { "Label", "Configuration", });
    internal_static_build_event_stream_BuildEventId_TargetSummaryId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(20);
    internal_static_build_event_stream_BuildEventId_TargetSummaryId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_TargetSummaryId_descriptor,
        new java.lang.String[] { "Label", "Configuration", });
    internal_static_build_event_stream_BuildEventId_BuildFinishedId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(21);
    internal_static_build_event_stream_BuildEventId_BuildFinishedId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_BuildFinishedId_descriptor,
        new java.lang.String[] { });
    internal_static_build_event_stream_BuildEventId_BuildToolLogsId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(22);
    internal_static_build_event_stream_BuildEventId_BuildToolLogsId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_BuildToolLogsId_descriptor,
        new java.lang.String[] { });
    internal_static_build_event_stream_BuildEventId_BuildMetricsId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(23);
    internal_static_build_event_stream_BuildEventId_BuildMetricsId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_BuildMetricsId_descriptor,
        new java.lang.String[] { });
    internal_static_build_event_stream_BuildEventId_ConvenienceSymlinksIdentifiedId_descriptor =
      internal_static_build_event_stream_BuildEventId_descriptor.getNestedTypes().get(24);
    internal_static_build_event_stream_BuildEventId_ConvenienceSymlinksIdentifiedId_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEventId_ConvenienceSymlinksIdentifiedId_descriptor,
        new java.lang.String[] { });
    internal_static_build_event_stream_Progress_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_build_event_stream_Progress_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_Progress_descriptor,
        new java.lang.String[] { "Stdout", "Stderr", });
    internal_static_build_event_stream_Aborted_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_build_event_stream_Aborted_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_Aborted_descriptor,
        new java.lang.String[] { "Reason", "Description", });
    internal_static_build_event_stream_BuildStarted_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_build_event_stream_BuildStarted_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildStarted_descriptor,
        new java.lang.String[] { "Uuid", "StartTimeMillis", "StartTime", "BuildToolVersion", "OptionsDescription", "Command", "WorkingDirectory", "WorkspaceDirectory", "ServerPid", });
    internal_static_build_event_stream_WorkspaceConfig_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_build_event_stream_WorkspaceConfig_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_WorkspaceConfig_descriptor,
        new java.lang.String[] { "LocalExecRoot", });
    internal_static_build_event_stream_UnstructuredCommandLine_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_build_event_stream_UnstructuredCommandLine_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_UnstructuredCommandLine_descriptor,
        new java.lang.String[] { "Args", });
    internal_static_build_event_stream_OptionsParsed_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_build_event_stream_OptionsParsed_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_OptionsParsed_descriptor,
        new java.lang.String[] { "StartupOptions", "ExplicitStartupOptions", "CmdLine", "ExplicitCmdLine", "InvocationPolicy", "ToolTag", });
    internal_static_build_event_stream_Fetch_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_build_event_stream_Fetch_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_Fetch_descriptor,
        new java.lang.String[] { "Success", });
    internal_static_build_event_stream_WorkspaceStatus_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_build_event_stream_WorkspaceStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_WorkspaceStatus_descriptor,
        new java.lang.String[] { "Item", });
    internal_static_build_event_stream_WorkspaceStatus_Item_descriptor =
      internal_static_build_event_stream_WorkspaceStatus_descriptor.getNestedTypes().get(0);
    internal_static_build_event_stream_WorkspaceStatus_Item_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_WorkspaceStatus_Item_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_build_event_stream_BuildMetadata_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_build_event_stream_BuildMetadata_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildMetadata_descriptor,
        new java.lang.String[] { "Metadata", });
    internal_static_build_event_stream_BuildMetadata_MetadataEntry_descriptor =
      internal_static_build_event_stream_BuildMetadata_descriptor.getNestedTypes().get(0);
    internal_static_build_event_stream_BuildMetadata_MetadataEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildMetadata_MetadataEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_build_event_stream_Configuration_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_build_event_stream_Configuration_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_Configuration_descriptor,
        new java.lang.String[] { "Mnemonic", "PlatformName", "Cpu", "MakeVariable", "IsTool", });
    internal_static_build_event_stream_Configuration_MakeVariableEntry_descriptor =
      internal_static_build_event_stream_Configuration_descriptor.getNestedTypes().get(0);
    internal_static_build_event_stream_Configuration_MakeVariableEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_Configuration_MakeVariableEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_build_event_stream_PatternExpanded_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_build_event_stream_PatternExpanded_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_PatternExpanded_descriptor,
        new java.lang.String[] { "TestSuiteExpansions", });
    internal_static_build_event_stream_PatternExpanded_TestSuiteExpansion_descriptor =
      internal_static_build_event_stream_PatternExpanded_descriptor.getNestedTypes().get(0);
    internal_static_build_event_stream_PatternExpanded_TestSuiteExpansion_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_PatternExpanded_TestSuiteExpansion_descriptor,
        new java.lang.String[] { "SuiteLabel", "TestLabels", });
    internal_static_build_event_stream_TargetConfigured_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_build_event_stream_TargetConfigured_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_TargetConfigured_descriptor,
        new java.lang.String[] { "TargetKind", "TestSize", "Tag", });
    internal_static_build_event_stream_File_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_build_event_stream_File_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_File_descriptor,
        new java.lang.String[] { "PathPrefix", "Name", "Uri", "Contents", "Digest", "Length", "File", });
    internal_static_build_event_stream_NamedSetOfFiles_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_build_event_stream_NamedSetOfFiles_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_NamedSetOfFiles_descriptor,
        new java.lang.String[] { "Files", "FileSets", });
    internal_static_build_event_stream_ActionExecuted_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_build_event_stream_ActionExecuted_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_ActionExecuted_descriptor,
        new java.lang.String[] { "Success", "Type", "ExitCode", "Stdout", "Stderr", "Label", "Configuration", "PrimaryOutput", "CommandLine", "ActionMetadataLogs", "FailureDetail", });
    internal_static_build_event_stream_OutputGroup_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_build_event_stream_OutputGroup_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_OutputGroup_descriptor,
        new java.lang.String[] { "Name", "FileSets", "Incomplete", });
    internal_static_build_event_stream_TargetComplete_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_build_event_stream_TargetComplete_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_TargetComplete_descriptor,
        new java.lang.String[] { "Success", "TargetKind", "TestSize", "OutputGroup", "ImportantOutput", "DirectoryOutput", "Tag", "TestTimeoutSeconds", "TestTimeout", "FailureDetail", });
    internal_static_build_event_stream_TestResult_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_build_event_stream_TestResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_TestResult_descriptor,
        new java.lang.String[] { "Status", "StatusDetails", "CachedLocally", "TestAttemptStartMillisEpoch", "TestAttemptStart", "TestAttemptDurationMillis", "TestAttemptDuration", "TestActionOutput", "Warning", "ExecutionInfo", });
    internal_static_build_event_stream_TestResult_ExecutionInfo_descriptor =
      internal_static_build_event_stream_TestResult_descriptor.getNestedTypes().get(0);
    internal_static_build_event_stream_TestResult_ExecutionInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_TestResult_ExecutionInfo_descriptor,
        new java.lang.String[] { "TimeoutSeconds", "Strategy", "CachedRemotely", "ExitCode", "Hostname", "TimingBreakdown", "ResourceUsage", });
    internal_static_build_event_stream_TestResult_ExecutionInfo_TimingBreakdown_descriptor =
      internal_static_build_event_stream_TestResult_ExecutionInfo_descriptor.getNestedTypes().get(0);
    internal_static_build_event_stream_TestResult_ExecutionInfo_TimingBreakdown_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_TestResult_ExecutionInfo_TimingBreakdown_descriptor,
        new java.lang.String[] { "Child", "Name", "TimeMillis", "Time", });
    internal_static_build_event_stream_TestResult_ExecutionInfo_ResourceUsage_descriptor =
      internal_static_build_event_stream_TestResult_ExecutionInfo_descriptor.getNestedTypes().get(1);
    internal_static_build_event_stream_TestResult_ExecutionInfo_ResourceUsage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_TestResult_ExecutionInfo_ResourceUsage_descriptor,
        new java.lang.String[] { "Name", "Value", });
    internal_static_build_event_stream_TestSummary_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_build_event_stream_TestSummary_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_TestSummary_descriptor,
        new java.lang.String[] { "OverallStatus", "TotalRunCount", "RunCount", "AttemptCount", "ShardCount", "Passed", "Failed", "TotalNumCached", "FirstStartTimeMillis", "FirstStartTime", "LastStopTimeMillis", "LastStopTime", "TotalRunDurationMillis", "TotalRunDuration", });
    internal_static_build_event_stream_TargetSummary_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_build_event_stream_TargetSummary_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_TargetSummary_descriptor,
        new java.lang.String[] { "OverallBuildSuccess", "OverallTestStatus", });
    internal_static_build_event_stream_BuildFinished_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_build_event_stream_BuildFinished_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildFinished_descriptor,
        new java.lang.String[] { "OverallSuccess", "ExitCode", "FinishTimeMillis", "FinishTime", "AnomalyReport", });
    internal_static_build_event_stream_BuildFinished_ExitCode_descriptor =
      internal_static_build_event_stream_BuildFinished_descriptor.getNestedTypes().get(0);
    internal_static_build_event_stream_BuildFinished_ExitCode_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildFinished_ExitCode_descriptor,
        new java.lang.String[] { "Name", "Code", });
    internal_static_build_event_stream_BuildFinished_AnomalyReport_descriptor =
      internal_static_build_event_stream_BuildFinished_descriptor.getNestedTypes().get(1);
    internal_static_build_event_stream_BuildFinished_AnomalyReport_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildFinished_AnomalyReport_descriptor,
        new java.lang.String[] { "WasSuspended", });
    internal_static_build_event_stream_BuildMetrics_descriptor =
      getDescriptor().getMessageTypes().get(22);
    internal_static_build_event_stream_BuildMetrics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildMetrics_descriptor,
        new java.lang.String[] { "ActionSummary", "MemoryMetrics", "TargetMetrics", "PackageMetrics", "TimingMetrics", "CumulativeMetrics", "ArtifactMetrics", "BuildGraphMetrics", "WorkerMetrics", "NetworkMetrics", });
    internal_static_build_event_stream_BuildMetrics_ActionSummary_descriptor =
      internal_static_build_event_stream_BuildMetrics_descriptor.getNestedTypes().get(0);
    internal_static_build_event_stream_BuildMetrics_ActionSummary_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildMetrics_ActionSummary_descriptor,
        new java.lang.String[] { "ActionsCreated", "ActionsCreatedNotIncludingAspects", "ActionsExecuted", "ActionData", "RemoteCacheHits", "RunnerCount", });
    internal_static_build_event_stream_BuildMetrics_ActionSummary_ActionData_descriptor =
      internal_static_build_event_stream_BuildMetrics_ActionSummary_descriptor.getNestedTypes().get(0);
    internal_static_build_event_stream_BuildMetrics_ActionSummary_ActionData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildMetrics_ActionSummary_ActionData_descriptor,
        new java.lang.String[] { "Mnemonic", "ActionsExecuted", "FirstStartedMs", "LastEndedMs", });
    internal_static_build_event_stream_BuildMetrics_ActionSummary_RunnerCount_descriptor =
      internal_static_build_event_stream_BuildMetrics_ActionSummary_descriptor.getNestedTypes().get(1);
    internal_static_build_event_stream_BuildMetrics_ActionSummary_RunnerCount_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildMetrics_ActionSummary_RunnerCount_descriptor,
        new java.lang.String[] { "Name", "Count", });
    internal_static_build_event_stream_BuildMetrics_MemoryMetrics_descriptor =
      internal_static_build_event_stream_BuildMetrics_descriptor.getNestedTypes().get(1);
    internal_static_build_event_stream_BuildMetrics_MemoryMetrics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildMetrics_MemoryMetrics_descriptor,
        new java.lang.String[] { "UsedHeapSizePostBuild", "PeakPostGcHeapSize", "PeakPostGcTenuredSpaceHeapSize", "GarbageMetrics", });
    internal_static_build_event_stream_BuildMetrics_MemoryMetrics_GarbageMetrics_descriptor =
      internal_static_build_event_stream_BuildMetrics_MemoryMetrics_descriptor.getNestedTypes().get(0);
    internal_static_build_event_stream_BuildMetrics_MemoryMetrics_GarbageMetrics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildMetrics_MemoryMetrics_GarbageMetrics_descriptor,
        new java.lang.String[] { "Type", "GarbageCollected", });
    internal_static_build_event_stream_BuildMetrics_TargetMetrics_descriptor =
      internal_static_build_event_stream_BuildMetrics_descriptor.getNestedTypes().get(2);
    internal_static_build_event_stream_BuildMetrics_TargetMetrics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildMetrics_TargetMetrics_descriptor,
        new java.lang.String[] { "TargetsLoaded", "TargetsConfigured", "TargetsConfiguredNotIncludingAspects", });
    internal_static_build_event_stream_BuildMetrics_PackageMetrics_descriptor =
      internal_static_build_event_stream_BuildMetrics_descriptor.getNestedTypes().get(3);
    internal_static_build_event_stream_BuildMetrics_PackageMetrics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildMetrics_PackageMetrics_descriptor,
        new java.lang.String[] { "PackagesLoaded", });
    internal_static_build_event_stream_BuildMetrics_TimingMetrics_descriptor =
      internal_static_build_event_stream_BuildMetrics_descriptor.getNestedTypes().get(4);
    internal_static_build_event_stream_BuildMetrics_TimingMetrics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildMetrics_TimingMetrics_descriptor,
        new java.lang.String[] { "CpuTimeInMs", "WallTimeInMs", "AnalysisPhaseTimeInMs", });
    internal_static_build_event_stream_BuildMetrics_CumulativeMetrics_descriptor =
      internal_static_build_event_stream_BuildMetrics_descriptor.getNestedTypes().get(5);
    internal_static_build_event_stream_BuildMetrics_CumulativeMetrics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildMetrics_CumulativeMetrics_descriptor,
        new java.lang.String[] { "NumAnalyses", "NumBuilds", });
    internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_descriptor =
      internal_static_build_event_stream_BuildMetrics_descriptor.getNestedTypes().get(6);
    internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_descriptor,
        new java.lang.String[] { "SourceArtifactsRead", "OutputArtifactsSeen", "OutputArtifactsFromActionCache", "TopLevelArtifacts", });
    internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_FilesMetric_descriptor =
      internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_descriptor.getNestedTypes().get(0);
    internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_FilesMetric_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildMetrics_ArtifactMetrics_FilesMetric_descriptor,
        new java.lang.String[] { "SizeInBytes", "Count", });
    internal_static_build_event_stream_BuildMetrics_BuildGraphMetrics_descriptor =
      internal_static_build_event_stream_BuildMetrics_descriptor.getNestedTypes().get(7);
    internal_static_build_event_stream_BuildMetrics_BuildGraphMetrics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildMetrics_BuildGraphMetrics_descriptor,
        new java.lang.String[] { "ActionLookupValueCount", "ActionLookupValueCountNotIncludingAspects", "ActionCount", "ActionCountNotIncludingAspects", "InputFileConfiguredTargetCount", "OutputFileConfiguredTargetCount", "OtherConfiguredTargetCount", "OutputArtifactCount", "PostInvocationSkyframeNodeCount", });
    internal_static_build_event_stream_BuildMetrics_WorkerMetrics_descriptor =
      internal_static_build_event_stream_BuildMetrics_descriptor.getNestedTypes().get(8);
    internal_static_build_event_stream_BuildMetrics_WorkerMetrics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildMetrics_WorkerMetrics_descriptor,
        new java.lang.String[] { "WorkerId", "WorkerIds", "ProcessId", "Mnemonic", "IsMultiplex", "IsSandbox", "IsMeasurable", "WorkerStats", });
    internal_static_build_event_stream_BuildMetrics_WorkerMetrics_WorkerStats_descriptor =
      internal_static_build_event_stream_BuildMetrics_WorkerMetrics_descriptor.getNestedTypes().get(0);
    internal_static_build_event_stream_BuildMetrics_WorkerMetrics_WorkerStats_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildMetrics_WorkerMetrics_WorkerStats_descriptor,
        new java.lang.String[] { "CollectTimeInMs", "WorkerMemoryInKb", "LastActionStartTimeInMs", });
    internal_static_build_event_stream_BuildMetrics_NetworkMetrics_descriptor =
      internal_static_build_event_stream_BuildMetrics_descriptor.getNestedTypes().get(9);
    internal_static_build_event_stream_BuildMetrics_NetworkMetrics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildMetrics_NetworkMetrics_descriptor,
        new java.lang.String[] { "SystemNetworkStats", });
    internal_static_build_event_stream_BuildMetrics_NetworkMetrics_SystemNetworkStats_descriptor =
      internal_static_build_event_stream_BuildMetrics_NetworkMetrics_descriptor.getNestedTypes().get(0);
    internal_static_build_event_stream_BuildMetrics_NetworkMetrics_SystemNetworkStats_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildMetrics_NetworkMetrics_SystemNetworkStats_descriptor,
        new java.lang.String[] { "BytesSent", "BytesRecv", "PacketsSent", "PacketsRecv", "PeakBytesSentPerSec", "PeakBytesRecvPerSec", "PeakPacketsSentPerSec", "PeakPacketsRecvPerSec", });
    internal_static_build_event_stream_BuildToolLogs_descriptor =
      getDescriptor().getMessageTypes().get(23);
    internal_static_build_event_stream_BuildToolLogs_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildToolLogs_descriptor,
        new java.lang.String[] { "Log", });
    internal_static_build_event_stream_ConvenienceSymlinksIdentified_descriptor =
      getDescriptor().getMessageTypes().get(24);
    internal_static_build_event_stream_ConvenienceSymlinksIdentified_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_ConvenienceSymlinksIdentified_descriptor,
        new java.lang.String[] { "ConvenienceSymlinks", });
    internal_static_build_event_stream_ConvenienceSymlink_descriptor =
      getDescriptor().getMessageTypes().get(25);
    internal_static_build_event_stream_ConvenienceSymlink_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_ConvenienceSymlink_descriptor,
        new java.lang.String[] { "Path", "Action", "Target", });
    internal_static_build_event_stream_BuildEvent_descriptor =
      getDescriptor().getMessageTypes().get(26);
    internal_static_build_event_stream_BuildEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_event_stream_BuildEvent_descriptor,
        new java.lang.String[] { "Id", "Children", "LastMessage", "Progress", "Aborted", "Started", "UnstructuredCommandLine", "StructuredCommandLine", "OptionsParsed", "WorkspaceStatus", "Fetch", "Configuration", "Expanded", "Configured", "Action", "NamedSetOfFiles", "Completed", "TestResult", "TestSummary", "TargetSummary", "Finished", "BuildToolLogs", "BuildMetrics", "WorkspaceInfo", "BuildMetadata", "ConvenienceSymlinksIdentified", "Payload", });
    com.google.protobuf.DurationProto.getDescriptor();
    com.google.protobuf.TimestampProto.getDescriptor();
    com.google.devtools.build.lib.runtime.proto.CommandLineOuterClass.getDescriptor();
    com.google.devtools.build.lib.server.FailureDetails.getDescriptor();
    com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
