// 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 FileEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:workspace_log.FileEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Path to the created file
     * </pre>
     *
     * <code>string path = 1;</code>
     */
    java.lang.String getPath();
    /**
     * <pre>
     * Path to the created file
     * </pre>
     *
     * <code>string path = 1;</code>
     */
    com.google.protobuf.ByteString
        getPathBytes();

    /**
     * <pre>
     * Content of the created file
     * </pre>
     *
     * <code>string content = 2;</code>
     */
    java.lang.String getContent();
    /**
     * <pre>
     * Content of the created file
     * </pre>
     *
     * <code>string content = 2;</code>
     */
    com.google.protobuf.ByteString
        getContentBytes();

    /**
     * <pre>
     * Whether the file is executable
     * </pre>
     *
     * <code>bool executable = 3;</code>
     */
    boolean getExecutable();
  }
  /**
   * <pre>
   * Information on "file" event in repository_ctx.
   * </pre>
   *
   * Protobuf type {@code workspace_log.FileEvent}
   */
  public  static final class FileEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:workspace_log.FileEvent)
      FileEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use FileEvent.newBuilder() to construct.
    private FileEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private FileEvent() {
      path_ = "";
      content_ = "";
      executable_ = false;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private FileEvent(
        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();

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

              content_ = s;
              break;
            }
            case 24: {

              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 {
        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_FileEvent_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_FileEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.class, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.Builder.class);
    }

    public static final int PATH_FIELD_NUMBER = 1;
    private volatile java.lang.Object path_;
    /**
     * <pre>
     * Path to the created file
     * </pre>
     *
     * <code>string path = 1;</code>
     */
    public java.lang.String getPath() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        path_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Path to the created file
     * </pre>
     *
     * <code>string path = 1;</code>
     */
    public com.google.protobuf.ByteString
        getPathBytes() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        path_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONTENT_FIELD_NUMBER = 2;
    private volatile java.lang.Object content_;
    /**
     * <pre>
     * Content of the created file
     * </pre>
     *
     * <code>string content = 2;</code>
     */
    public java.lang.String getContent() {
      java.lang.Object ref = content_;
      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();
        content_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Content of the created file
     * </pre>
     *
     * <code>string content = 2;</code>
     */
    public com.google.protobuf.ByteString
        getContentBytes() {
      java.lang.Object ref = content_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        content_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXECUTABLE_FIELD_NUMBER = 3;
    private boolean executable_;
    /**
     * <pre>
     * Whether the file is executable
     * </pre>
     *
     * <code>bool executable = 3;</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 {
      if (!getPathBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, path_);
      }
      if (!getContentBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, content_);
      }
      if (executable_ != false) {
        output.writeBool(3, executable_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getPathBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, path_);
      }
      if (!getContentBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, content_);
      }
      if (executable_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, 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.FileEvent)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent other = (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent) obj;

      boolean result = true;
      result = result && getPath()
          .equals(other.getPath());
      result = result && getContent()
          .equals(other.getContent());
      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();
      hash = (37 * hash) + PATH_FIELD_NUMBER;
      hash = (53 * hash) + getPath().hashCode();
      hash = (37 * hash) + CONTENT_FIELD_NUMBER;
      hash = (53 * hash) + getContent().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.FileEvent 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.FileEvent 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.FileEvent 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.FileEvent 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.FileEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent 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.FileEvent 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.FileEvent 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.FileEvent 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.FileEvent 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.FileEvent 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.FileEvent 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.FileEvent 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 "file" event in repository_ctx.
     * </pre>
     *
     * Protobuf type {@code workspace_log.FileEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:workspace_log.FileEvent)
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_FileEvent_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_FileEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.class, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.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();
        path_ = "";

        content_ = "";

        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_FileEvent_descriptor;
      }

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent buildPartial() {
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent result = new com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent(this);
        result.path_ = path_;
        result.content_ = content_;
        result.executable_ = executable_;
        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.FileEvent) {
          return mergeFrom((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent other) {
        if (other == com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.getDefaultInstance()) return this;
        if (!other.getPath().isEmpty()) {
          path_ = other.path_;
          onChanged();
        }
        if (!other.getContent().isEmpty()) {
          content_ = other.content_;
          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.FileEvent parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object path_ = "";
      /**
       * <pre>
       * Path to the created file
       * </pre>
       *
       * <code>string path = 1;</code>
       */
      public java.lang.String getPath() {
        java.lang.Object ref = path_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          path_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Path to the created file
       * </pre>
       *
       * <code>string path = 1;</code>
       */
      public com.google.protobuf.ByteString
          getPathBytes() {
        java.lang.Object ref = path_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          path_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Path to the created file
       * </pre>
       *
       * <code>string path = 1;</code>
       */
      public Builder setPath(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        path_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path to the created file
       * </pre>
       *
       * <code>string path = 1;</code>
       */
      public Builder clearPath() {
        
        path_ = getDefaultInstance().getPath();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path to the created file
       * </pre>
       *
       * <code>string path = 1;</code>
       */
      public Builder setPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        path_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object content_ = "";
      /**
       * <pre>
       * Content of the created file
       * </pre>
       *
       * <code>string content = 2;</code>
       */
      public java.lang.String getContent() {
        java.lang.Object ref = content_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          content_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Content of the created file
       * </pre>
       *
       * <code>string content = 2;</code>
       */
      public com.google.protobuf.ByteString
          getContentBytes() {
        java.lang.Object ref = content_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          content_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Content of the created file
       * </pre>
       *
       * <code>string content = 2;</code>
       */
      public Builder setContent(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        content_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Content of the created file
       * </pre>
       *
       * <code>string content = 2;</code>
       */
      public Builder clearContent() {
        
        content_ = getDefaultInstance().getContent();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Content of the created file
       * </pre>
       *
       * <code>string content = 2;</code>
       */
      public Builder setContentBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        content_ = value;
        onChanged();
        return this;
      }

      private boolean executable_ ;
      /**
       * <pre>
       * Whether the file is executable
       * </pre>
       *
       * <code>bool executable = 3;</code>
       */
      public boolean getExecutable() {
        return executable_;
      }
      /**
       * <pre>
       * Whether the file is executable
       * </pre>
       *
       * <code>bool executable = 3;</code>
       */
      public Builder setExecutable(boolean value) {
        
        executable_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether the file is executable
       * </pre>
       *
       * <code>bool executable = 3;</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.FileEvent)
    }

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

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

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

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

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

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

  }

  public interface OsEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:workspace_log.OsEvent)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * Information on "os" event in repository_ctx.
   * </pre>
   *
   * Protobuf type {@code workspace_log.OsEvent}
   */
  public  static final class OsEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:workspace_log.OsEvent)
      OsEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use OsEvent.newBuilder() to construct.
    private OsEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private OsEvent() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private OsEvent(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!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_OsEvent_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_OsEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.class, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.Builder.class);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      unknownFields.writeTo(output);
    }

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

      size = 0;
      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.OsEvent)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent other = (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent) obj;

      boolean result = true;
      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 = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent 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.OsEvent 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.OsEvent 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.OsEvent 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.OsEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent 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.OsEvent 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.OsEvent 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.OsEvent 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.OsEvent 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.OsEvent 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.OsEvent 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.OsEvent 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 "os" event in repository_ctx.
     * </pre>
     *
     * Protobuf type {@code workspace_log.OsEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:workspace_log.OsEvent)
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_OsEvent_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_OsEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.class, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.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();
        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_OsEvent_descriptor;
      }

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent buildPartial() {
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent result = new com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent(this);
        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.OsEvent) {
          return mergeFrom((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent other) {
        if (other == com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.getDefaultInstance()) return this;
        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.OsEvent parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        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.OsEvent)
    }

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

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

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

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

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

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

  }

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

    /**
     * <pre>
     * path to which the symlink will point to
     * </pre>
     *
     * <code>string from = 1;</code>
     */
    java.lang.String getFrom();
    /**
     * <pre>
     * path to which the symlink will point to
     * </pre>
     *
     * <code>string from = 1;</code>
     */
    com.google.protobuf.ByteString
        getFromBytes();

    /**
     * <pre>
     * path of the symlink
     * </pre>
     *
     * <code>string to = 2;</code>
     */
    java.lang.String getTo();
    /**
     * <pre>
     * path of the symlink
     * </pre>
     *
     * <code>string to = 2;</code>
     */
    com.google.protobuf.ByteString
        getToBytes();
  }
  /**
   * <pre>
   * Information on "symlink" event in repository_ctx.
   * </pre>
   *
   * Protobuf type {@code workspace_log.SymlinkEvent}
   */
  public  static final class SymlinkEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:workspace_log.SymlinkEvent)
      SymlinkEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SymlinkEvent.newBuilder() to construct.
    private SymlinkEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SymlinkEvent() {
      from_ = "";
      to_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SymlinkEvent(
        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();

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

              to_ = s;
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_SymlinkEvent_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_SymlinkEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.class, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.Builder.class);
    }

    public static final int FROM_FIELD_NUMBER = 1;
    private volatile java.lang.Object from_;
    /**
     * <pre>
     * path to which the symlink will point to
     * </pre>
     *
     * <code>string from = 1;</code>
     */
    public java.lang.String getFrom() {
      java.lang.Object ref = from_;
      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();
        from_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * path to which the symlink will point to
     * </pre>
     *
     * <code>string from = 1;</code>
     */
    public com.google.protobuf.ByteString
        getFromBytes() {
      java.lang.Object ref = from_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        from_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TO_FIELD_NUMBER = 2;
    private volatile java.lang.Object to_;
    /**
     * <pre>
     * path of the symlink
     * </pre>
     *
     * <code>string to = 2;</code>
     */
    public java.lang.String getTo() {
      java.lang.Object ref = to_;
      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();
        to_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * path of the symlink
     * </pre>
     *
     * <code>string to = 2;</code>
     */
    public com.google.protobuf.ByteString
        getToBytes() {
      java.lang.Object ref = to_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        to_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getFromBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, from_);
      }
      if (!getToBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, to_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getFromBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, from_);
      }
      if (!getToBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, to_);
      }
      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.SymlinkEvent)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent other = (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent) obj;

      boolean result = true;
      result = result && getFrom()
          .equals(other.getFrom());
      result = result && getTo()
          .equals(other.getTo());
      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) + FROM_FIELD_NUMBER;
      hash = (53 * hash) + getFrom().hashCode();
      hash = (37 * hash) + TO_FIELD_NUMBER;
      hash = (53 * hash) + getTo().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent 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.SymlinkEvent 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.SymlinkEvent 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.SymlinkEvent 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.SymlinkEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent 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.SymlinkEvent 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.SymlinkEvent 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.SymlinkEvent 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.SymlinkEvent 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.SymlinkEvent 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.SymlinkEvent 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.SymlinkEvent 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 "symlink" event in repository_ctx.
     * </pre>
     *
     * Protobuf type {@code workspace_log.SymlinkEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:workspace_log.SymlinkEvent)
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_SymlinkEvent_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_SymlinkEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.class, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.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();
        from_ = "";

        to_ = "";

        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_SymlinkEvent_descriptor;
      }

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent buildPartial() {
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent result = new com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent(this);
        result.from_ = from_;
        result.to_ = to_;
        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.SymlinkEvent) {
          return mergeFrom((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent other) {
        if (other == com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.getDefaultInstance()) return this;
        if (!other.getFrom().isEmpty()) {
          from_ = other.from_;
          onChanged();
        }
        if (!other.getTo().isEmpty()) {
          to_ = other.to_;
          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.SymlinkEvent parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object from_ = "";
      /**
       * <pre>
       * path to which the symlink will point to
       * </pre>
       *
       * <code>string from = 1;</code>
       */
      public java.lang.String getFrom() {
        java.lang.Object ref = from_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          from_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * path to which the symlink will point to
       * </pre>
       *
       * <code>string from = 1;</code>
       */
      public com.google.protobuf.ByteString
          getFromBytes() {
        java.lang.Object ref = from_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          from_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * path to which the symlink will point to
       * </pre>
       *
       * <code>string from = 1;</code>
       */
      public Builder setFrom(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        from_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path to which the symlink will point to
       * </pre>
       *
       * <code>string from = 1;</code>
       */
      public Builder clearFrom() {
        
        from_ = getDefaultInstance().getFrom();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path to which the symlink will point to
       * </pre>
       *
       * <code>string from = 1;</code>
       */
      public Builder setFromBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        from_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object to_ = "";
      /**
       * <pre>
       * path of the symlink
       * </pre>
       *
       * <code>string to = 2;</code>
       */
      public java.lang.String getTo() {
        java.lang.Object ref = to_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          to_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * path of the symlink
       * </pre>
       *
       * <code>string to = 2;</code>
       */
      public com.google.protobuf.ByteString
          getToBytes() {
        java.lang.Object ref = to_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          to_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * path of the symlink
       * </pre>
       *
       * <code>string to = 2;</code>
       */
      public Builder setTo(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        to_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path of the symlink
       * </pre>
       *
       * <code>string to = 2;</code>
       */
      public Builder clearTo() {
        
        to_ = getDefaultInstance().getTo();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path of the symlink
       * </pre>
       *
       * <code>string to = 2;</code>
       */
      public Builder setToBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        to_ = 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.SymlinkEvent)
    }

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

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

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

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

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

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

  }

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

    /**
     * <pre>
     * path of the file to create
     * </pre>
     *
     * <code>string path = 1;</code>
     */
    java.lang.String getPath();
    /**
     * <pre>
     * path of the file to create
     * </pre>
     *
     * <code>string path = 1;</code>
     */
    com.google.protobuf.ByteString
        getPathBytes();

    /**
     * <pre>
     * path to the template file
     * </pre>
     *
     * <code>string template = 2;</code>
     */
    java.lang.String getTemplate();
    /**
     * <pre>
     * path to the template file
     * </pre>
     *
     * <code>string template = 2;</code>
     */
    com.google.protobuf.ByteString
        getTemplateBytes();

    /**
     * <pre>
     * a map of substitutions to make
     * </pre>
     *
     * <code>map&lt;string, string&gt; substitutions = 3;</code>
     */
    int getSubstitutionsCount();
    /**
     * <pre>
     * a map of substitutions to make
     * </pre>
     *
     * <code>map&lt;string, string&gt; substitutions = 3;</code>
     */
    boolean containsSubstitutions(
        java.lang.String key);
    /**
     * Use {@link #getSubstitutionsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getSubstitutions();
    /**
     * <pre>
     * a map of substitutions to make
     * </pre>
     *
     * <code>map&lt;string, string&gt; substitutions = 3;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getSubstitutionsMap();
    /**
     * <pre>
     * a map of substitutions to make
     * </pre>
     *
     * <code>map&lt;string, string&gt; substitutions = 3;</code>
     */

    java.lang.String getSubstitutionsOrDefault(
        java.lang.String key,
        java.lang.String defaultValue);
    /**
     * <pre>
     * a map of substitutions to make
     * </pre>
     *
     * <code>map&lt;string, string&gt; substitutions = 3;</code>
     */

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

    /**
     * <pre>
     * Whether to set executable flag
     * </pre>
     *
     * <code>bool executable = 4;</code>
     */
    boolean getExecutable();
  }
  /**
   * <pre>
   * Information on "template" event in repository_ctx.
   * </pre>
   *
   * Protobuf type {@code workspace_log.TemplateEvent}
   */
  public  static final class TemplateEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:workspace_log.TemplateEvent)
      TemplateEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TemplateEvent.newBuilder() to construct.
    private TemplateEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TemplateEvent() {
      path_ = "";
      template_ = "";
      executable_ = false;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TemplateEvent(
        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();

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

              template_ = s;
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                substitutions_ = com.google.protobuf.MapField.newMapField(
                    SubstitutionsDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000004;
              }
              com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
              substitutions__ = input.readMessage(
                  SubstitutionsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              substitutions_.getMutableMap().put(
                  substitutions__.getKey(), substitutions__.getValue());
              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 {
        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_TemplateEvent_descriptor;
    }

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

    private int bitField0_;
    public static final int PATH_FIELD_NUMBER = 1;
    private volatile java.lang.Object path_;
    /**
     * <pre>
     * path of the file to create
     * </pre>
     *
     * <code>string path = 1;</code>
     */
    public java.lang.String getPath() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        path_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * path of the file to create
     * </pre>
     *
     * <code>string path = 1;</code>
     */
    public com.google.protobuf.ByteString
        getPathBytes() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        path_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TEMPLATE_FIELD_NUMBER = 2;
    private volatile java.lang.Object template_;
    /**
     * <pre>
     * path to the template file
     * </pre>
     *
     * <code>string template = 2;</code>
     */
    public java.lang.String getTemplate() {
      java.lang.Object ref = template_;
      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();
        template_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * path to the template file
     * </pre>
     *
     * <code>string template = 2;</code>
     */
    public com.google.protobuf.ByteString
        getTemplateBytes() {
      java.lang.Object ref = template_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        template_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SUBSTITUTIONS_FIELD_NUMBER = 3;
    private static final class SubstitutionsDefaultEntryHolder {
      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_TemplateEvent_SubstitutionsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> substitutions_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetSubstitutions() {
      if (substitutions_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            SubstitutionsDefaultEntryHolder.defaultEntry);
      }
      return substitutions_;
    }

    public int getSubstitutionsCount() {
      return internalGetSubstitutions().getMap().size();
    }
    /**
     * <pre>
     * a map of substitutions to make
     * </pre>
     *
     * <code>map&lt;string, string&gt; substitutions = 3;</code>
     */

    public boolean containsSubstitutions(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      return internalGetSubstitutions().getMap().containsKey(key);
    }
    /**
     * Use {@link #getSubstitutionsMap()} instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getSubstitutions() {
      return getSubstitutionsMap();
    }
    /**
     * <pre>
     * a map of substitutions to make
     * </pre>
     *
     * <code>map&lt;string, string&gt; substitutions = 3;</code>
     */

    public java.util.Map<java.lang.String, java.lang.String> getSubstitutionsMap() {
      return internalGetSubstitutions().getMap();
    }
    /**
     * <pre>
     * a map of substitutions to make
     * </pre>
     *
     * <code>map&lt;string, string&gt; substitutions = 3;</code>
     */

    public java.lang.String getSubstitutionsOrDefault(
        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 =
          internalGetSubstitutions().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * a map of substitutions to make
     * </pre>
     *
     * <code>map&lt;string, string&gt; substitutions = 3;</code>
     */

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

    public static final int EXECUTABLE_FIELD_NUMBER = 4;
    private boolean executable_;
    /**
     * <pre>
     * Whether to set executable flag
     * </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 {
      if (!getPathBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, path_);
      }
      if (!getTemplateBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, template_);
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetSubstitutions(),
          SubstitutionsDefaultEntryHolder.defaultEntry,
          3);
      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;
      if (!getPathBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, path_);
      }
      if (!getTemplateBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, template_);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetSubstitutions().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        substitutions__ = SubstitutionsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, substitutions__);
      }
      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.TemplateEvent)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent other = (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent) obj;

      boolean result = true;
      result = result && getPath()
          .equals(other.getPath());
      result = result && getTemplate()
          .equals(other.getTemplate());
      result = result && internalGetSubstitutions().equals(
          other.internalGetSubstitutions());
      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();
      hash = (37 * hash) + PATH_FIELD_NUMBER;
      hash = (53 * hash) + getPath().hashCode();
      hash = (37 * hash) + TEMPLATE_FIELD_NUMBER;
      hash = (53 * hash) + getTemplate().hashCode();
      if (!internalGetSubstitutions().getMap().isEmpty()) {
        hash = (37 * hash) + SUBSTITUTIONS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetSubstitutions().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.TemplateEvent 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.TemplateEvent 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.TemplateEvent 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.TemplateEvent 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.TemplateEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent 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.TemplateEvent 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.TemplateEvent 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.TemplateEvent 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.TemplateEvent 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.TemplateEvent 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.TemplateEvent 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.TemplateEvent 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 "template" event in repository_ctx.
     * </pre>
     *
     * Protobuf type {@code workspace_log.TemplateEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:workspace_log.TemplateEvent)
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_TemplateEvent_descriptor;
      }

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

      // Construct using com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent.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();
        path_ = "";

        template_ = "";

        internalGetMutableSubstitutions().clear();
        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_TemplateEvent_descriptor;
      }

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent buildPartial() {
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent result = new com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        result.path_ = path_;
        result.template_ = template_;
        result.substitutions_ = internalGetSubstitutions();
        result.substitutions_.makeImmutable();
        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.TemplateEvent) {
          return mergeFrom((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent other) {
        if (other == com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent.getDefaultInstance()) return this;
        if (!other.getPath().isEmpty()) {
          path_ = other.path_;
          onChanged();
        }
        if (!other.getTemplate().isEmpty()) {
          template_ = other.template_;
          onChanged();
        }
        internalGetMutableSubstitutions().mergeFrom(
            other.internalGetSubstitutions());
        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.TemplateEvent parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object path_ = "";
      /**
       * <pre>
       * path of the file to create
       * </pre>
       *
       * <code>string path = 1;</code>
       */
      public java.lang.String getPath() {
        java.lang.Object ref = path_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          path_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * path of the file to create
       * </pre>
       *
       * <code>string path = 1;</code>
       */
      public com.google.protobuf.ByteString
          getPathBytes() {
        java.lang.Object ref = path_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          path_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * path of the file to create
       * </pre>
       *
       * <code>string path = 1;</code>
       */
      public Builder setPath(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        path_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path of the file to create
       * </pre>
       *
       * <code>string path = 1;</code>
       */
      public Builder clearPath() {
        
        path_ = getDefaultInstance().getPath();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path of the file to create
       * </pre>
       *
       * <code>string path = 1;</code>
       */
      public Builder setPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        path_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object template_ = "";
      /**
       * <pre>
       * path to the template file
       * </pre>
       *
       * <code>string template = 2;</code>
       */
      public java.lang.String getTemplate() {
        java.lang.Object ref = template_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          template_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * path to the template file
       * </pre>
       *
       * <code>string template = 2;</code>
       */
      public com.google.protobuf.ByteString
          getTemplateBytes() {
        java.lang.Object ref = template_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          template_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * path to the template file
       * </pre>
       *
       * <code>string template = 2;</code>
       */
      public Builder setTemplate(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        template_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path to the template file
       * </pre>
       *
       * <code>string template = 2;</code>
       */
      public Builder clearTemplate() {
        
        template_ = getDefaultInstance().getTemplate();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * path to the template file
       * </pre>
       *
       * <code>string template = 2;</code>
       */
      public Builder setTemplateBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        template_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> substitutions_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetSubstitutions() {
        if (substitutions_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              SubstitutionsDefaultEntryHolder.defaultEntry);
        }
        return substitutions_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetMutableSubstitutions() {
        onChanged();;
        if (substitutions_ == null) {
          substitutions_ = com.google.protobuf.MapField.newMapField(
              SubstitutionsDefaultEntryHolder.defaultEntry);
        }
        if (!substitutions_.isMutable()) {
          substitutions_ = substitutions_.copy();
        }
        return substitutions_;
      }

      public int getSubstitutionsCount() {
        return internalGetSubstitutions().getMap().size();
      }
      /**
       * <pre>
       * a map of substitutions to make
       * </pre>
       *
       * <code>map&lt;string, string&gt; substitutions = 3;</code>
       */

      public boolean containsSubstitutions(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        return internalGetSubstitutions().getMap().containsKey(key);
      }
      /**
       * Use {@link #getSubstitutionsMap()} instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getSubstitutions() {
        return getSubstitutionsMap();
      }
      /**
       * <pre>
       * a map of substitutions to make
       * </pre>
       *
       * <code>map&lt;string, string&gt; substitutions = 3;</code>
       */

      public java.util.Map<java.lang.String, java.lang.String> getSubstitutionsMap() {
        return internalGetSubstitutions().getMap();
      }
      /**
       * <pre>
       * a map of substitutions to make
       * </pre>
       *
       * <code>map&lt;string, string&gt; substitutions = 3;</code>
       */

      public java.lang.String getSubstitutionsOrDefault(
          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 =
            internalGetSubstitutions().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * a map of substitutions to make
       * </pre>
       *
       * <code>map&lt;string, string&gt; substitutions = 3;</code>
       */

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

      public Builder clearSubstitutions() {
        internalGetMutableSubstitutions().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * a map of substitutions to make
       * </pre>
       *
       * <code>map&lt;string, string&gt; substitutions = 3;</code>
       */

      public Builder removeSubstitutions(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableSubstitutions().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
      getMutableSubstitutions() {
        return internalGetMutableSubstitutions().getMutableMap();
      }
      /**
       * <pre>
       * a map of substitutions to make
       * </pre>
       *
       * <code>map&lt;string, string&gt; substitutions = 3;</code>
       */
      public Builder putSubstitutions(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        if (value == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableSubstitutions().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <pre>
       * a map of substitutions to make
       * </pre>
       *
       * <code>map&lt;string, string&gt; substitutions = 3;</code>
       */

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

      private boolean executable_ ;
      /**
       * <pre>
       * Whether to set executable flag
       * </pre>
       *
       * <code>bool executable = 4;</code>
       */
      public boolean getExecutable() {
        return executable_;
      }
      /**
       * <pre>
       * Whether to set executable flag
       * </pre>
       *
       * <code>bool executable = 4;</code>
       */
      public Builder setExecutable(boolean value) {
        
        executable_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether to set executable flag
       * </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.TemplateEvent)
    }

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

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

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

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

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

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

  }

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

    /**
     * <pre>
     * Program to find in the path
     * </pre>
     *
     * <code>string program = 1;</code>
     */
    java.lang.String getProgram();
    /**
     * <pre>
     * Program to find in the path
     * </pre>
     *
     * <code>string program = 1;</code>
     */
    com.google.protobuf.ByteString
        getProgramBytes();
  }
  /**
   * <pre>
   * Information on "which" event in repository_ctx.
   * </pre>
   *
   * Protobuf type {@code workspace_log.WhichEvent}
   */
  public  static final class WhichEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:workspace_log.WhichEvent)
      WhichEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use WhichEvent.newBuilder() to construct.
    private WhichEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private WhichEvent() {
      program_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private WhichEvent(
        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();

              program_ = s;
              break;
            }
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_WhichEvent_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_WhichEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.class, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.Builder.class);
    }

    public static final int PROGRAM_FIELD_NUMBER = 1;
    private volatile java.lang.Object program_;
    /**
     * <pre>
     * Program to find in the path
     * </pre>
     *
     * <code>string program = 1;</code>
     */
    public java.lang.String getProgram() {
      java.lang.Object ref = program_;
      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();
        program_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Program to find in the path
     * </pre>
     *
     * <code>string program = 1;</code>
     */
    public com.google.protobuf.ByteString
        getProgramBytes() {
      java.lang.Object ref = program_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        program_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      if (!getProgramBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, program_);
      }
      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.WhichEvent)) {
        return super.equals(obj);
      }
      com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent other = (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent) obj;

      boolean result = true;
      result = result && getProgram()
          .equals(other.getProgram());
      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) + PROGRAM_FIELD_NUMBER;
      hash = (53 * hash) + getProgram().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent 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.WhichEvent 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.WhichEvent 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.WhichEvent 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.WhichEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent 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.WhichEvent 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.WhichEvent 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.WhichEvent 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.WhichEvent 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.WhichEvent 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.WhichEvent 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.WhichEvent 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 "which" event in repository_ctx.
     * </pre>
     *
     * Protobuf type {@code workspace_log.WhichEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:workspace_log.WhichEvent)
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.internal_static_workspace_log_WhichEvent_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_WhichEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.class, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.Builder.class);
      }

      // Construct using com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.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();
        program_ = "";

        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_WhichEvent_descriptor;
      }

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

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

      @java.lang.Override
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent buildPartial() {
        com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent result = new com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent(this);
        result.program_ = program_;
        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.WhichEvent) {
          return mergeFrom((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent other) {
        if (other == com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.getDefaultInstance()) return this;
        if (!other.getProgram().isEmpty()) {
          program_ = other.program_;
          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.WhichEvent parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object program_ = "";
      /**
       * <pre>
       * Program to find in the path
       * </pre>
       *
       * <code>string program = 1;</code>
       */
      public java.lang.String getProgram() {
        java.lang.Object ref = program_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          program_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Program to find in the path
       * </pre>
       *
       * <code>string program = 1;</code>
       */
      public com.google.protobuf.ByteString
          getProgramBytes() {
        java.lang.Object ref = program_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          program_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Program to find in the path
       * </pre>
       *
       * <code>string program = 1;</code>
       */
      public Builder setProgram(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        program_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Program to find in the path
       * </pre>
       *
       * <code>string program = 1;</code>
       */
      public Builder clearProgram() {
        
        program_ = getDefaultInstance().getProgram();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Program to find in the path
       * </pre>
       *
       * <code>string program = 1;</code>
       */
      public Builder setProgramBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        program_ = 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.WhichEvent)
    }

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

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

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

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

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

    @java.lang.Override
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent 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();

    /**
     * <code>.workspace_log.FileEvent file_event = 6;</code>
     */
    boolean hasFileEvent();
    /**
     * <code>.workspace_log.FileEvent file_event = 6;</code>
     */
    com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent getFileEvent();
    /**
     * <code>.workspace_log.FileEvent file_event = 6;</code>
     */
    com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEventOrBuilder getFileEventOrBuilder();

    /**
     * <code>.workspace_log.OsEvent os_event = 7;</code>
     */
    boolean hasOsEvent();
    /**
     * <code>.workspace_log.OsEvent os_event = 7;</code>
     */
    com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent getOsEvent();
    /**
     * <code>.workspace_log.OsEvent os_event = 7;</code>
     */
    com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEventOrBuilder getOsEventOrBuilder();

    /**
     * <code>.workspace_log.SymlinkEvent symlink_event = 8;</code>
     */
    boolean hasSymlinkEvent();
    /**
     * <code>.workspace_log.SymlinkEvent symlink_event = 8;</code>
     */
    com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent getSymlinkEvent();
    /**
     * <code>.workspace_log.SymlinkEvent symlink_event = 8;</code>
     */
    com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEventOrBuilder getSymlinkEventOrBuilder();

    /**
     * <code>.workspace_log.TemplateEvent template_event = 9;</code>
     */
    boolean hasTemplateEvent();
    /**
     * <code>.workspace_log.TemplateEvent template_event = 9;</code>
     */
    com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent getTemplateEvent();
    /**
     * <code>.workspace_log.TemplateEvent template_event = 9;</code>
     */
    com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEventOrBuilder getTemplateEventOrBuilder();

    /**
     * <code>.workspace_log.WhichEvent which_event = 10;</code>
     */
    boolean hasWhichEvent();
    /**
     * <code>.workspace_log.WhichEvent which_event = 10;</code>
     */
    com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent getWhichEvent();
    /**
     * <code>.workspace_log.WhichEvent which_event = 10;</code>
     */
    com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEventOrBuilder getWhichEventOrBuilder();

    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;
            }
            case 50: {
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.Builder subBuilder = null;
              if (eventCase_ == 6) {
                subBuilder = ((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent) event_).toBuilder();
              }
              event_ =
                  input.readMessage(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent) event_);
                event_ = subBuilder.buildPartial();
              }
              eventCase_ = 6;
              break;
            }
            case 58: {
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.Builder subBuilder = null;
              if (eventCase_ == 7) {
                subBuilder = ((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent) event_).toBuilder();
              }
              event_ =
                  input.readMessage(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent) event_);
                event_ = subBuilder.buildPartial();
              }
              eventCase_ = 7;
              break;
            }
            case 66: {
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.Builder subBuilder = null;
              if (eventCase_ == 8) {
                subBuilder = ((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent) event_).toBuilder();
              }
              event_ =
                  input.readMessage(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent) event_);
                event_ = subBuilder.buildPartial();
              }
              eventCase_ = 8;
              break;
            }
            case 74: {
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent.Builder subBuilder = null;
              if (eventCase_ == 9) {
                subBuilder = ((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent) event_).toBuilder();
              }
              event_ =
                  input.readMessage(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent) event_);
                event_ = subBuilder.buildPartial();
              }
              eventCase_ = 9;
              break;
            }
            case 82: {
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.Builder subBuilder = null;
              if (eventCase_ == 10) {
                subBuilder = ((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent) event_).toBuilder();
              }
              event_ =
                  input.readMessage(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent) event_);
                event_ = subBuilder.buildPartial();
              }
              eventCase_ = 10;
              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),
      FILE_EVENT(6),
      OS_EVENT(7),
      SYMLINK_EVENT(8),
      TEMPLATE_EVENT(9),
      WHICH_EVENT(10),
      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 6: return FILE_EVENT;
          case 7: return OS_EVENT;
          case 8: return SYMLINK_EVENT;
          case 9: return TEMPLATE_EVENT;
          case 10: return WHICH_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();
    }

    public static final int FILE_EVENT_FIELD_NUMBER = 6;
    /**
     * <code>.workspace_log.FileEvent file_event = 6;</code>
     */
    public boolean hasFileEvent() {
      return eventCase_ == 6;
    }
    /**
     * <code>.workspace_log.FileEvent file_event = 6;</code>
     */
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent getFileEvent() {
      if (eventCase_ == 6) {
         return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent) event_;
      }
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.getDefaultInstance();
    }
    /**
     * <code>.workspace_log.FileEvent file_event = 6;</code>
     */
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEventOrBuilder getFileEventOrBuilder() {
      if (eventCase_ == 6) {
         return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent) event_;
      }
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.getDefaultInstance();
    }

    public static final int OS_EVENT_FIELD_NUMBER = 7;
    /**
     * <code>.workspace_log.OsEvent os_event = 7;</code>
     */
    public boolean hasOsEvent() {
      return eventCase_ == 7;
    }
    /**
     * <code>.workspace_log.OsEvent os_event = 7;</code>
     */
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent getOsEvent() {
      if (eventCase_ == 7) {
         return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent) event_;
      }
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.getDefaultInstance();
    }
    /**
     * <code>.workspace_log.OsEvent os_event = 7;</code>
     */
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEventOrBuilder getOsEventOrBuilder() {
      if (eventCase_ == 7) {
         return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent) event_;
      }
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.getDefaultInstance();
    }

    public static final int SYMLINK_EVENT_FIELD_NUMBER = 8;
    /**
     * <code>.workspace_log.SymlinkEvent symlink_event = 8;</code>
     */
    public boolean hasSymlinkEvent() {
      return eventCase_ == 8;
    }
    /**
     * <code>.workspace_log.SymlinkEvent symlink_event = 8;</code>
     */
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent getSymlinkEvent() {
      if (eventCase_ == 8) {
         return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent) event_;
      }
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.getDefaultInstance();
    }
    /**
     * <code>.workspace_log.SymlinkEvent symlink_event = 8;</code>
     */
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEventOrBuilder getSymlinkEventOrBuilder() {
      if (eventCase_ == 8) {
         return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent) event_;
      }
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.getDefaultInstance();
    }

    public static final int TEMPLATE_EVENT_FIELD_NUMBER = 9;
    /**
     * <code>.workspace_log.TemplateEvent template_event = 9;</code>
     */
    public boolean hasTemplateEvent() {
      return eventCase_ == 9;
    }
    /**
     * <code>.workspace_log.TemplateEvent template_event = 9;</code>
     */
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent getTemplateEvent() {
      if (eventCase_ == 9) {
         return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent) event_;
      }
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent.getDefaultInstance();
    }
    /**
     * <code>.workspace_log.TemplateEvent template_event = 9;</code>
     */
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEventOrBuilder getTemplateEventOrBuilder() {
      if (eventCase_ == 9) {
         return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent) event_;
      }
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent.getDefaultInstance();
    }

    public static final int WHICH_EVENT_FIELD_NUMBER = 10;
    /**
     * <code>.workspace_log.WhichEvent which_event = 10;</code>
     */
    public boolean hasWhichEvent() {
      return eventCase_ == 10;
    }
    /**
     * <code>.workspace_log.WhichEvent which_event = 10;</code>
     */
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent getWhichEvent() {
      if (eventCase_ == 10) {
         return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent) event_;
      }
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.getDefaultInstance();
    }
    /**
     * <code>.workspace_log.WhichEvent which_event = 10;</code>
     */
    public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEventOrBuilder getWhichEventOrBuilder() {
      if (eventCase_ == 10) {
         return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent) event_;
      }
      return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.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_);
      }
      if (eventCase_ == 6) {
        output.writeMessage(6, (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent) event_);
      }
      if (eventCase_ == 7) {
        output.writeMessage(7, (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent) event_);
      }
      if (eventCase_ == 8) {
        output.writeMessage(8, (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent) event_);
      }
      if (eventCase_ == 9) {
        output.writeMessage(9, (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent) event_);
      }
      if (eventCase_ == 10) {
        output.writeMessage(10, (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent) 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_);
      }
      if (eventCase_ == 6) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent) event_);
      }
      if (eventCase_ == 7) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent) event_);
      }
      if (eventCase_ == 8) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent) event_);
      }
      if (eventCase_ == 9) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent) event_);
      }
      if (eventCase_ == 10) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent) 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 6:
          result = result && getFileEvent()
              .equals(other.getFileEvent());
          break;
        case 7:
          result = result && getOsEvent()
              .equals(other.getOsEvent());
          break;
        case 8:
          result = result && getSymlinkEvent()
              .equals(other.getSymlinkEvent());
          break;
        case 9:
          result = result && getTemplateEvent()
              .equals(other.getTemplateEvent());
          break;
        case 10:
          result = result && getWhichEvent()
              .equals(other.getWhichEvent());
          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 6:
          hash = (37 * hash) + FILE_EVENT_FIELD_NUMBER;
          hash = (53 * hash) + getFileEvent().hashCode();
          break;
        case 7:
          hash = (37 * hash) + OS_EVENT_FIELD_NUMBER;
          hash = (53 * hash) + getOsEvent().hashCode();
          break;
        case 8:
          hash = (37 * hash) + SYMLINK_EVENT_FIELD_NUMBER;
          hash = (53 * hash) + getSymlinkEvent().hashCode();
          break;
        case 9:
          hash = (37 * hash) + TEMPLATE_EVENT_FIELD_NUMBER;
          hash = (53 * hash) + getTemplateEvent().hashCode();
          break;
        case 10:
          hash = (37 * hash) + WHICH_EVENT_FIELD_NUMBER;
          hash = (53 * hash) + getWhichEvent().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();
          }
        }
        if (eventCase_ == 6) {
          if (fileEventBuilder_ == null) {
            result.event_ = event_;
          } else {
            result.event_ = fileEventBuilder_.build();
          }
        }
        if (eventCase_ == 7) {
          if (osEventBuilder_ == null) {
            result.event_ = event_;
          } else {
            result.event_ = osEventBuilder_.build();
          }
        }
        if (eventCase_ == 8) {
          if (symlinkEventBuilder_ == null) {
            result.event_ = event_;
          } else {
            result.event_ = symlinkEventBuilder_.build();
          }
        }
        if (eventCase_ == 9) {
          if (templateEventBuilder_ == null) {
            result.event_ = event_;
          } else {
            result.event_ = templateEventBuilder_.build();
          }
        }
        if (eventCase_ == 10) {
          if (whichEventBuilder_ == null) {
            result.event_ = event_;
          } else {
            result.event_ = whichEventBuilder_.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 FILE_EVENT: {
            mergeFileEvent(other.getFileEvent());
            break;
          }
          case OS_EVENT: {
            mergeOsEvent(other.getOsEvent());
            break;
          }
          case SYMLINK_EVENT: {
            mergeSymlinkEvent(other.getSymlinkEvent());
            break;
          }
          case TEMPLATE_EVENT: {
            mergeTemplateEvent(other.getTemplateEvent());
            break;
          }
          case WHICH_EVENT: {
            mergeWhichEvent(other.getWhichEvent());
            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_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEventOrBuilder> fileEventBuilder_;
      /**
       * <code>.workspace_log.FileEvent file_event = 6;</code>
       */
      public boolean hasFileEvent() {
        return eventCase_ == 6;
      }
      /**
       * <code>.workspace_log.FileEvent file_event = 6;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent getFileEvent() {
        if (fileEventBuilder_ == null) {
          if (eventCase_ == 6) {
            return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent) event_;
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.getDefaultInstance();
        } else {
          if (eventCase_ == 6) {
            return fileEventBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.getDefaultInstance();
        }
      }
      /**
       * <code>.workspace_log.FileEvent file_event = 6;</code>
       */
      public Builder setFileEvent(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent value) {
        if (fileEventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          event_ = value;
          onChanged();
        } else {
          fileEventBuilder_.setMessage(value);
        }
        eventCase_ = 6;
        return this;
      }
      /**
       * <code>.workspace_log.FileEvent file_event = 6;</code>
       */
      public Builder setFileEvent(
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.Builder builderForValue) {
        if (fileEventBuilder_ == null) {
          event_ = builderForValue.build();
          onChanged();
        } else {
          fileEventBuilder_.setMessage(builderForValue.build());
        }
        eventCase_ = 6;
        return this;
      }
      /**
       * <code>.workspace_log.FileEvent file_event = 6;</code>
       */
      public Builder mergeFileEvent(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent value) {
        if (fileEventBuilder_ == null) {
          if (eventCase_ == 6 &&
              event_ != com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.getDefaultInstance()) {
            event_ = com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.newBuilder((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent) event_)
                .mergeFrom(value).buildPartial();
          } else {
            event_ = value;
          }
          onChanged();
        } else {
          if (eventCase_ == 6) {
            fileEventBuilder_.mergeFrom(value);
          }
          fileEventBuilder_.setMessage(value);
        }
        eventCase_ = 6;
        return this;
      }
      /**
       * <code>.workspace_log.FileEvent file_event = 6;</code>
       */
      public Builder clearFileEvent() {
        if (fileEventBuilder_ == null) {
          if (eventCase_ == 6) {
            eventCase_ = 0;
            event_ = null;
            onChanged();
          }
        } else {
          if (eventCase_ == 6) {
            eventCase_ = 0;
            event_ = null;
          }
          fileEventBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.workspace_log.FileEvent file_event = 6;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.Builder getFileEventBuilder() {
        return getFileEventFieldBuilder().getBuilder();
      }
      /**
       * <code>.workspace_log.FileEvent file_event = 6;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEventOrBuilder getFileEventOrBuilder() {
        if ((eventCase_ == 6) && (fileEventBuilder_ != null)) {
          return fileEventBuilder_.getMessageOrBuilder();
        } else {
          if (eventCase_ == 6) {
            return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent) event_;
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.getDefaultInstance();
        }
      }
      /**
       * <code>.workspace_log.FileEvent file_event = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEventOrBuilder> 
          getFileEventFieldBuilder() {
        if (fileEventBuilder_ == null) {
          if (!(eventCase_ == 6)) {
            event_ = com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.getDefaultInstance();
          }
          fileEventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEventOrBuilder>(
                  (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.FileEvent) event_,
                  getParentForChildren(),
                  isClean());
          event_ = null;
        }
        eventCase_ = 6;
        onChanged();;
        return fileEventBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEventOrBuilder> osEventBuilder_;
      /**
       * <code>.workspace_log.OsEvent os_event = 7;</code>
       */
      public boolean hasOsEvent() {
        return eventCase_ == 7;
      }
      /**
       * <code>.workspace_log.OsEvent os_event = 7;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent getOsEvent() {
        if (osEventBuilder_ == null) {
          if (eventCase_ == 7) {
            return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent) event_;
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.getDefaultInstance();
        } else {
          if (eventCase_ == 7) {
            return osEventBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.getDefaultInstance();
        }
      }
      /**
       * <code>.workspace_log.OsEvent os_event = 7;</code>
       */
      public Builder setOsEvent(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent value) {
        if (osEventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          event_ = value;
          onChanged();
        } else {
          osEventBuilder_.setMessage(value);
        }
        eventCase_ = 7;
        return this;
      }
      /**
       * <code>.workspace_log.OsEvent os_event = 7;</code>
       */
      public Builder setOsEvent(
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.Builder builderForValue) {
        if (osEventBuilder_ == null) {
          event_ = builderForValue.build();
          onChanged();
        } else {
          osEventBuilder_.setMessage(builderForValue.build());
        }
        eventCase_ = 7;
        return this;
      }
      /**
       * <code>.workspace_log.OsEvent os_event = 7;</code>
       */
      public Builder mergeOsEvent(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent value) {
        if (osEventBuilder_ == null) {
          if (eventCase_ == 7 &&
              event_ != com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.getDefaultInstance()) {
            event_ = com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.newBuilder((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent) event_)
                .mergeFrom(value).buildPartial();
          } else {
            event_ = value;
          }
          onChanged();
        } else {
          if (eventCase_ == 7) {
            osEventBuilder_.mergeFrom(value);
          }
          osEventBuilder_.setMessage(value);
        }
        eventCase_ = 7;
        return this;
      }
      /**
       * <code>.workspace_log.OsEvent os_event = 7;</code>
       */
      public Builder clearOsEvent() {
        if (osEventBuilder_ == null) {
          if (eventCase_ == 7) {
            eventCase_ = 0;
            event_ = null;
            onChanged();
          }
        } else {
          if (eventCase_ == 7) {
            eventCase_ = 0;
            event_ = null;
          }
          osEventBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.workspace_log.OsEvent os_event = 7;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.Builder getOsEventBuilder() {
        return getOsEventFieldBuilder().getBuilder();
      }
      /**
       * <code>.workspace_log.OsEvent os_event = 7;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEventOrBuilder getOsEventOrBuilder() {
        if ((eventCase_ == 7) && (osEventBuilder_ != null)) {
          return osEventBuilder_.getMessageOrBuilder();
        } else {
          if (eventCase_ == 7) {
            return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent) event_;
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.getDefaultInstance();
        }
      }
      /**
       * <code>.workspace_log.OsEvent os_event = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEventOrBuilder> 
          getOsEventFieldBuilder() {
        if (osEventBuilder_ == null) {
          if (!(eventCase_ == 7)) {
            event_ = com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.getDefaultInstance();
          }
          osEventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEventOrBuilder>(
                  (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.OsEvent) event_,
                  getParentForChildren(),
                  isClean());
          event_ = null;
        }
        eventCase_ = 7;
        onChanged();;
        return osEventBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEventOrBuilder> symlinkEventBuilder_;
      /**
       * <code>.workspace_log.SymlinkEvent symlink_event = 8;</code>
       */
      public boolean hasSymlinkEvent() {
        return eventCase_ == 8;
      }
      /**
       * <code>.workspace_log.SymlinkEvent symlink_event = 8;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent getSymlinkEvent() {
        if (symlinkEventBuilder_ == null) {
          if (eventCase_ == 8) {
            return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent) event_;
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.getDefaultInstance();
        } else {
          if (eventCase_ == 8) {
            return symlinkEventBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.getDefaultInstance();
        }
      }
      /**
       * <code>.workspace_log.SymlinkEvent symlink_event = 8;</code>
       */
      public Builder setSymlinkEvent(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent value) {
        if (symlinkEventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          event_ = value;
          onChanged();
        } else {
          symlinkEventBuilder_.setMessage(value);
        }
        eventCase_ = 8;
        return this;
      }
      /**
       * <code>.workspace_log.SymlinkEvent symlink_event = 8;</code>
       */
      public Builder setSymlinkEvent(
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.Builder builderForValue) {
        if (symlinkEventBuilder_ == null) {
          event_ = builderForValue.build();
          onChanged();
        } else {
          symlinkEventBuilder_.setMessage(builderForValue.build());
        }
        eventCase_ = 8;
        return this;
      }
      /**
       * <code>.workspace_log.SymlinkEvent symlink_event = 8;</code>
       */
      public Builder mergeSymlinkEvent(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent value) {
        if (symlinkEventBuilder_ == null) {
          if (eventCase_ == 8 &&
              event_ != com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.getDefaultInstance()) {
            event_ = com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.newBuilder((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent) event_)
                .mergeFrom(value).buildPartial();
          } else {
            event_ = value;
          }
          onChanged();
        } else {
          if (eventCase_ == 8) {
            symlinkEventBuilder_.mergeFrom(value);
          }
          symlinkEventBuilder_.setMessage(value);
        }
        eventCase_ = 8;
        return this;
      }
      /**
       * <code>.workspace_log.SymlinkEvent symlink_event = 8;</code>
       */
      public Builder clearSymlinkEvent() {
        if (symlinkEventBuilder_ == null) {
          if (eventCase_ == 8) {
            eventCase_ = 0;
            event_ = null;
            onChanged();
          }
        } else {
          if (eventCase_ == 8) {
            eventCase_ = 0;
            event_ = null;
          }
          symlinkEventBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.workspace_log.SymlinkEvent symlink_event = 8;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.Builder getSymlinkEventBuilder() {
        return getSymlinkEventFieldBuilder().getBuilder();
      }
      /**
       * <code>.workspace_log.SymlinkEvent symlink_event = 8;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEventOrBuilder getSymlinkEventOrBuilder() {
        if ((eventCase_ == 8) && (symlinkEventBuilder_ != null)) {
          return symlinkEventBuilder_.getMessageOrBuilder();
        } else {
          if (eventCase_ == 8) {
            return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent) event_;
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.getDefaultInstance();
        }
      }
      /**
       * <code>.workspace_log.SymlinkEvent symlink_event = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEventOrBuilder> 
          getSymlinkEventFieldBuilder() {
        if (symlinkEventBuilder_ == null) {
          if (!(eventCase_ == 8)) {
            event_ = com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.getDefaultInstance();
          }
          symlinkEventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEventOrBuilder>(
                  (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.SymlinkEvent) event_,
                  getParentForChildren(),
                  isClean());
          event_ = null;
        }
        eventCase_ = 8;
        onChanged();;
        return symlinkEventBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEventOrBuilder> templateEventBuilder_;
      /**
       * <code>.workspace_log.TemplateEvent template_event = 9;</code>
       */
      public boolean hasTemplateEvent() {
        return eventCase_ == 9;
      }
      /**
       * <code>.workspace_log.TemplateEvent template_event = 9;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent getTemplateEvent() {
        if (templateEventBuilder_ == null) {
          if (eventCase_ == 9) {
            return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent) event_;
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent.getDefaultInstance();
        } else {
          if (eventCase_ == 9) {
            return templateEventBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent.getDefaultInstance();
        }
      }
      /**
       * <code>.workspace_log.TemplateEvent template_event = 9;</code>
       */
      public Builder setTemplateEvent(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent value) {
        if (templateEventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          event_ = value;
          onChanged();
        } else {
          templateEventBuilder_.setMessage(value);
        }
        eventCase_ = 9;
        return this;
      }
      /**
       * <code>.workspace_log.TemplateEvent template_event = 9;</code>
       */
      public Builder setTemplateEvent(
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent.Builder builderForValue) {
        if (templateEventBuilder_ == null) {
          event_ = builderForValue.build();
          onChanged();
        } else {
          templateEventBuilder_.setMessage(builderForValue.build());
        }
        eventCase_ = 9;
        return this;
      }
      /**
       * <code>.workspace_log.TemplateEvent template_event = 9;</code>
       */
      public Builder mergeTemplateEvent(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent value) {
        if (templateEventBuilder_ == null) {
          if (eventCase_ == 9 &&
              event_ != com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent.getDefaultInstance()) {
            event_ = com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent.newBuilder((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent) event_)
                .mergeFrom(value).buildPartial();
          } else {
            event_ = value;
          }
          onChanged();
        } else {
          if (eventCase_ == 9) {
            templateEventBuilder_.mergeFrom(value);
          }
          templateEventBuilder_.setMessage(value);
        }
        eventCase_ = 9;
        return this;
      }
      /**
       * <code>.workspace_log.TemplateEvent template_event = 9;</code>
       */
      public Builder clearTemplateEvent() {
        if (templateEventBuilder_ == null) {
          if (eventCase_ == 9) {
            eventCase_ = 0;
            event_ = null;
            onChanged();
          }
        } else {
          if (eventCase_ == 9) {
            eventCase_ = 0;
            event_ = null;
          }
          templateEventBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.workspace_log.TemplateEvent template_event = 9;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent.Builder getTemplateEventBuilder() {
        return getTemplateEventFieldBuilder().getBuilder();
      }
      /**
       * <code>.workspace_log.TemplateEvent template_event = 9;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEventOrBuilder getTemplateEventOrBuilder() {
        if ((eventCase_ == 9) && (templateEventBuilder_ != null)) {
          return templateEventBuilder_.getMessageOrBuilder();
        } else {
          if (eventCase_ == 9) {
            return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent) event_;
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent.getDefaultInstance();
        }
      }
      /**
       * <code>.workspace_log.TemplateEvent template_event = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEventOrBuilder> 
          getTemplateEventFieldBuilder() {
        if (templateEventBuilder_ == null) {
          if (!(eventCase_ == 9)) {
            event_ = com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent.getDefaultInstance();
          }
          templateEventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEventOrBuilder>(
                  (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.TemplateEvent) event_,
                  getParentForChildren(),
                  isClean());
          event_ = null;
        }
        eventCase_ = 9;
        onChanged();;
        return templateEventBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEventOrBuilder> whichEventBuilder_;
      /**
       * <code>.workspace_log.WhichEvent which_event = 10;</code>
       */
      public boolean hasWhichEvent() {
        return eventCase_ == 10;
      }
      /**
       * <code>.workspace_log.WhichEvent which_event = 10;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent getWhichEvent() {
        if (whichEventBuilder_ == null) {
          if (eventCase_ == 10) {
            return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent) event_;
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.getDefaultInstance();
        } else {
          if (eventCase_ == 10) {
            return whichEventBuilder_.getMessage();
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.getDefaultInstance();
        }
      }
      /**
       * <code>.workspace_log.WhichEvent which_event = 10;</code>
       */
      public Builder setWhichEvent(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent value) {
        if (whichEventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          event_ = value;
          onChanged();
        } else {
          whichEventBuilder_.setMessage(value);
        }
        eventCase_ = 10;
        return this;
      }
      /**
       * <code>.workspace_log.WhichEvent which_event = 10;</code>
       */
      public Builder setWhichEvent(
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.Builder builderForValue) {
        if (whichEventBuilder_ == null) {
          event_ = builderForValue.build();
          onChanged();
        } else {
          whichEventBuilder_.setMessage(builderForValue.build());
        }
        eventCase_ = 10;
        return this;
      }
      /**
       * <code>.workspace_log.WhichEvent which_event = 10;</code>
       */
      public Builder mergeWhichEvent(com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent value) {
        if (whichEventBuilder_ == null) {
          if (eventCase_ == 10 &&
              event_ != com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.getDefaultInstance()) {
            event_ = com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.newBuilder((com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent) event_)
                .mergeFrom(value).buildPartial();
          } else {
            event_ = value;
          }
          onChanged();
        } else {
          if (eventCase_ == 10) {
            whichEventBuilder_.mergeFrom(value);
          }
          whichEventBuilder_.setMessage(value);
        }
        eventCase_ = 10;
        return this;
      }
      /**
       * <code>.workspace_log.WhichEvent which_event = 10;</code>
       */
      public Builder clearWhichEvent() {
        if (whichEventBuilder_ == null) {
          if (eventCase_ == 10) {
            eventCase_ = 0;
            event_ = null;
            onChanged();
          }
        } else {
          if (eventCase_ == 10) {
            eventCase_ = 0;
            event_ = null;
          }
          whichEventBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.workspace_log.WhichEvent which_event = 10;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.Builder getWhichEventBuilder() {
        return getWhichEventFieldBuilder().getBuilder();
      }
      /**
       * <code>.workspace_log.WhichEvent which_event = 10;</code>
       */
      public com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEventOrBuilder getWhichEventOrBuilder() {
        if ((eventCase_ == 10) && (whichEventBuilder_ != null)) {
          return whichEventBuilder_.getMessageOrBuilder();
        } else {
          if (eventCase_ == 10) {
            return (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent) event_;
          }
          return com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.getDefaultInstance();
        }
      }
      /**
       * <code>.workspace_log.WhichEvent which_event = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEventOrBuilder> 
          getWhichEventFieldBuilder() {
        if (whichEventBuilder_ == null) {
          if (!(eventCase_ == 10)) {
            event_ = com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.getDefaultInstance();
          }
          whichEventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent.Builder, com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEventOrBuilder>(
                  (com.google.devtools.build.lib.bazel.debug.proto.WorkspaceLogProtos.WhichEvent) event_,
                  getParentForChildren(),
                  isClean());
          event_ = null;
        }
        eventCase_ = 10;
        onChanged();;
        return whichEventBuilder_;
      }
      @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_FileEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_workspace_log_FileEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_workspace_log_OsEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_workspace_log_OsEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_workspace_log_SymlinkEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_workspace_log_SymlinkEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_workspace_log_TemplateEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_workspace_log_TemplateEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_workspace_log_TemplateEvent_SubstitutionsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_workspace_log_TemplateEvent_SubstitutionsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_workspace_log_WhichEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_workspace_log_WhichEvent_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\">\n\tFileEvent\022\014\n\004" +
      "path\030\001 \001(\t\022\017\n\007content\030\002 \001(\t\022\022\n\nexecutabl" +
      "e\030\003 \001(\010\"\t\n\007OsEvent\"(\n\014SymlinkEvent\022\014\n\004fr" +
      "om\030\001 \001(\t\022\n\n\002to\030\002 \001(\t\"\301\001\n\rTemplateEvent\022\014" +
      "\n\004path\030\001 \001(\t\022\020\n\010template\030\002 \001(\t\022F\n\rsubsti" +
      "tutions\030\003 \003(\0132/.workspace_log.TemplateEv" +
      "ent.SubstitutionsEntry\022\022\n\nexecutable\030\004 \001" +
      "(\010\0324\n\022SubstitutionsEntry\022\013\n\003key\030\001 \001(\t\022\r\n" +
      "\005value\030\002 \001(\t:\0028\001\"\035\n\nWhichEvent\022\017\n\007progra" +
      "m\030\001 \001(\t\"\361\003\n\016WorkspaceEvent\022\020\n\010location\030\001" +
      " \001(\t\022\014\n\004rule\030\002 \001(\t\0224\n\rexecute_event\030\003 \001(" +
      "\0132\033.workspace_log.ExecuteEventH\000\0226\n\016down" +
      "load_event\030\004 \001(\0132\034.workspace_log.Downloa" +
      "dEventH\000\022L\n\032download_and_extract_event\030\005" +
      " \001(\0132&.workspace_log.DownloadAndExtractE" +
      "ventH\000\022.\n\nfile_event\030\006 \001(\0132\030.workspace_l" +
      "og.FileEventH\000\022*\n\010os_event\030\007 \001(\0132\026.works" +
      "pace_log.OsEventH\000\0224\n\rsymlink_event\030\010 \001(" +
      "\0132\033.workspace_log.SymlinkEventH\000\0226\n\016temp" +
      "late_event\030\t \001(\0132\034.workspace_log.Templat" +
      "eEventH\000\0220\n\013which_event\030\n \001(\0132\031.workspac" +
      "e_log.WhichEventH\000B\007\n\005eventBE\n/com.googl" +
      "e.devtools.build.lib.bazel.debug.protoB\022" +
      "WorkspaceLogProtosb\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_FileEvent_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_workspace_log_FileEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_workspace_log_FileEvent_descriptor,
        new java.lang.String[] { "Path", "Content", "Executable", });
    internal_static_workspace_log_OsEvent_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_workspace_log_OsEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_workspace_log_OsEvent_descriptor,
        new java.lang.String[] { });
    internal_static_workspace_log_SymlinkEvent_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_workspace_log_SymlinkEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_workspace_log_SymlinkEvent_descriptor,
        new java.lang.String[] { "From", "To", });
    internal_static_workspace_log_TemplateEvent_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_workspace_log_TemplateEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_workspace_log_TemplateEvent_descriptor,
        new java.lang.String[] { "Path", "Template", "Substitutions", "Executable", });
    internal_static_workspace_log_TemplateEvent_SubstitutionsEntry_descriptor =
      internal_static_workspace_log_TemplateEvent_descriptor.getNestedTypes().get(0);
    internal_static_workspace_log_TemplateEvent_SubstitutionsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_workspace_log_TemplateEvent_SubstitutionsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_workspace_log_WhichEvent_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_workspace_log_WhichEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_workspace_log_WhichEvent_descriptor,
        new java.lang.String[] { "Program", });
    internal_static_workspace_log_WorkspaceEvent_descriptor =
      getDescriptor().getMessageTypes().get(8);
    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", "FileEvent", "OsEvent", "SymlinkEvent", "TemplateEvent", "WhichEvent", "Event", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
