// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: src/main/java/com/google/devtools/build/lib/bazel/debug/workspace_log.proto

package com.google.devtools.build.lib.bazel.debug.proto;

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

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

    /**
     * <pre>
     * Command line arguments, with the first one being the command to execute.
     * </pre>
     *
     * <code>repeated string arguments = 2;</code>
     */
    java.util.List<java.lang.String>
        getArgumentsList();
    /**
     * <pre>
     * Command line arguments, with the first one being the command to execute.
     * </pre>
     *
     * <code>repeated string arguments = 2;</code>
     */
    int getArgumentsCount();
    /**
     * <pre>
     * Command line arguments, with the first one being the command to execute.
     * </pre>
     *
     * <code>repeated string arguments = 2;</code>
     */
    java.lang.String getArguments(int index);
    /**
     * <pre>
     * Command line arguments, with the first one being the command to execute.
     * </pre>
     *
     * <code>repeated string arguments = 2;</code>
     */
    com.google.protobuf.ByteString
        getArgumentsBytes(int index);

    /**
     * <pre>
     * Timeout used for the command
     * </pre>
     *
     * <code>int32 timeout_seconds = 3;</code>
     */
    int getTimeoutSeconds();

    /**
     * <pre>
     * Environment variables set for the execution. Note that this includes
     * variables specified by the user (as an input to Execute command),
     * as well as variables set indirectly through the rule environment
     * </pre>
     *
     * <code>map&lt;string, string&gt; environment = 4;</code>
     */
    int getEnvironmentCount();
    /**
     * <pre>
     * Environment variables set for the execution. Note that this includes
     * variables specified by the user (as an input to Execute command),
     * as well as variables set indirectly through the rule environment
     * </pre>
     *
     * <code>map&lt;string, string&gt; environment = 4;</code>
     */
    boolean containsEnvironment(
        java.lang.String key);
    /**
     * Use {@link #getEnvironmentMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getEnvironment();
    /**
     * <pre>
     * Environment variables set for the execution. Note that this includes
     * variables specified by the user (as an input to Execute command),
     * as well as variables set indirectly through the rule environment
     * </pre>
     *
     * <code>map&lt;string, string&gt; environment = 4;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getEnvironmentMap();
    /**
     * <pre>
     * Environment variables set for the execution. Note that this includes
     * variables specified by the user (as an input to Execute command),
     * as well as variables set indirectly through the rule environment
     * </pre>
     *
     * <code>map&lt;string, string&gt; environment = 4;</code>
     */

    java.lang.String getEnvironmentOrDefault(
        java.lang.String key,
        java.lang.String defaultValue);
    /**
     * <pre>
     * Environment variables set for the execution. Note that this includes
     * variables specified by the user (as an input to Execute command),
     * as well as variables set indirectly through the rule environment
     * </pre>
     *
     * <code>map&lt;string, string&gt; environment = 4;</code>
     */

    java.lang.String getEnvironmentOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * True if quiet execution was requested.
     * </pre>
     *
     * <code>bool quiet = 5;</code>
     */
    boolean getQuiet();

    /**
     * <pre>
     * Directory that would contain the output of the command.
     * </pre>
     *
     * <code>string output_directory = 6;</code>
     */
    java.lang.String getOutputDirectory();
    /**
     * <pre>
     * Directory that would contain the output of the command.
     * </pre>
     *
     * <code>string output_directory = 6;</code>
     */
    com.google.protobuf.ByteString
        getOutputDirectoryBytes();
  }
  /**
   * <pre>
   * Information on "Execute" event in repository_ctx.
   * </pre>
   *
   * Protobuf type {@code workspace_log.ExecuteEvent}
   */
  public  static final class ExecuteEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:workspace_log.ExecuteEvent)
      ExecuteEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ExecuteEvent.newBuilder() to construct.
    private ExecuteEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ExecuteEvent() {
      arguments_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      timeoutSeconds_ = 0;
      quiet_ = false;
      outputDirectory_ = "";
    }

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

              timeoutSeconds_ = input.readInt32();
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                environment_ = com.google.protobuf.MapField.newMapField(
                    EnvironmentDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000004;
              }
              com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
              environment__ = input.readMessage(
                  EnvironmentDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              environment_.getMutableMap().put(
                  environment__.getKey(), environment__.getValue());
              break;
            }
            case 40: {

              quiet_ = input.readBool();
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              outputDirectory_ = s;
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          arguments_ = arguments_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_ExecuteEvent_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 4:
          return internalGetEnvironment();
        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.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_ExecuteEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.class, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.Builder.class);
    }

    private int bitField0_;
    public static final int ARGUMENTS_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList arguments_;
    /**
     * <pre>
     * Command line arguments, with the first one being the command to execute.
     * </pre>
     *
     * <code>repeated string arguments = 2;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getArgumentsList() {
      return arguments_;
    }
    /**
     * <pre>
     * Command line arguments, with the first one being the command to execute.
     * </pre>
     *
     * <code>repeated string arguments = 2;</code>
     */
    public int getArgumentsCount() {
      return arguments_.size();
    }
    /**
     * <pre>
     * Command line arguments, with the first one being the command to execute.
     * </pre>
     *
     * <code>repeated string arguments = 2;</code>
     */
    public java.lang.String getArguments(int index) {
      return arguments_.get(index);
    }
    /**
     * <pre>
     * Command line arguments, with the first one being the command to execute.
     * </pre>
     *
     * <code>repeated string arguments = 2;</code>
     */
    public com.google.protobuf.ByteString
        getArgumentsBytes(int index) {
      return arguments_.getByteString(index);
    }

    public static final int TIMEOUT_SECONDS_FIELD_NUMBER = 3;
    private int timeoutSeconds_;
    /**
     * <pre>
     * Timeout used for the command
     * </pre>
     *
     * <code>int32 timeout_seconds = 3;</code>
     */
    public int getTimeoutSeconds() {
      return timeoutSeconds_;
    }

    public static final int ENVIRONMENT_FIELD_NUMBER = 4;
    private static final class EnvironmentDefaultEntryHolder {
      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.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_ExecuteEvent_EnvironmentEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> environment_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetEnvironment() {
      if (environment_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            EnvironmentDefaultEntryHolder.defaultEntry);
      }
      return environment_;
    }

    public int getEnvironmentCount() {
      return internalGetEnvironment().getMap().size();
    }
    /**
     * <pre>
     * Environment variables set for the execution. Note that this includes
     * variables specified by the user (as an input to Execute command),
     * as well as variables set indirectly through the rule environment
     * </pre>
     *
     * <code>map&lt;string, string&gt; environment = 4;</code>
     */

    public boolean containsEnvironment(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      return internalGetEnvironment().getMap().containsKey(key);
    }
    /**
     * Use {@link #getEnvironmentMap()} instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getEnvironment() {
      return getEnvironmentMap();
    }
    /**
     * <pre>
     * Environment variables set for the execution. Note that this includes
     * variables specified by the user (as an input to Execute command),
     * as well as variables set indirectly through the rule environment
     * </pre>
     *
     * <code>map&lt;string, string&gt; environment = 4;</code>
     */

    public java.util.Map<java.lang.String, java.lang.String> getEnvironmentMap() {
      return internalGetEnvironment().getMap();
    }
    /**
     * <pre>
     * Environment variables set for the execution. Note that this includes
     * variables specified by the user (as an input to Execute command),
     * as well as variables set indirectly through the rule environment
     * </pre>
     *
     * <code>map&lt;string, string&gt; environment = 4;</code>
     */

    public java.lang.String getEnvironmentOrDefault(
        java.lang.String key,
        java.lang.String defaultValue) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetEnvironment().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Environment variables set for the execution. Note that this includes
     * variables specified by the user (as an input to Execute command),
     * as well as variables set indirectly through the rule environment
     * </pre>
     *
     * <code>map&lt;string, string&gt; environment = 4;</code>
     */

    public java.lang.String getEnvironmentOrThrow(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetEnvironment().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int QUIET_FIELD_NUMBER = 5;
    private boolean quiet_;
    /**
     * <pre>
     * True if quiet execution was requested.
     * </pre>
     *
     * <code>bool quiet = 5;</code>
     */
    public boolean getQuiet() {
      return quiet_;
    }

    public static final int OUTPUT_DIRECTORY_FIELD_NUMBER = 6;
    private volatile java.lang.Object outputDirectory_;
    /**
     * <pre>
     * Directory that would contain the output of the command.
     * </pre>
     *
     * <code>string output_directory = 6;</code>
     */
    public java.lang.String getOutputDirectory() {
      java.lang.Object ref = outputDirectory_;
      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();
        outputDirectory_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Directory that would contain the output of the command.
     * </pre>
     *
     * <code>string output_directory = 6;</code>
     */
    public com.google.protobuf.ByteString
        getOutputDirectoryBytes() {
      java.lang.Object ref = outputDirectory_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        outputDirectory_ = 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 < arguments_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, arguments_.getRaw(i));
      }
      if (timeoutSeconds_ != 0) {
        output.writeInt32(3, timeoutSeconds_);
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetEnvironment(),
          EnvironmentDefaultEntryHolder.defaultEntry,
          4);
      if (quiet_ != false) {
        output.writeBool(5, quiet_);
      }
      if (!getOutputDirectoryBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, outputDirectory_);
      }
      unknownFields.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 < arguments_.size(); i++) {
          dataSize += computeStringSizeNoTag(arguments_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getArgumentsList().size();
      }
      if (timeoutSeconds_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, timeoutSeconds_);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetEnvironment().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        environment__ = EnvironmentDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, environment__);
      }
      if (quiet_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, quiet_);
      }
      if (!getOutputDirectoryBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, outputDirectory_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent other = (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent) obj;

      boolean result = true;
      result = result && getArgumentsList()
          .equals(other.getArgumentsList());
      result = result && (getTimeoutSeconds()
          == other.getTimeoutSeconds());
      result = result && internalGetEnvironment().equals(
          other.internalGetEnvironment());
      result = result && (getQuiet()
          == other.getQuiet());
      result = result && getOutputDirectory()
          .equals(other.getOutputDirectory());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getArgumentsCount() > 0) {
        hash = (37 * hash) + ARGUMENTS_FIELD_NUMBER;
        hash = (53 * hash) + getArgumentsList().hashCode();
      }
      hash = (37 * hash) + TIMEOUT_SECONDS_FIELD_NUMBER;
      hash = (53 * hash) + getTimeoutSeconds();
      if (!internalGetEnvironment().getMap().isEmpty()) {
        hash = (37 * hash) + ENVIRONMENT_FIELD_NUMBER;
        hash = (53 * hash) + internalGetEnvironment().hashCode();
      }
      hash = (37 * hash) + QUIET_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getQuiet());
      hash = (37 * hash) + OUTPUT_DIRECTORY_FIELD_NUMBER;
      hash = (53 * hash) + getOutputDirectory().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent 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.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent 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.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent 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.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent 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.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent 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.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent 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.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent 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.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent 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 on "Execute" event in repository_ctx.
     * </pre>
     *
     * Protobuf type {@code workspace_log.ExecuteEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:workspace_log.ExecuteEvent)
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_ExecuteEvent_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 4:
            return internalGetEnvironment();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 4:
            return internalGetMutableEnvironment();
          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.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_ExecuteEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.class, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        arguments_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        timeoutSeconds_ = 0;

        internalGetMutableEnvironment().clear();
        quiet_ = false;

        outputDirectory_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_ExecuteEvent_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent getDefaultInstanceForType() {
        return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent build() {
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent buildPartial() {
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent result = new com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          arguments_ = arguments_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.arguments_ = arguments_;
        result.timeoutSeconds_ = timeoutSeconds_;
        result.environment_ = internalGetEnvironment();
        result.environment_.makeImmutable();
        result.quiet_ = quiet_;
        result.outputDirectory_ = outputDirectory_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent other) {
        if (other == com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.getDefaultInstance()) return this;
        if (!other.arguments_.isEmpty()) {
          if (arguments_.isEmpty()) {
            arguments_ = other.arguments_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureArgumentsIsMutable();
            arguments_.addAll(other.arguments_);
          }
          onChanged();
        }
        if (other.getTimeoutSeconds() != 0) {
          setTimeoutSeconds(other.getTimeoutSeconds());
        }
        internalGetMutableEnvironment().mergeFrom(
            other.internalGetEnvironment());
        if (other.getQuiet() != false) {
          setQuiet(other.getQuiet());
        }
        if (!other.getOutputDirectory().isEmpty()) {
          outputDirectory_ = other.outputDirectory_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private com.google.protobuf.LazyStringList arguments_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureArgumentsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          arguments_ = new com.google.protobuf.LazyStringArrayList(arguments_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * Command line arguments, with the first one being the command to execute.
       * </pre>
       *
       * <code>repeated string arguments = 2;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getArgumentsList() {
        return arguments_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Command line arguments, with the first one being the command to execute.
       * </pre>
       *
       * <code>repeated string arguments = 2;</code>
       */
      public int getArgumentsCount() {
        return arguments_.size();
      }
      /**
       * <pre>
       * Command line arguments, with the first one being the command to execute.
       * </pre>
       *
       * <code>repeated string arguments = 2;</code>
       */
      public java.lang.String getArguments(int index) {
        return arguments_.get(index);
      }
      /**
       * <pre>
       * Command line arguments, with the first one being the command to execute.
       * </pre>
       *
       * <code>repeated string arguments = 2;</code>
       */
      public com.google.protobuf.ByteString
          getArgumentsBytes(int index) {
        return arguments_.getByteString(index);
      }
      /**
       * <pre>
       * Command line arguments, with the first one being the command to execute.
       * </pre>
       *
       * <code>repeated string arguments = 2;</code>
       */
      public Builder setArguments(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureArgumentsIsMutable();
        arguments_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Command line arguments, with the first one being the command to execute.
       * </pre>
       *
       * <code>repeated string arguments = 2;</code>
       */
      public Builder addArguments(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureArgumentsIsMutable();
        arguments_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Command line arguments, with the first one being the command to execute.
       * </pre>
       *
       * <code>repeated string arguments = 2;</code>
       */
      public Builder addAllArguments(
          java.lang.Iterable<java.lang.String> values) {
        ensureArgumentsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, arguments_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Command line arguments, with the first one being the command to execute.
       * </pre>
       *
       * <code>repeated string arguments = 2;</code>
       */
      public Builder clearArguments() {
        arguments_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Command line arguments, with the first one being the command to execute.
       * </pre>
       *
       * <code>repeated string arguments = 2;</code>
       */
      public Builder addArgumentsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureArgumentsIsMutable();
        arguments_.add(value);
        onChanged();
        return this;
      }

      private int timeoutSeconds_ ;
      /**
       * <pre>
       * Timeout used for the command
       * </pre>
       *
       * <code>int32 timeout_seconds = 3;</code>
       */
      public int getTimeoutSeconds() {
        return timeoutSeconds_;
      }
      /**
       * <pre>
       * Timeout used for the command
       * </pre>
       *
       * <code>int32 timeout_seconds = 3;</code>
       */
      public Builder setTimeoutSeconds(int value) {
        
        timeoutSeconds_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Timeout used for the command
       * </pre>
       *
       * <code>int32 timeout_seconds = 3;</code>
       */
      public Builder clearTimeoutSeconds() {
        
        timeoutSeconds_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> environment_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetEnvironment() {
        if (environment_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              EnvironmentDefaultEntryHolder.defaultEntry);
        }
        return environment_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetMutableEnvironment() {
        onChanged();;
        if (environment_ == null) {
          environment_ = com.google.protobuf.MapField.newMapField(
              EnvironmentDefaultEntryHolder.defaultEntry);
        }
        if (!environment_.isMutable()) {
          environment_ = environment_.copy();
        }
        return environment_;
      }

      public int getEnvironmentCount() {
        return internalGetEnvironment().getMap().size();
      }
      /**
       * <pre>
       * Environment variables set for the execution. Note that this includes
       * variables specified by the user (as an input to Execute command),
       * as well as variables set indirectly through the rule environment
       * </pre>
       *
       * <code>map&lt;string, string&gt; environment = 4;</code>
       */

      public boolean containsEnvironment(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        return internalGetEnvironment().getMap().containsKey(key);
      }
      /**
       * Use {@link #getEnvironmentMap()} instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getEnvironment() {
        return getEnvironmentMap();
      }
      /**
       * <pre>
       * Environment variables set for the execution. Note that this includes
       * variables specified by the user (as an input to Execute command),
       * as well as variables set indirectly through the rule environment
       * </pre>
       *
       * <code>map&lt;string, string&gt; environment = 4;</code>
       */

      public java.util.Map<java.lang.String, java.lang.String> getEnvironmentMap() {
        return internalGetEnvironment().getMap();
      }
      /**
       * <pre>
       * Environment variables set for the execution. Note that this includes
       * variables specified by the user (as an input to Execute command),
       * as well as variables set indirectly through the rule environment
       * </pre>
       *
       * <code>map&lt;string, string&gt; environment = 4;</code>
       */

      public java.lang.String getEnvironmentOrDefault(
          java.lang.String key,
          java.lang.String defaultValue) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetEnvironment().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * Environment variables set for the execution. Note that this includes
       * variables specified by the user (as an input to Execute command),
       * as well as variables set indirectly through the rule environment
       * </pre>
       *
       * <code>map&lt;string, string&gt; environment = 4;</code>
       */

      public java.lang.String getEnvironmentOrThrow(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetEnvironment().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearEnvironment() {
        internalGetMutableEnvironment().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * Environment variables set for the execution. Note that this includes
       * variables specified by the user (as an input to Execute command),
       * as well as variables set indirectly through the rule environment
       * </pre>
       *
       * <code>map&lt;string, string&gt; environment = 4;</code>
       */

      public Builder removeEnvironment(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableEnvironment().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
      getMutableEnvironment() {
        return internalGetMutableEnvironment().getMutableMap();
      }
      /**
       * <pre>
       * Environment variables set for the execution. Note that this includes
       * variables specified by the user (as an input to Execute command),
       * as well as variables set indirectly through the rule environment
       * </pre>
       *
       * <code>map&lt;string, string&gt; environment = 4;</code>
       */
      public Builder putEnvironment(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        if (value == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableEnvironment().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <pre>
       * Environment variables set for the execution. Note that this includes
       * variables specified by the user (as an input to Execute command),
       * as well as variables set indirectly through the rule environment
       * </pre>
       *
       * <code>map&lt;string, string&gt; environment = 4;</code>
       */

      public Builder putAllEnvironment(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableEnvironment().getMutableMap()
            .putAll(values);
        return this;
      }

      private boolean quiet_ ;
      /**
       * <pre>
       * True if quiet execution was requested.
       * </pre>
       *
       * <code>bool quiet = 5;</code>
       */
      public boolean getQuiet() {
        return quiet_;
      }
      /**
       * <pre>
       * True if quiet execution was requested.
       * </pre>
       *
       * <code>bool quiet = 5;</code>
       */
      public Builder setQuiet(boolean value) {
        
        quiet_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * True if quiet execution was requested.
       * </pre>
       *
       * <code>bool quiet = 5;</code>
       */
      public Builder clearQuiet() {
        
        quiet_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object outputDirectory_ = "";
      /**
       * <pre>
       * Directory that would contain the output of the command.
       * </pre>
       *
       * <code>string output_directory = 6;</code>
       */
      public java.lang.String getOutputDirectory() {
        java.lang.Object ref = outputDirectory_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          outputDirectory_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Directory that would contain the output of the command.
       * </pre>
       *
       * <code>string output_directory = 6;</code>
       */
      public com.google.protobuf.ByteString
          getOutputDirectoryBytes() {
        java.lang.Object ref = outputDirectory_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          outputDirectory_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Directory that would contain the output of the command.
       * </pre>
       *
       * <code>string output_directory = 6;</code>
       */
      public Builder setOutputDirectory(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        outputDirectory_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Directory that would contain the output of the command.
       * </pre>
       *
       * <code>string output_directory = 6;</code>
       */
      public Builder clearOutputDirectory() {
        
        outputDirectory_ = getDefaultInstance().getOutputDirectory();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Directory that would contain the output of the command.
       * </pre>
       *
       * <code>string output_directory = 6;</code>
       */
      public Builder setOutputDirectoryBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        outputDirectory_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:workspace_log.ExecuteEvent)
    }

    // @@protoc_insertion_point(class_scope:workspace_log.ExecuteEvent)
    private static final com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent();
    }

    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DownloadEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:workspace_log.DownloadEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Url to download from. If multiple, treated as mirrors
     * </pre>
     *
     * <code>repeated string url = 1;</code>
     */
    java.util.List<java.lang.String>
        getUrlList();
    /**
     * <pre>
     * Url to download from. If multiple, treated as mirrors
     * </pre>
     *
     * <code>repeated string url = 1;</code>
     */
    int getUrlCount();
    /**
     * <pre>
     * Url to download from. If multiple, treated as mirrors
     * </pre>
     *
     * <code>repeated string url = 1;</code>
     */
    java.lang.String getUrl(int index);
    /**
     * <pre>
     * Url to download from. If multiple, treated as mirrors
     * </pre>
     *
     * <code>repeated string url = 1;</code>
     */
    com.google.protobuf.ByteString
        getUrlBytes(int index);

    /**
     * <pre>
     * Output file
     * </pre>
     *
     * <code>string output = 2;</code>
     */
    java.lang.String getOutput();
    /**
     * <pre>
     * Output file
     * </pre>
     *
     * <code>string output = 2;</code>
     */
    com.google.protobuf.ByteString
        getOutputBytes();

    /**
     * <pre>
     * sha256, if speficied
     * </pre>
     *
     * <code>string sha256 = 3;</code>
     */
    java.lang.String getSha256();
    /**
     * <pre>
     * sha256, if speficied
     * </pre>
     *
     * <code>string sha256 = 3;</code>
     */
    com.google.protobuf.ByteString
        getSha256Bytes();

    /**
     * <pre>
     * whether to make the resulting file executable
     * </pre>
     *
     * <code>bool executable = 4;</code>
     */
    boolean getExecutable();
  }
  /**
   * <pre>
   * Information on "Download" event in repository_ctx.
   * </pre>
   *
   * Protobuf type {@code workspace_log.DownloadEvent}
   */
  public  static final class DownloadEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:workspace_log.DownloadEvent)
      DownloadEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DownloadEvent.newBuilder() to construct.
    private DownloadEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DownloadEvent() {
      url_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      output_ = "";
      sha256_ = "";
      executable_ = false;
    }

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

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

              sha256_ = s;
              break;
            }
            case 32: {

              executable_ = input.readBool();
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          url_ = url_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_DownloadEvent_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_DownloadEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.class, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.Builder.class);
    }

    private int bitField0_;
    public static final int URL_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList url_;
    /**
     * <pre>
     * Url to download from. If multiple, treated as mirrors
     * </pre>
     *
     * <code>repeated string url = 1;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getUrlList() {
      return url_;
    }
    /**
     * <pre>
     * Url to download from. If multiple, treated as mirrors
     * </pre>
     *
     * <code>repeated string url = 1;</code>
     */
    public int getUrlCount() {
      return url_.size();
    }
    /**
     * <pre>
     * Url to download from. If multiple, treated as mirrors
     * </pre>
     *
     * <code>repeated string url = 1;</code>
     */
    public java.lang.String getUrl(int index) {
      return url_.get(index);
    }
    /**
     * <pre>
     * Url to download from. If multiple, treated as mirrors
     * </pre>
     *
     * <code>repeated string url = 1;</code>
     */
    public com.google.protobuf.ByteString
        getUrlBytes(int index) {
      return url_.getByteString(index);
    }

    public static final int OUTPUT_FIELD_NUMBER = 2;
    private volatile java.lang.Object output_;
    /**
     * <pre>
     * Output file
     * </pre>
     *
     * <code>string output = 2;</code>
     */
    public java.lang.String getOutput() {
      java.lang.Object ref = output_;
      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();
        output_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Output file
     * </pre>
     *
     * <code>string output = 2;</code>
     */
    public com.google.protobuf.ByteString
        getOutputBytes() {
      java.lang.Object ref = output_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        output_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SHA256_FIELD_NUMBER = 3;
    private volatile java.lang.Object sha256_;
    /**
     * <pre>
     * sha256, if speficied
     * </pre>
     *
     * <code>string sha256 = 3;</code>
     */
    public java.lang.String getSha256() {
      java.lang.Object ref = sha256_;
      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();
        sha256_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * sha256, if speficied
     * </pre>
     *
     * <code>string sha256 = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSha256Bytes() {
      java.lang.Object ref = sha256_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sha256_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXECUTABLE_FIELD_NUMBER = 4;
    private boolean executable_;
    /**
     * <pre>
     * whether to make the resulting file executable
     * </pre>
     *
     * <code>bool executable = 4;</code>
     */
    public boolean getExecutable() {
      return executable_;
    }

    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 < url_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, url_.getRaw(i));
      }
      if (!getOutputBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, output_);
      }
      if (!getSha256Bytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, sha256_);
      }
      if (executable_ != false) {
        output.writeBool(4, executable_);
      }
      unknownFields.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 < url_.size(); i++) {
          dataSize += computeStringSizeNoTag(url_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getUrlList().size();
      }
      if (!getOutputBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, output_);
      }
      if (!getSha256Bytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, sha256_);
      }
      if (executable_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, executable_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent other = (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent) obj;

      boolean result = true;
      result = result && getUrlList()
          .equals(other.getUrlList());
      result = result && getOutput()
          .equals(other.getOutput());
      result = result && getSha256()
          .equals(other.getSha256());
      result = result && (getExecutable()
          == other.getExecutable());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getUrlCount() > 0) {
        hash = (37 * hash) + URL_FIELD_NUMBER;
        hash = (53 * hash) + getUrlList().hashCode();
      }
      hash = (37 * hash) + OUTPUT_FIELD_NUMBER;
      hash = (53 * hash) + getOutput().hashCode();
      hash = (37 * hash) + SHA256_FIELD_NUMBER;
      hash = (53 * hash) + getSha256().hashCode();
      hash = (37 * hash) + EXECUTABLE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getExecutable());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent 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.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent 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.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent 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.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent 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.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent 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.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent 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.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent 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.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent 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 on "Download" event in repository_ctx.
     * </pre>
     *
     * Protobuf type {@code workspace_log.DownloadEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:workspace_log.DownloadEvent)
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_DownloadEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_DownloadEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.class, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        url_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        output_ = "";

        sha256_ = "";

        executable_ = false;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_DownloadEvent_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent getDefaultInstanceForType() {
        return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent build() {
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent buildPartial() {
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent result = new com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          url_ = url_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.url_ = url_;
        result.output_ = output_;
        result.sha256_ = sha256_;
        result.executable_ = executable_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent other) {
        if (other == com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.getDefaultInstance()) return this;
        if (!other.url_.isEmpty()) {
          if (url_.isEmpty()) {
            url_ = other.url_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureUrlIsMutable();
            url_.addAll(other.url_);
          }
          onChanged();
        }
        if (!other.getOutput().isEmpty()) {
          output_ = other.output_;
          onChanged();
        }
        if (!other.getSha256().isEmpty()) {
          sha256_ = other.sha256_;
          onChanged();
        }
        if (other.getExecutable() != false) {
          setExecutable(other.getExecutable());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private com.google.protobuf.LazyStringList url_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureUrlIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          url_ = new com.google.protobuf.LazyStringArrayList(url_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * Url to download from. If multiple, treated as mirrors
       * </pre>
       *
       * <code>repeated string url = 1;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getUrlList() {
        return url_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Url to download from. If multiple, treated as mirrors
       * </pre>
       *
       * <code>repeated string url = 1;</code>
       */
      public int getUrlCount() {
        return url_.size();
      }
      /**
       * <pre>
       * Url to download from. If multiple, treated as mirrors
       * </pre>
       *
       * <code>repeated string url = 1;</code>
       */
      public java.lang.String getUrl(int index) {
        return url_.get(index);
      }
      /**
       * <pre>
       * Url to download from. If multiple, treated as mirrors
       * </pre>
       *
       * <code>repeated string url = 1;</code>
       */
      public com.google.protobuf.ByteString
          getUrlBytes(int index) {
        return url_.getByteString(index);
      }
      /**
       * <pre>
       * Url to download from. If multiple, treated as mirrors
       * </pre>
       *
       * <code>repeated string url = 1;</code>
       */
      public Builder setUrl(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureUrlIsMutable();
        url_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Url to download from. If multiple, treated as mirrors
       * </pre>
       *
       * <code>repeated string url = 1;</code>
       */
      public Builder addUrl(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureUrlIsMutable();
        url_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Url to download from. If multiple, treated as mirrors
       * </pre>
       *
       * <code>repeated string url = 1;</code>
       */
      public Builder addAllUrl(
          java.lang.Iterable<java.lang.String> values) {
        ensureUrlIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, url_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Url to download from. If multiple, treated as mirrors
       * </pre>
       *
       * <code>repeated string url = 1;</code>
       */
      public Builder clearUrl() {
        url_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Url to download from. If multiple, treated as mirrors
       * </pre>
       *
       * <code>repeated string url = 1;</code>
       */
      public Builder addUrlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureUrlIsMutable();
        url_.add(value);
        onChanged();
        return this;
      }

      private java.lang.Object output_ = "";
      /**
       * <pre>
       * Output file
       * </pre>
       *
       * <code>string output = 2;</code>
       */
      public java.lang.String getOutput() {
        java.lang.Object ref = output_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          output_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Output file
       * </pre>
       *
       * <code>string output = 2;</code>
       */
      public com.google.protobuf.ByteString
          getOutputBytes() {
        java.lang.Object ref = output_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          output_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Output file
       * </pre>
       *
       * <code>string output = 2;</code>
       */
      public Builder setOutput(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        output_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Output file
       * </pre>
       *
       * <code>string output = 2;</code>
       */
      public Builder clearOutput() {
        
        output_ = getDefaultInstance().getOutput();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Output file
       * </pre>
       *
       * <code>string output = 2;</code>
       */
      public Builder setOutputBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        output_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object sha256_ = "";
      /**
       * <pre>
       * sha256, if speficied
       * </pre>
       *
       * <code>string sha256 = 3;</code>
       */
      public java.lang.String getSha256() {
        java.lang.Object ref = sha256_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sha256_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * sha256, if speficied
       * </pre>
       *
       * <code>string sha256 = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSha256Bytes() {
        java.lang.Object ref = sha256_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sha256_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * sha256, if speficied
       * </pre>
       *
       * <code>string sha256 = 3;</code>
       */
      public Builder setSha256(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sha256_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * sha256, if speficied
       * </pre>
       *
       * <code>string sha256 = 3;</code>
       */
      public Builder clearSha256() {
        
        sha256_ = getDefaultInstance().getSha256();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * sha256, if speficied
       * </pre>
       *
       * <code>string sha256 = 3;</code>
       */
      public Builder setSha256Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        sha256_ = value;
        onChanged();
        return this;
      }

      private boolean executable_ ;
      /**
       * <pre>
       * whether to make the resulting file executable
       * </pre>
       *
       * <code>bool executable = 4;</code>
       */
      public boolean getExecutable() {
        return executable_;
      }
      /**
       * <pre>
       * whether to make the resulting file executable
       * </pre>
       *
       * <code>bool executable = 4;</code>
       */
      public Builder setExecutable(boolean value) {
        
        executable_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * whether to make the resulting file executable
       * </pre>
       *
       * <code>bool executable = 4;</code>
       */
      public Builder clearExecutable() {
        
        executable_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:workspace_log.DownloadEvent)
    }

    // @@protoc_insertion_point(class_scope:workspace_log.DownloadEvent)
    private static final com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent();
    }

    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DownloadAndExtractEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:workspace_log.DownloadAndExtractEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Url(s) to download from
     * </pre>
     *
     * <code>repeated string url = 1;</code>
     */
    java.util.List<java.lang.String>
        getUrlList();
    /**
     * <pre>
     * Url(s) to download from
     * </pre>
     *
     * <code>repeated string url = 1;</code>
     */
    int getUrlCount();
    /**
     * <pre>
     * Url(s) to download from
     * </pre>
     *
     * <code>repeated string url = 1;</code>
     */
    java.lang.String getUrl(int index);
    /**
     * <pre>
     * Url(s) to download from
     * </pre>
     *
     * <code>repeated string url = 1;</code>
     */
    com.google.protobuf.ByteString
        getUrlBytes(int index);

    /**
     * <pre>
     * Output file
     * </pre>
     *
     * <code>string output = 2;</code>
     */
    java.lang.String getOutput();
    /**
     * <pre>
     * Output file
     * </pre>
     *
     * <code>string output = 2;</code>
     */
    com.google.protobuf.ByteString
        getOutputBytes();

    /**
     * <pre>
     * sha256, if specified
     * </pre>
     *
     * <code>string sha256 = 3;</code>
     */
    java.lang.String getSha256();
    /**
     * <pre>
     * sha256, if specified
     * </pre>
     *
     * <code>string sha256 = 3;</code>
     */
    com.google.protobuf.ByteString
        getSha256Bytes();

    /**
     * <pre>
     * Archive type, if specified. Otherwise, inferred from URL.
     * </pre>
     *
     * <code>string type = 4;</code>
     */
    java.lang.String getType();
    /**
     * <pre>
     * Archive type, if specified. Otherwise, inferred from URL.
     * </pre>
     *
     * <code>string type = 4;</code>
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <pre>
     * A directory prefix to strip from extracted files.
     * </pre>
     *
     * <code>string strip_prefix = 5;</code>
     */
    java.lang.String getStripPrefix();
    /**
     * <pre>
     * A directory prefix to strip from extracted files.
     * </pre>
     *
     * <code>string strip_prefix = 5;</code>
     */
    com.google.protobuf.ByteString
        getStripPrefixBytes();
  }
  /**
   * Protobuf type {@code workspace_log.DownloadAndExtractEvent}
   */
  public  static final class DownloadAndExtractEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:workspace_log.DownloadAndExtractEvent)
      DownloadAndExtractEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DownloadAndExtractEvent.newBuilder() to construct.
    private DownloadAndExtractEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DownloadAndExtractEvent() {
      url_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      output_ = "";
      sha256_ = "";
      type_ = "";
      stripPrefix_ = "";
    }

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

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

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

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

              stripPrefix_ = s;
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          url_ = url_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_DownloadAndExtractEvent_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_DownloadAndExtractEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.class, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.Builder.class);
    }

    private int bitField0_;
    public static final int URL_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList url_;
    /**
     * <pre>
     * Url(s) to download from
     * </pre>
     *
     * <code>repeated string url = 1;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getUrlList() {
      return url_;
    }
    /**
     * <pre>
     * Url(s) to download from
     * </pre>
     *
     * <code>repeated string url = 1;</code>
     */
    public int getUrlCount() {
      return url_.size();
    }
    /**
     * <pre>
     * Url(s) to download from
     * </pre>
     *
     * <code>repeated string url = 1;</code>
     */
    public java.lang.String getUrl(int index) {
      return url_.get(index);
    }
    /**
     * <pre>
     * Url(s) to download from
     * </pre>
     *
     * <code>repeated string url = 1;</code>
     */
    public com.google.protobuf.ByteString
        getUrlBytes(int index) {
      return url_.getByteString(index);
    }

    public static final int OUTPUT_FIELD_NUMBER = 2;
    private volatile java.lang.Object output_;
    /**
     * <pre>
     * Output file
     * </pre>
     *
     * <code>string output = 2;</code>
     */
    public java.lang.String getOutput() {
      java.lang.Object ref = output_;
      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();
        output_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Output file
     * </pre>
     *
     * <code>string output = 2;</code>
     */
    public com.google.protobuf.ByteString
        getOutputBytes() {
      java.lang.Object ref = output_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        output_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SHA256_FIELD_NUMBER = 3;
    private volatile java.lang.Object sha256_;
    /**
     * <pre>
     * sha256, if specified
     * </pre>
     *
     * <code>string sha256 = 3;</code>
     */
    public java.lang.String getSha256() {
      java.lang.Object ref = sha256_;
      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();
        sha256_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * sha256, if specified
     * </pre>
     *
     * <code>string sha256 = 3;</code>
     */
    public com.google.protobuf.ByteString
        getSha256Bytes() {
      java.lang.Object ref = sha256_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sha256_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TYPE_FIELD_NUMBER = 4;
    private volatile java.lang.Object type_;
    /**
     * <pre>
     * Archive type, if specified. Otherwise, inferred from URL.
     * </pre>
     *
     * <code>string type = 4;</code>
     */
    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>
     * Archive type, if specified. Otherwise, inferred from URL.
     * </pre>
     *
     * <code>string type = 4;</code>
     */
    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 STRIP_PREFIX_FIELD_NUMBER = 5;
    private volatile java.lang.Object stripPrefix_;
    /**
     * <pre>
     * A directory prefix to strip from extracted files.
     * </pre>
     *
     * <code>string strip_prefix = 5;</code>
     */
    public java.lang.String getStripPrefix() {
      java.lang.Object ref = stripPrefix_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        stripPrefix_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * A directory prefix to strip from extracted files.
     * </pre>
     *
     * <code>string strip_prefix = 5;</code>
     */
    public com.google.protobuf.ByteString
        getStripPrefixBytes() {
      java.lang.Object ref = stripPrefix_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        stripPrefix_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @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 < url_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, url_.getRaw(i));
      }
      if (!getOutputBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, output_);
      }
      if (!getSha256Bytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, sha256_);
      }
      if (!getTypeBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, type_);
      }
      if (!getStripPrefixBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, stripPrefix_);
      }
      unknownFields.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 < url_.size(); i++) {
          dataSize += computeStringSizeNoTag(url_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getUrlList().size();
      }
      if (!getOutputBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, output_);
      }
      if (!getSha256Bytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, sha256_);
      }
      if (!getTypeBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, type_);
      }
      if (!getStripPrefixBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, stripPrefix_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent other = (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent) obj;

      boolean result = true;
      result = result && getUrlList()
          .equals(other.getUrlList());
      result = result && getOutput()
          .equals(other.getOutput());
      result = result && getSha256()
          .equals(other.getSha256());
      result = result && getType()
          .equals(other.getType());
      result = result && getStripPrefix()
          .equals(other.getStripPrefix());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getUrlCount() > 0) {
        hash = (37 * hash) + URL_FIELD_NUMBER;
        hash = (53 * hash) + getUrlList().hashCode();
      }
      hash = (37 * hash) + OUTPUT_FIELD_NUMBER;
      hash = (53 * hash) + getOutput().hashCode();
      hash = (37 * hash) + SHA256_FIELD_NUMBER;
      hash = (53 * hash) + getSha256().hashCode();
      hash = (37 * hash) + TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getType().hashCode();
      hash = (37 * hash) + STRIP_PREFIX_FIELD_NUMBER;
      hash = (53 * hash) + getStripPrefix().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent 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.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent 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.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent 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.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent 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.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent 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.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent 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.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent 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.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent 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 workspace_log.DownloadAndExtractEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:workspace_log.DownloadAndExtractEvent)
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_DownloadAndExtractEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_DownloadAndExtractEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.class, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        url_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        output_ = "";

        sha256_ = "";

        type_ = "";

        stripPrefix_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_DownloadAndExtractEvent_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent getDefaultInstanceForType() {
        return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent build() {
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent buildPartial() {
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent result = new com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          url_ = url_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.url_ = url_;
        result.output_ = output_;
        result.sha256_ = sha256_;
        result.type_ = type_;
        result.stripPrefix_ = stripPrefix_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent other) {
        if (other == com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.getDefaultInstance()) return this;
        if (!other.url_.isEmpty()) {
          if (url_.isEmpty()) {
            url_ = other.url_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureUrlIsMutable();
            url_.addAll(other.url_);
          }
          onChanged();
        }
        if (!other.getOutput().isEmpty()) {
          output_ = other.output_;
          onChanged();
        }
        if (!other.getSha256().isEmpty()) {
          sha256_ = other.sha256_;
          onChanged();
        }
        if (!other.getType().isEmpty()) {
          type_ = other.type_;
          onChanged();
        }
        if (!other.getStripPrefix().isEmpty()) {
          stripPrefix_ = other.stripPrefix_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private com.google.protobuf.LazyStringList url_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureUrlIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          url_ = new com.google.protobuf.LazyStringArrayList(url_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * Url(s) to download from
       * </pre>
       *
       * <code>repeated string url = 1;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getUrlList() {
        return url_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Url(s) to download from
       * </pre>
       *
       * <code>repeated string url = 1;</code>
       */
      public int getUrlCount() {
        return url_.size();
      }
      /**
       * <pre>
       * Url(s) to download from
       * </pre>
       *
       * <code>repeated string url = 1;</code>
       */
      public java.lang.String getUrl(int index) {
        return url_.get(index);
      }
      /**
       * <pre>
       * Url(s) to download from
       * </pre>
       *
       * <code>repeated string url = 1;</code>
       */
      public com.google.protobuf.ByteString
          getUrlBytes(int index) {
        return url_.getByteString(index);
      }
      /**
       * <pre>
       * Url(s) to download from
       * </pre>
       *
       * <code>repeated string url = 1;</code>
       */
      public Builder setUrl(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureUrlIsMutable();
        url_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Url(s) to download from
       * </pre>
       *
       * <code>repeated string url = 1;</code>
       */
      public Builder addUrl(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureUrlIsMutable();
        url_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Url(s) to download from
       * </pre>
       *
       * <code>repeated string url = 1;</code>
       */
      public Builder addAllUrl(
          java.lang.Iterable<java.lang.String> values) {
        ensureUrlIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, url_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Url(s) to download from
       * </pre>
       *
       * <code>repeated string url = 1;</code>
       */
      public Builder clearUrl() {
        url_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Url(s) to download from
       * </pre>
       *
       * <code>repeated string url = 1;</code>
       */
      public Builder addUrlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureUrlIsMutable();
        url_.add(value);
        onChanged();
        return this;
      }

      private java.lang.Object output_ = "";
      /**
       * <pre>
       * Output file
       * </pre>
       *
       * <code>string output = 2;</code>
       */
      public java.lang.String getOutput() {
        java.lang.Object ref = output_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          output_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Output file
       * </pre>
       *
       * <code>string output = 2;</code>
       */
      public com.google.protobuf.ByteString
          getOutputBytes() {
        java.lang.Object ref = output_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          output_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Output file
       * </pre>
       *
       * <code>string output = 2;</code>
       */
      public Builder setOutput(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        output_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Output file
       * </pre>
       *
       * <code>string output = 2;</code>
       */
      public Builder clearOutput() {
        
        output_ = getDefaultInstance().getOutput();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Output file
       * </pre>
       *
       * <code>string output = 2;</code>
       */
      public Builder setOutputBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        output_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object sha256_ = "";
      /**
       * <pre>
       * sha256, if specified
       * </pre>
       *
       * <code>string sha256 = 3;</code>
       */
      public java.lang.String getSha256() {
        java.lang.Object ref = sha256_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sha256_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * sha256, if specified
       * </pre>
       *
       * <code>string sha256 = 3;</code>
       */
      public com.google.protobuf.ByteString
          getSha256Bytes() {
        java.lang.Object ref = sha256_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sha256_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * sha256, if specified
       * </pre>
       *
       * <code>string sha256 = 3;</code>
       */
      public Builder setSha256(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sha256_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * sha256, if specified
       * </pre>
       *
       * <code>string sha256 = 3;</code>
       */
      public Builder clearSha256() {
        
        sha256_ = getDefaultInstance().getSha256();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * sha256, if specified
       * </pre>
       *
       * <code>string sha256 = 3;</code>
       */
      public Builder setSha256Bytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        sha256_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object type_ = "";
      /**
       * <pre>
       * Archive type, if specified. Otherwise, inferred from URL.
       * </pre>
       *
       * <code>string type = 4;</code>
       */
      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>
       * Archive type, if specified. Otherwise, inferred from URL.
       * </pre>
       *
       * <code>string type = 4;</code>
       */
      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>
       * Archive type, if specified. Otherwise, inferred from URL.
       * </pre>
       *
       * <code>string type = 4;</code>
       */
      public Builder setType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Archive type, if specified. Otherwise, inferred from URL.
       * </pre>
       *
       * <code>string type = 4;</code>
       */
      public Builder clearType() {
        
        type_ = getDefaultInstance().getType();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Archive type, if specified. Otherwise, inferred from URL.
       * </pre>
       *
       * <code>string type = 4;</code>
       */
      public Builder setTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        type_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object stripPrefix_ = "";
      /**
       * <pre>
       * A directory prefix to strip from extracted files.
       * </pre>
       *
       * <code>string strip_prefix = 5;</code>
       */
      public java.lang.String getStripPrefix() {
        java.lang.Object ref = stripPrefix_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          stripPrefix_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * A directory prefix to strip from extracted files.
       * </pre>
       *
       * <code>string strip_prefix = 5;</code>
       */
      public com.google.protobuf.ByteString
          getStripPrefixBytes() {
        java.lang.Object ref = stripPrefix_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          stripPrefix_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * A directory prefix to strip from extracted files.
       * </pre>
       *
       * <code>string strip_prefix = 5;</code>
       */
      public Builder setStripPrefix(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        stripPrefix_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A directory prefix to strip from extracted files.
       * </pre>
       *
       * <code>string strip_prefix = 5;</code>
       */
      public Builder clearStripPrefix() {
        
        stripPrefix_ = getDefaultInstance().getStripPrefix();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A directory prefix to strip from extracted files.
       * </pre>
       *
       * <code>string strip_prefix = 5;</code>
       */
      public Builder setStripPrefixBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        stripPrefix_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:workspace_log.DownloadAndExtractEvent)
    }

    // @@protoc_insertion_point(class_scope:workspace_log.DownloadAndExtractEvent)
    private static final com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent();
    }

    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface WorkspaceEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:workspace_log.WorkspaceEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Location in the code (.bzl file) where the event originates.
     * </pre>
     *
     * <code>string location = 1;</code>
     */
    java.lang.String getLocation();
    /**
     * <pre>
     * Location in the code (.bzl file) where the event originates.
     * </pre>
     *
     * <code>string location = 1;</code>
     */
    com.google.protobuf.ByteString
        getLocationBytes();

    /**
     * <pre>
     * Label of the rule whose evaluation caused this event.
     * </pre>
     *
     * <code>string rule = 2;</code>
     */
    java.lang.String getRule();
    /**
     * <pre>
     * Label of the rule whose evaluation caused this event.
     * </pre>
     *
     * <code>string rule = 2;</code>
     */
    com.google.protobuf.ByteString
        getRuleBytes();

    /**
     * <code>.workspace_log.ExecuteEvent execute_event = 3;</code>
     */
    boolean hasExecuteEvent();
    /**
     * <code>.workspace_log.ExecuteEvent execute_event = 3;</code>
     */
    com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent getExecuteEvent();
    /**
     * <code>.workspace_log.ExecuteEvent execute_event = 3;</code>
     */
    com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEventOrBuilder getExecuteEventOrBuilder();

    /**
     * <code>.workspace_log.DownloadEvent download_event = 4;</code>
     */
    boolean hasDownloadEvent();
    /**
     * <code>.workspace_log.DownloadEvent download_event = 4;</code>
     */
    com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent getDownloadEvent();
    /**
     * <code>.workspace_log.DownloadEvent download_event = 4;</code>
     */
    com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEventOrBuilder getDownloadEventOrBuilder();

    /**
     * <code>.workspace_log.DownloadAndExtractEvent download_and_extract_event = 5;</code>
     */
    boolean hasDownloadAndExtractEvent();
    /**
     * <code>.workspace_log.DownloadAndExtractEvent download_and_extract_event = 5;</code>
     */
    com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent getDownloadAndExtractEvent();
    /**
     * <code>.workspace_log.DownloadAndExtractEvent download_and_extract_event = 5;</code>
     */
    com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEventOrBuilder getDownloadAndExtractEventOrBuilder();

    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent.EventCase getEventCase();
  }
  /**
   * Protobuf type {@code workspace_log.WorkspaceEvent}
   */
  public  static final class WorkspaceEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:workspace_log.WorkspaceEvent)
      WorkspaceEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use WorkspaceEvent.newBuilder() to construct.
    private WorkspaceEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private WorkspaceEvent() {
      location_ = "";
      rule_ = "";
    }

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

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

              rule_ = s;
              break;
            }
            case 26: {
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.Builder subBuilder = null;
              if (eventCase_ == 3) {
                subBuilder = ((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent) event_).toBuilder();
              }
              event_ =
                  input.readMessage(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent) event_);
                event_ = subBuilder.buildPartial();
              }
              eventCase_ = 3;
              break;
            }
            case 34: {
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.Builder subBuilder = null;
              if (eventCase_ == 4) {
                subBuilder = ((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent) event_).toBuilder();
              }
              event_ =
                  input.readMessage(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent) event_);
                event_ = subBuilder.buildPartial();
              }
              eventCase_ = 4;
              break;
            }
            case 42: {
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.Builder subBuilder = null;
              if (eventCase_ == 5) {
                subBuilder = ((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent) event_).toBuilder();
              }
              event_ =
                  input.readMessage(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent) event_);
                event_ = subBuilder.buildPartial();
              }
              eventCase_ = 5;
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_WorkspaceEvent_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_WorkspaceEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent.class, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent.Builder.class);
    }

    private int eventCase_ = 0;
    private java.lang.Object event_;
    public enum EventCase
        implements com.google.protobuf.Internal.EnumLite {
      EXECUTE_EVENT(3),
      DOWNLOAD_EVENT(4),
      DOWNLOAD_AND_EXTRACT_EVENT(5),
      EVENT_NOT_SET(0);
      private final int value;
      private EventCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static EventCase valueOf(int value) {
        return forNumber(value);
      }

      public static EventCase forNumber(int value) {
        switch (value) {
          case 3: return EXECUTE_EVENT;
          case 4: return DOWNLOAD_EVENT;
          case 5: return DOWNLOAD_AND_EXTRACT_EVENT;
          case 0: return EVENT_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public EventCase
    getEventCase() {
      return EventCase.forNumber(
          eventCase_);
    }

    public static final int LOCATION_FIELD_NUMBER = 1;
    private volatile java.lang.Object location_;
    /**
     * <pre>
     * Location in the code (.bzl file) where the event originates.
     * </pre>
     *
     * <code>string location = 1;</code>
     */
    public java.lang.String getLocation() {
      java.lang.Object ref = location_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        location_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Location in the code (.bzl file) where the event originates.
     * </pre>
     *
     * <code>string location = 1;</code>
     */
    public com.google.protobuf.ByteString
        getLocationBytes() {
      java.lang.Object ref = location_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        location_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RULE_FIELD_NUMBER = 2;
    private volatile java.lang.Object rule_;
    /**
     * <pre>
     * Label of the rule whose evaluation caused this event.
     * </pre>
     *
     * <code>string rule = 2;</code>
     */
    public java.lang.String getRule() {
      java.lang.Object ref = rule_;
      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();
        rule_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Label of the rule whose evaluation caused this event.
     * </pre>
     *
     * <code>string rule = 2;</code>
     */
    public com.google.protobuf.ByteString
        getRuleBytes() {
      java.lang.Object ref = rule_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        rule_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXECUTE_EVENT_FIELD_NUMBER = 3;
    /**
     * <code>.workspace_log.ExecuteEvent execute_event = 3;</code>
     */
    public boolean hasExecuteEvent() {
      return eventCase_ == 3;
    }
    /**
     * <code>.workspace_log.ExecuteEvent execute_event = 3;</code>
     */
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent getExecuteEvent() {
      if (eventCase_ == 3) {
         return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent) event_;
      }
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.getDefaultInstance();
    }
    /**
     * <code>.workspace_log.ExecuteEvent execute_event = 3;</code>
     */
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEventOrBuilder getExecuteEventOrBuilder() {
      if (eventCase_ == 3) {
         return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent) event_;
      }
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.getDefaultInstance();
    }

    public static final int DOWNLOAD_EVENT_FIELD_NUMBER = 4;
    /**
     * <code>.workspace_log.DownloadEvent download_event = 4;</code>
     */
    public boolean hasDownloadEvent() {
      return eventCase_ == 4;
    }
    /**
     * <code>.workspace_log.DownloadEvent download_event = 4;</code>
     */
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent getDownloadEvent() {
      if (eventCase_ == 4) {
         return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent) event_;
      }
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.getDefaultInstance();
    }
    /**
     * <code>.workspace_log.DownloadEvent download_event = 4;</code>
     */
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEventOrBuilder getDownloadEventOrBuilder() {
      if (eventCase_ == 4) {
         return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent) event_;
      }
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.getDefaultInstance();
    }

    public static final int DOWNLOAD_AND_EXTRACT_EVENT_FIELD_NUMBER = 5;
    /**
     * <code>.workspace_log.DownloadAndExtractEvent download_and_extract_event = 5;</code>
     */
    public boolean hasDownloadAndExtractEvent() {
      return eventCase_ == 5;
    }
    /**
     * <code>.workspace_log.DownloadAndExtractEvent download_and_extract_event = 5;</code>
     */
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent getDownloadAndExtractEvent() {
      if (eventCase_ == 5) {
         return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent) event_;
      }
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.getDefaultInstance();
    }
    /**
     * <code>.workspace_log.DownloadAndExtractEvent download_and_extract_event = 5;</code>
     */
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEventOrBuilder getDownloadAndExtractEventOrBuilder() {
      if (eventCase_ == 5) {
         return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent) event_;
      }
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.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 (!getLocationBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, location_);
      }
      if (!getRuleBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, rule_);
      }
      if (eventCase_ == 3) {
        output.writeMessage(3, (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent) event_);
      }
      if (eventCase_ == 4) {
        output.writeMessage(4, (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent) event_);
      }
      if (eventCase_ == 5) {
        output.writeMessage(5, (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent) event_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getLocationBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, location_);
      }
      if (!getRuleBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, rule_);
      }
      if (eventCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent) event_);
      }
      if (eventCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent) event_);
      }
      if (eventCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent) event_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent other = (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent) obj;

      boolean result = true;
      result = result && getLocation()
          .equals(other.getLocation());
      result = result && getRule()
          .equals(other.getRule());
      result = result && getEventCase().equals(
          other.getEventCase());
      if (!result) return false;
      switch (eventCase_) {
        case 3:
          result = result && getExecuteEvent()
              .equals(other.getExecuteEvent());
          break;
        case 4:
          result = result && getDownloadEvent()
              .equals(other.getDownloadEvent());
          break;
        case 5:
          result = result && getDownloadAndExtractEvent()
              .equals(other.getDownloadAndExtractEvent());
          break;
        case 0:
        default:
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + LOCATION_FIELD_NUMBER;
      hash = (53 * hash) + getLocation().hashCode();
      hash = (37 * hash) + RULE_FIELD_NUMBER;
      hash = (53 * hash) + getRule().hashCode();
      switch (eventCase_) {
        case 3:
          hash = (37 * hash) + EXECUTE_EVENT_FIELD_NUMBER;
          hash = (53 * hash) + getExecuteEvent().hashCode();
          break;
        case 4:
          hash = (37 * hash) + DOWNLOAD_EVENT_FIELD_NUMBER;
          hash = (53 * hash) + getDownloadEvent().hashCode();
          break;
        case 5:
          hash = (37 * hash) + DOWNLOAD_AND_EXTRACT_EVENT_FIELD_NUMBER;
          hash = (53 * hash) + getDownloadAndExtractEvent().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent 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.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent 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.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent 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.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent 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.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent 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.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent 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.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent 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.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent 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 workspace_log.WorkspaceEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:workspace_log.WorkspaceEvent)
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_WorkspaceEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_WorkspaceEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent.class, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        rule_ = "";

        eventCase_ = 0;
        event_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_WorkspaceEvent_descriptor;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent getDefaultInstanceForType() {
        return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent build() {
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent buildPartial() {
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent result = new com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent(this);
        result.location_ = location_;
        result.rule_ = rule_;
        if (eventCase_ == 3) {
          if (executeEventBuilder_ == null) {
            result.event_ = event_;
          } else {
            result.event_ = executeEventBuilder_.build();
          }
        }
        if (eventCase_ == 4) {
          if (downloadEventBuilder_ == null) {
            result.event_ = event_;
          } else {
            result.event_ = downloadEventBuilder_.build();
          }
        }
        if (eventCase_ == 5) {
          if (downloadAndExtractEventBuilder_ == null) {
            result.event_ = event_;
          } else {
            result.event_ = downloadAndExtractEventBuilder_.build();
          }
        }
        result.eventCase_ = eventCase_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent other) {
        if (other == com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent.getDefaultInstance()) return this;
        if (!other.getLocation().isEmpty()) {
          location_ = other.location_;
          onChanged();
        }
        if (!other.getRule().isEmpty()) {
          rule_ = other.rule_;
          onChanged();
        }
        switch (other.getEventCase()) {
          case EXECUTE_EVENT: {
            mergeExecuteEvent(other.getExecuteEvent());
            break;
          }
          case DOWNLOAD_EVENT: {
            mergeDownloadEvent(other.getDownloadEvent());
            break;
          }
          case DOWNLOAD_AND_EXTRACT_EVENT: {
            mergeDownloadAndExtractEvent(other.getDownloadAndExtractEvent());
            break;
          }
          case EVENT_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int eventCase_ = 0;
      private java.lang.Object event_;
      public EventCase
          getEventCase() {
        return EventCase.forNumber(
            eventCase_);
      }

      public Builder clearEvent() {
        eventCase_ = 0;
        event_ = null;
        onChanged();
        return this;
      }


      private java.lang.Object location_ = "";
      /**
       * <pre>
       * Location in the code (.bzl file) where the event originates.
       * </pre>
       *
       * <code>string location = 1;</code>
       */
      public java.lang.String getLocation() {
        java.lang.Object ref = location_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          location_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Location in the code (.bzl file) where the event originates.
       * </pre>
       *
       * <code>string location = 1;</code>
       */
      public com.google.protobuf.ByteString
          getLocationBytes() {
        java.lang.Object ref = location_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          location_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Location in the code (.bzl file) where the event originates.
       * </pre>
       *
       * <code>string location = 1;</code>
       */
      public Builder setLocation(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        location_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Location in the code (.bzl file) where the event originates.
       * </pre>
       *
       * <code>string location = 1;</code>
       */
      public Builder clearLocation() {
        
        location_ = getDefaultInstance().getLocation();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Location in the code (.bzl file) where the event originates.
       * </pre>
       *
       * <code>string location = 1;</code>
       */
      public Builder setLocationBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        location_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object rule_ = "";
      /**
       * <pre>
       * Label of the rule whose evaluation caused this event.
       * </pre>
       *
       * <code>string rule = 2;</code>
       */
      public java.lang.String getRule() {
        java.lang.Object ref = rule_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          rule_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Label of the rule whose evaluation caused this event.
       * </pre>
       *
       * <code>string rule = 2;</code>
       */
      public com.google.protobuf.ByteString
          getRuleBytes() {
        java.lang.Object ref = rule_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          rule_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Label of the rule whose evaluation caused this event.
       * </pre>
       *
       * <code>string rule = 2;</code>
       */
      public Builder setRule(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        rule_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Label of the rule whose evaluation caused this event.
       * </pre>
       *
       * <code>string rule = 2;</code>
       */
      public Builder clearRule() {
        
        rule_ = getDefaultInstance().getRule();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Label of the rule whose evaluation caused this event.
       * </pre>
       *
       * <code>string rule = 2;</code>
       */
      public Builder setRuleBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        rule_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEventOrBuilder> executeEventBuilder_;
      /**
       * <code>.workspace_log.ExecuteEvent execute_event = 3;</code>
       */
      public boolean hasExecuteEvent() {
        return eventCase_ == 3;
      }
      /**
       * <code>.workspace_log.ExecuteEvent execute_event = 3;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent getExecuteEvent() {
        if (executeEventBuilder_ == null) {
          if (eventCase_ == 3) {
            return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent) event_;
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.getDefaultInstance();
        } else {
          if (eventCase_ == 3) {
            return executeEventBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.getDefaultInstance();
        }
      }
      /**
       * <code>.workspace_log.ExecuteEvent execute_event = 3;</code>
       */
      public Builder setExecuteEvent(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent value) {
        if (executeEventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          event_ = value;
          onChanged();
        } else {
          executeEventBuilder_.setMessage(value);
        }
        eventCase_ = 3;
        return this;
      }
      /**
       * <code>.workspace_log.ExecuteEvent execute_event = 3;</code>
       */
      public Builder setExecuteEvent(
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.Builder builderForValue) {
        if (executeEventBuilder_ == null) {
          event_ = builderForValue.build();
          onChanged();
        } else {
          executeEventBuilder_.setMessage(builderForValue.build());
        }
        eventCase_ = 3;
        return this;
      }
      /**
       * <code>.workspace_log.ExecuteEvent execute_event = 3;</code>
       */
      public Builder mergeExecuteEvent(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent value) {
        if (executeEventBuilder_ == null) {
          if (eventCase_ == 3 &&
              event_ != com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.getDefaultInstance()) {
            event_ = com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.newBuilder((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent) event_)
                .mergeFrom(value).buildPartial();
          } else {
            event_ = value;
          }
          onChanged();
        } else {
          if (eventCase_ == 3) {
            executeEventBuilder_.mergeFrom(value);
          }
          executeEventBuilder_.setMessage(value);
        }
        eventCase_ = 3;
        return this;
      }
      /**
       * <code>.workspace_log.ExecuteEvent execute_event = 3;</code>
       */
      public Builder clearExecuteEvent() {
        if (executeEventBuilder_ == null) {
          if (eventCase_ == 3) {
            eventCase_ = 0;
            event_ = null;
            onChanged();
          }
        } else {
          if (eventCase_ == 3) {
            eventCase_ = 0;
            event_ = null;
          }
          executeEventBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.workspace_log.ExecuteEvent execute_event = 3;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.Builder getExecuteEventBuilder() {
        return getExecuteEventFieldBuilder().getBuilder();
      }
      /**
       * <code>.workspace_log.ExecuteEvent execute_event = 3;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEventOrBuilder getExecuteEventOrBuilder() {
        if ((eventCase_ == 3) && (executeEventBuilder_ != null)) {
          return executeEventBuilder_.getMessageOrBuilder();
        } else {
          if (eventCase_ == 3) {
            return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent) event_;
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.getDefaultInstance();
        }
      }
      /**
       * <code>.workspace_log.ExecuteEvent execute_event = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEventOrBuilder> 
          getExecuteEventFieldBuilder() {
        if (executeEventBuilder_ == null) {
          if (!(eventCase_ == 3)) {
            event_ = com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.getDefaultInstance();
          }
          executeEventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEventOrBuilder>(
                  (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.ExecuteEvent) event_,
                  getParentForChildren(),
                  isClean());
          event_ = null;
        }
        eventCase_ = 3;
        onChanged();;
        return executeEventBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEventOrBuilder> downloadEventBuilder_;
      /**
       * <code>.workspace_log.DownloadEvent download_event = 4;</code>
       */
      public boolean hasDownloadEvent() {
        return eventCase_ == 4;
      }
      /**
       * <code>.workspace_log.DownloadEvent download_event = 4;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent getDownloadEvent() {
        if (downloadEventBuilder_ == null) {
          if (eventCase_ == 4) {
            return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent) event_;
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.getDefaultInstance();
        } else {
          if (eventCase_ == 4) {
            return downloadEventBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.getDefaultInstance();
        }
      }
      /**
       * <code>.workspace_log.DownloadEvent download_event = 4;</code>
       */
      public Builder setDownloadEvent(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent value) {
        if (downloadEventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          event_ = value;
          onChanged();
        } else {
          downloadEventBuilder_.setMessage(value);
        }
        eventCase_ = 4;
        return this;
      }
      /**
       * <code>.workspace_log.DownloadEvent download_event = 4;</code>
       */
      public Builder setDownloadEvent(
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.Builder builderForValue) {
        if (downloadEventBuilder_ == null) {
          event_ = builderForValue.build();
          onChanged();
        } else {
          downloadEventBuilder_.setMessage(builderForValue.build());
        }
        eventCase_ = 4;
        return this;
      }
      /**
       * <code>.workspace_log.DownloadEvent download_event = 4;</code>
       */
      public Builder mergeDownloadEvent(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent value) {
        if (downloadEventBuilder_ == null) {
          if (eventCase_ == 4 &&
              event_ != com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.getDefaultInstance()) {
            event_ = com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.newBuilder((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent) event_)
                .mergeFrom(value).buildPartial();
          } else {
            event_ = value;
          }
          onChanged();
        } else {
          if (eventCase_ == 4) {
            downloadEventBuilder_.mergeFrom(value);
          }
          downloadEventBuilder_.setMessage(value);
        }
        eventCase_ = 4;
        return this;
      }
      /**
       * <code>.workspace_log.DownloadEvent download_event = 4;</code>
       */
      public Builder clearDownloadEvent() {
        if (downloadEventBuilder_ == null) {
          if (eventCase_ == 4) {
            eventCase_ = 0;
            event_ = null;
            onChanged();
          }
        } else {
          if (eventCase_ == 4) {
            eventCase_ = 0;
            event_ = null;
          }
          downloadEventBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.workspace_log.DownloadEvent download_event = 4;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.Builder getDownloadEventBuilder() {
        return getDownloadEventFieldBuilder().getBuilder();
      }
      /**
       * <code>.workspace_log.DownloadEvent download_event = 4;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEventOrBuilder getDownloadEventOrBuilder() {
        if ((eventCase_ == 4) && (downloadEventBuilder_ != null)) {
          return downloadEventBuilder_.getMessageOrBuilder();
        } else {
          if (eventCase_ == 4) {
            return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent) event_;
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.getDefaultInstance();
        }
      }
      /**
       * <code>.workspace_log.DownloadEvent download_event = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEventOrBuilder> 
          getDownloadEventFieldBuilder() {
        if (downloadEventBuilder_ == null) {
          if (!(eventCase_ == 4)) {
            event_ = com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.getDefaultInstance();
          }
          downloadEventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEventOrBuilder>(
                  (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadEvent) event_,
                  getParentForChildren(),
                  isClean());
          event_ = null;
        }
        eventCase_ = 4;
        onChanged();;
        return downloadEventBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEventOrBuilder> downloadAndExtractEventBuilder_;
      /**
       * <code>.workspace_log.DownloadAndExtractEvent download_and_extract_event = 5;</code>
       */
      public boolean hasDownloadAndExtractEvent() {
        return eventCase_ == 5;
      }
      /**
       * <code>.workspace_log.DownloadAndExtractEvent download_and_extract_event = 5;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent getDownloadAndExtractEvent() {
        if (downloadAndExtractEventBuilder_ == null) {
          if (eventCase_ == 5) {
            return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent) event_;
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.getDefaultInstance();
        } else {
          if (eventCase_ == 5) {
            return downloadAndExtractEventBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.getDefaultInstance();
        }
      }
      /**
       * <code>.workspace_log.DownloadAndExtractEvent download_and_extract_event = 5;</code>
       */
      public Builder setDownloadAndExtractEvent(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent value) {
        if (downloadAndExtractEventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          event_ = value;
          onChanged();
        } else {
          downloadAndExtractEventBuilder_.setMessage(value);
        }
        eventCase_ = 5;
        return this;
      }
      /**
       * <code>.workspace_log.DownloadAndExtractEvent download_and_extract_event = 5;</code>
       */
      public Builder setDownloadAndExtractEvent(
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.Builder builderForValue) {
        if (downloadAndExtractEventBuilder_ == null) {
          event_ = builderForValue.build();
          onChanged();
        } else {
          downloadAndExtractEventBuilder_.setMessage(builderForValue.build());
        }
        eventCase_ = 5;
        return this;
      }
      /**
       * <code>.workspace_log.DownloadAndExtractEvent download_and_extract_event = 5;</code>
       */
      public Builder mergeDownloadAndExtractEvent(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent value) {
        if (downloadAndExtractEventBuilder_ == null) {
          if (eventCase_ == 5 &&
              event_ != com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.getDefaultInstance()) {
            event_ = com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.newBuilder((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent) event_)
                .mergeFrom(value).buildPartial();
          } else {
            event_ = value;
          }
          onChanged();
        } else {
          if (eventCase_ == 5) {
            downloadAndExtractEventBuilder_.mergeFrom(value);
          }
          downloadAndExtractEventBuilder_.setMessage(value);
        }
        eventCase_ = 5;
        return this;
      }
      /**
       * <code>.workspace_log.DownloadAndExtractEvent download_and_extract_event = 5;</code>
       */
      public Builder clearDownloadAndExtractEvent() {
        if (downloadAndExtractEventBuilder_ == null) {
          if (eventCase_ == 5) {
            eventCase_ = 0;
            event_ = null;
            onChanged();
          }
        } else {
          if (eventCase_ == 5) {
            eventCase_ = 0;
            event_ = null;
          }
          downloadAndExtractEventBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.workspace_log.DownloadAndExtractEvent download_and_extract_event = 5;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.Builder getDownloadAndExtractEventBuilder() {
        return getDownloadAndExtractEventFieldBuilder().getBuilder();
      }
      /**
       * <code>.workspace_log.DownloadAndExtractEvent download_and_extract_event = 5;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEventOrBuilder getDownloadAndExtractEventOrBuilder() {
        if ((eventCase_ == 5) && (downloadAndExtractEventBuilder_ != null)) {
          return downloadAndExtractEventBuilder_.getMessageOrBuilder();
        } else {
          if (eventCase_ == 5) {
            return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent) event_;
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.getDefaultInstance();
        }
      }
      /**
       * <code>.workspace_log.DownloadAndExtractEvent download_and_extract_event = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEventOrBuilder> 
          getDownloadAndExtractEventFieldBuilder() {
        if (downloadAndExtractEventBuilder_ == null) {
          if (!(eventCase_ == 5)) {
            event_ = com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.getDefaultInstance();
          }
          downloadAndExtractEventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEventOrBuilder>(
                  (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.DownloadAndExtractEvent) event_,
                  getParentForChildren(),
                  isClean());
          event_ = null;
        }
        eventCase_ = 5;
        onChanged();;
        return downloadAndExtractEventBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:workspace_log.WorkspaceEvent)
    }

    // @@protoc_insertion_point(class_scope:workspace_log.WorkspaceEvent)
    private static final com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent();
    }

    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WorkspaceEvent getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_workspace_log_ExecuteEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_workspace_log_ExecuteEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_workspace_log_ExecuteEvent_EnvironmentEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_workspace_log_ExecuteEvent_EnvironmentEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_workspace_log_DownloadEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_workspace_log_DownloadEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_workspace_log_DownloadAndExtractEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_workspace_log_DownloadAndExtractEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_workspace_log_WorkspaceEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_workspace_log_WorkspaceEvent_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\nKsrc/main/java/com/google/devtools/buil" +
      "d/lib/bazel/debug/workspace_log.proto\022\rw" +
      "orkspace_log\"\332\001\n\014ExecuteEvent\022\021\n\targumen" +
      "ts\030\002 \003(\t\022\027\n\017timeout_seconds\030\003 \001(\005\022A\n\013env" +
      "ironment\030\004 \003(\0132,.workspace_log.ExecuteEv" +
      "ent.EnvironmentEntry\022\r\n\005quiet\030\005 \001(\010\022\030\n\020o" +
      "utput_directory\030\006 \001(\t\0322\n\020EnvironmentEntr" +
      "y\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"P\n\rDow" +
      "nloadEvent\022\013\n\003url\030\001 \003(\t\022\016\n\006output\030\002 \001(\t\022" +
      "\016\n\006sha256\030\003 \001(\t\022\022\n\nexecutable\030\004 \001(\010\"j\n\027D" +
      "ownloadAndExtractEvent\022\013\n\003url\030\001 \003(\t\022\016\n\006o" +
      "utput\030\002 \001(\t\022\016\n\006sha256\030\003 \001(\t\022\014\n\004type\030\004 \001(" +
      "\t\022\024\n\014strip_prefix\030\005 \001(\t\"\365\001\n\016WorkspaceEve" +
      "nt\022\020\n\010location\030\001 \001(\t\022\014\n\004rule\030\002 \001(\t\0224\n\rex" +
      "ecute_event\030\003 \001(\0132\033.workspace_log.Execut" +
      "eEventH\000\0226\n\016download_event\030\004 \001(\0132\034.works" +
      "pace_log.DownloadEventH\000\022L\n\032download_and" +
      "_extract_event\030\005 \001(\0132&.workspace_log.Dow" +
      "nloadAndExtractEventH\000B\007\n\005eventBE\n/com.g" +
      "oogle.devtools.build.lib.bazel.debug.pro" +
      "toB\022WorkspaceLogProtosb\006proto3"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
          public com.google.protobuf.ExtensionRegistry assignDescriptors(
              com.google.protobuf.Descriptors.FileDescriptor root) {
            descriptor = root;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
    internal_static_workspace_log_ExecuteEvent_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_workspace_log_ExecuteEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_workspace_log_ExecuteEvent_descriptor,
        new java.lang.String[] { "Arguments", "TimeoutSeconds", "Environment", "Quiet", "OutputDirectory", });
    internal_static_workspace_log_ExecuteEvent_EnvironmentEntry_descriptor =
      internal_static_workspace_log_ExecuteEvent_descriptor.getNestedTypes().get(0);
    internal_static_workspace_log_ExecuteEvent_EnvironmentEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_workspace_log_ExecuteEvent_EnvironmentEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_workspace_log_DownloadEvent_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_workspace_log_DownloadEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_workspace_log_DownloadEvent_descriptor,
        new java.lang.String[] { "Url", "Output", "Sha256", "Executable", });
    internal_static_workspace_log_DownloadAndExtractEvent_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_workspace_log_DownloadAndExtractEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_workspace_log_DownloadAndExtractEvent_descriptor,
        new java.lang.String[] { "Url", "Output", "Sha256", "Type", "StripPrefix", });
    internal_static_workspace_log_WorkspaceEvent_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_workspace_log_WorkspaceEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_workspace_log_WorkspaceEvent_descriptor,
        new java.lang.String[] { "Location", "Rule", "ExecuteEvent", "DownloadEvent", "DownloadAndExtractEvent", "Event", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
