// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: shared/acl.proto

package alluxio.proto.shared;

public final class Acl {
  private Acl() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  /**
   * Protobuf enum {@code alluxio.proto.shared.AclAction}
   *
   * <pre>
   * next available id: 3
   * </pre>
   */
  public enum AclAction
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>READ = 0;</code>
     */
    READ(0, 0),
    /**
     * <code>WRITE = 1;</code>
     */
    WRITE(1, 1),
    /**
     * <code>EXECUTE = 2;</code>
     */
    EXECUTE(2, 2),
    ;

    /**
     * <code>READ = 0;</code>
     */
    public static final int READ_VALUE = 0;
    /**
     * <code>WRITE = 1;</code>
     */
    public static final int WRITE_VALUE = 1;
    /**
     * <code>EXECUTE = 2;</code>
     */
    public static final int EXECUTE_VALUE = 2;


    public final int getNumber() { return value; }

    public static AclAction valueOf(int value) {
      switch (value) {
        case 0: return READ;
        case 1: return WRITE;
        case 2: return EXECUTE;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(index);
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return alluxio.proto.shared.Acl.getDescriptor().getEnumTypes().get(0);
    }

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

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

    private final int index;
    private final int value;

    private AclAction(int index, int value) {
      this.index = index;
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:alluxio.proto.shared.AclAction)
  }

  /**
   * Protobuf enum {@code alluxio.proto.shared.AclEntryType}
   *
   * <pre>
   * next available id: 6
   * </pre>
   */
  public enum AclEntryType
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>OWNER = 0;</code>
     */
    OWNER(0, 0),
    /**
     * <code>NAMED_USER = 1;</code>
     */
    NAMED_USER(1, 1),
    /**
     * <code>OWNING_GROUP = 2;</code>
     */
    OWNING_GROUP(2, 2),
    /**
     * <code>NAMED_GROUP = 3;</code>
     */
    NAMED_GROUP(3, 3),
    /**
     * <code>MASK = 4;</code>
     */
    MASK(4, 4),
    /**
     * <code>OTHER = 5;</code>
     */
    OTHER(5, 5),
    ;

    /**
     * <code>OWNER = 0;</code>
     */
    public static final int OWNER_VALUE = 0;
    /**
     * <code>NAMED_USER = 1;</code>
     */
    public static final int NAMED_USER_VALUE = 1;
    /**
     * <code>OWNING_GROUP = 2;</code>
     */
    public static final int OWNING_GROUP_VALUE = 2;
    /**
     * <code>NAMED_GROUP = 3;</code>
     */
    public static final int NAMED_GROUP_VALUE = 3;
    /**
     * <code>MASK = 4;</code>
     */
    public static final int MASK_VALUE = 4;
    /**
     * <code>OTHER = 5;</code>
     */
    public static final int OTHER_VALUE = 5;


    public final int getNumber() { return value; }

    public static AclEntryType valueOf(int value) {
      switch (value) {
        case 0: return OWNER;
        case 1: return NAMED_USER;
        case 2: return OWNING_GROUP;
        case 3: return NAMED_GROUP;
        case 4: return MASK;
        case 5: return OTHER;
        default: return null;
      }
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(index);
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return alluxio.proto.shared.Acl.getDescriptor().getEnumTypes().get(1);
    }

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

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

    private final int index;
    private final int value;

    private AclEntryType(int index, int value) {
      this.index = index;
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:alluxio.proto.shared.AclEntryType)
  }

  public interface AclActionsOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // repeated .alluxio.proto.shared.AclAction actions = 1;
    /**
     * <code>repeated .alluxio.proto.shared.AclAction actions = 1;</code>
     */
    java.util.List<alluxio.proto.shared.Acl.AclAction> getActionsList();
    /**
     * <code>repeated .alluxio.proto.shared.AclAction actions = 1;</code>
     */
    int getActionsCount();
    /**
     * <code>repeated .alluxio.proto.shared.AclAction actions = 1;</code>
     */
    alluxio.proto.shared.Acl.AclAction getActions(int index);
  }
  /**
   * Protobuf type {@code alluxio.proto.shared.AclActions}
   *
   * <pre>
   * next available id: 2
   * </pre>
   */
  public static final class AclActions extends
      com.google.protobuf.GeneratedMessage
      implements AclActionsOrBuilder {
    // Use AclActions.newBuilder() to construct.
    private AclActions(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private AclActions(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final AclActions defaultInstance;
    public static AclActions getDefaultInstance() {
      return defaultInstance;
    }

    public AclActions getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private AclActions(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              alluxio.proto.shared.Acl.AclAction value = alluxio.proto.shared.Acl.AclAction.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                  actions_ = new java.util.ArrayList<alluxio.proto.shared.Acl.AclAction>();
                  mutable_bitField0_ |= 0x00000001;
                }
                actions_.add(value);
              }
              break;
            }
            case 10: {
              int length = input.readRawVarint32();
              int oldLimit = input.pushLimit(length);
              while(input.getBytesUntilLimit() > 0) {
                int rawValue = input.readEnum();
                alluxio.proto.shared.Acl.AclAction value = alluxio.proto.shared.Acl.AclAction.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                    actions_ = new java.util.ArrayList<alluxio.proto.shared.Acl.AclAction>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  actions_.add(value);
                }
              }
              input.popLimit(oldLimit);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          actions_ = java.util.Collections.unmodifiableList(actions_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return alluxio.proto.shared.Acl.internal_static_alluxio_proto_shared_AclActions_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return alluxio.proto.shared.Acl.internal_static_alluxio_proto_shared_AclActions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              alluxio.proto.shared.Acl.AclActions.class, alluxio.proto.shared.Acl.AclActions.Builder.class);
    }

    public static com.google.protobuf.Parser<AclActions> PARSER =
        new com.google.protobuf.AbstractParser<AclActions>() {
      public AclActions parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new AclActions(input, extensionRegistry);
      }
    };

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

    // repeated .alluxio.proto.shared.AclAction actions = 1;
    public static final int ACTIONS_FIELD_NUMBER = 1;
    private java.util.List<alluxio.proto.shared.Acl.AclAction> actions_;
    /**
     * <code>repeated .alluxio.proto.shared.AclAction actions = 1;</code>
     */
    public java.util.List<alluxio.proto.shared.Acl.AclAction> getActionsList() {
      return actions_;
    }
    /**
     * <code>repeated .alluxio.proto.shared.AclAction actions = 1;</code>
     */
    public int getActionsCount() {
      return actions_.size();
    }
    /**
     * <code>repeated .alluxio.proto.shared.AclAction actions = 1;</code>
     */
    public alluxio.proto.shared.Acl.AclAction getActions(int index) {
      return actions_.get(index);
    }

    private void initFields() {
      actions_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < actions_.size(); i++) {
        output.writeEnum(1, actions_.get(i).getNumber());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < actions_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeEnumSizeNoTag(actions_.get(i).getNumber());
        }
        size += dataSize;
        size += 1 * actions_.size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static alluxio.proto.shared.Acl.AclActions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static alluxio.proto.shared.Acl.AclActions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static alluxio.proto.shared.Acl.AclActions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static alluxio.proto.shared.Acl.AclActions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static alluxio.proto.shared.Acl.AclActions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static alluxio.proto.shared.Acl.AclActions parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static alluxio.proto.shared.Acl.AclActions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static alluxio.proto.shared.Acl.AclActions parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static alluxio.proto.shared.Acl.AclActions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static alluxio.proto.shared.Acl.AclActions parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(alluxio.proto.shared.Acl.AclActions prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code alluxio.proto.shared.AclActions}
     *
     * <pre>
     * next available id: 2
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements alluxio.proto.shared.Acl.AclActionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return alluxio.proto.shared.Acl.internal_static_alluxio_proto_shared_AclActions_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return alluxio.proto.shared.Acl.internal_static_alluxio_proto_shared_AclActions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                alluxio.proto.shared.Acl.AclActions.class, alluxio.proto.shared.Acl.AclActions.Builder.class);
      }

      // Construct using alluxio.proto.shared.Acl.AclActions.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        actions_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return alluxio.proto.shared.Acl.internal_static_alluxio_proto_shared_AclActions_descriptor;
      }

      public alluxio.proto.shared.Acl.AclActions getDefaultInstanceForType() {
        return alluxio.proto.shared.Acl.AclActions.getDefaultInstance();
      }

      public alluxio.proto.shared.Acl.AclActions build() {
        alluxio.proto.shared.Acl.AclActions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public alluxio.proto.shared.Acl.AclActions buildPartial() {
        alluxio.proto.shared.Acl.AclActions result = new alluxio.proto.shared.Acl.AclActions(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          actions_ = java.util.Collections.unmodifiableList(actions_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.actions_ = actions_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof alluxio.proto.shared.Acl.AclActions) {
          return mergeFrom((alluxio.proto.shared.Acl.AclActions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(alluxio.proto.shared.Acl.AclActions other) {
        if (other == alluxio.proto.shared.Acl.AclActions.getDefaultInstance()) return this;
        if (!other.actions_.isEmpty()) {
          if (actions_.isEmpty()) {
            actions_ = other.actions_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureActionsIsMutable();
            actions_.addAll(other.actions_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        alluxio.proto.shared.Acl.AclActions parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (alluxio.proto.shared.Acl.AclActions) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .alluxio.proto.shared.AclAction actions = 1;
      private java.util.List<alluxio.proto.shared.Acl.AclAction> actions_ =
        java.util.Collections.emptyList();
      private void ensureActionsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          actions_ = new java.util.ArrayList<alluxio.proto.shared.Acl.AclAction>(actions_);
          bitField0_ |= 0x00000001;
        }
      }
      /**
       * <code>repeated .alluxio.proto.shared.AclAction actions = 1;</code>
       */
      public java.util.List<alluxio.proto.shared.Acl.AclAction> getActionsList() {
        return java.util.Collections.unmodifiableList(actions_);
      }
      /**
       * <code>repeated .alluxio.proto.shared.AclAction actions = 1;</code>
       */
      public int getActionsCount() {
        return actions_.size();
      }
      /**
       * <code>repeated .alluxio.proto.shared.AclAction actions = 1;</code>
       */
      public alluxio.proto.shared.Acl.AclAction getActions(int index) {
        return actions_.get(index);
      }
      /**
       * <code>repeated .alluxio.proto.shared.AclAction actions = 1;</code>
       */
      public Builder setActions(
          int index, alluxio.proto.shared.Acl.AclAction value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureActionsIsMutable();
        actions_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.AclAction actions = 1;</code>
       */
      public Builder addActions(alluxio.proto.shared.Acl.AclAction value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureActionsIsMutable();
        actions_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.AclAction actions = 1;</code>
       */
      public Builder addAllActions(
          java.lang.Iterable<? extends alluxio.proto.shared.Acl.AclAction> values) {
        ensureActionsIsMutable();
        super.addAll(values, actions_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.AclAction actions = 1;</code>
       */
      public Builder clearActions() {
        actions_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:alluxio.proto.shared.AclActions)
    }

    static {
      defaultInstance = new AclActions(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:alluxio.proto.shared.AclActions)
  }

  public interface AclEntryOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional .alluxio.proto.shared.AclEntryType type = 1;
    /**
     * <code>optional .alluxio.proto.shared.AclEntryType type = 1;</code>
     */
    boolean hasType();
    /**
     * <code>optional .alluxio.proto.shared.AclEntryType type = 1;</code>
     */
    alluxio.proto.shared.Acl.AclEntryType getType();

    // optional string subject = 2;
    /**
     * <code>optional string subject = 2;</code>
     */
    boolean hasSubject();
    /**
     * <code>optional string subject = 2;</code>
     */
    java.lang.String getSubject();
    /**
     * <code>optional string subject = 2;</code>
     */
    com.google.protobuf.ByteString
        getSubjectBytes();

    // repeated .alluxio.proto.shared.AclAction actions = 3;
    /**
     * <code>repeated .alluxio.proto.shared.AclAction actions = 3;</code>
     */
    java.util.List<alluxio.proto.shared.Acl.AclAction> getActionsList();
    /**
     * <code>repeated .alluxio.proto.shared.AclAction actions = 3;</code>
     */
    int getActionsCount();
    /**
     * <code>repeated .alluxio.proto.shared.AclAction actions = 3;</code>
     */
    alluxio.proto.shared.Acl.AclAction getActions(int index);

    // optional bool isDefault = 4;
    /**
     * <code>optional bool isDefault = 4;</code>
     */
    boolean hasIsDefault();
    /**
     * <code>optional bool isDefault = 4;</code>
     */
    boolean getIsDefault();
  }
  /**
   * Protobuf type {@code alluxio.proto.shared.AclEntry}
   *
   * <pre>
   * next available id: 5
   * </pre>
   */
  public static final class AclEntry extends
      com.google.protobuf.GeneratedMessage
      implements AclEntryOrBuilder {
    // Use AclEntry.newBuilder() to construct.
    private AclEntry(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private AclEntry(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final AclEntry defaultInstance;
    public static AclEntry getDefaultInstance() {
      return defaultInstance;
    }

    public AclEntry getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private AclEntry(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();
              alluxio.proto.shared.Acl.AclEntryType value = alluxio.proto.shared.Acl.AclEntryType.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                bitField0_ |= 0x00000001;
                type_ = value;
              }
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              subject_ = input.readBytes();
              break;
            }
            case 24: {
              int rawValue = input.readEnum();
              alluxio.proto.shared.Acl.AclAction value = alluxio.proto.shared.Acl.AclAction.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(3, rawValue);
              } else {
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                  actions_ = new java.util.ArrayList<alluxio.proto.shared.Acl.AclAction>();
                  mutable_bitField0_ |= 0x00000004;
                }
                actions_.add(value);
              }
              break;
            }
            case 26: {
              int length = input.readRawVarint32();
              int oldLimit = input.pushLimit(length);
              while(input.getBytesUntilLimit() > 0) {
                int rawValue = input.readEnum();
                alluxio.proto.shared.Acl.AclAction value = alluxio.proto.shared.Acl.AclAction.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(3, rawValue);
                } else {
                  if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                    actions_ = new java.util.ArrayList<alluxio.proto.shared.Acl.AclAction>();
                    mutable_bitField0_ |= 0x00000004;
                  }
                  actions_.add(value);
                }
              }
              input.popLimit(oldLimit);
              break;
            }
            case 32: {
              bitField0_ |= 0x00000004;
              isDefault_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          actions_ = java.util.Collections.unmodifiableList(actions_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return alluxio.proto.shared.Acl.internal_static_alluxio_proto_shared_AclEntry_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return alluxio.proto.shared.Acl.internal_static_alluxio_proto_shared_AclEntry_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              alluxio.proto.shared.Acl.AclEntry.class, alluxio.proto.shared.Acl.AclEntry.Builder.class);
    }

    public static com.google.protobuf.Parser<AclEntry> PARSER =
        new com.google.protobuf.AbstractParser<AclEntry>() {
      public AclEntry parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new AclEntry(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // optional .alluxio.proto.shared.AclEntryType type = 1;
    public static final int TYPE_FIELD_NUMBER = 1;
    private alluxio.proto.shared.Acl.AclEntryType type_;
    /**
     * <code>optional .alluxio.proto.shared.AclEntryType type = 1;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional .alluxio.proto.shared.AclEntryType type = 1;</code>
     */
    public alluxio.proto.shared.Acl.AclEntryType getType() {
      return type_;
    }

    // optional string subject = 2;
    public static final int SUBJECT_FIELD_NUMBER = 2;
    private java.lang.Object subject_;
    /**
     * <code>optional string subject = 2;</code>
     */
    public boolean hasSubject() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional string subject = 2;</code>
     */
    public java.lang.String getSubject() {
      java.lang.Object ref = subject_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          subject_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string subject = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSubjectBytes() {
      java.lang.Object ref = subject_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        subject_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // repeated .alluxio.proto.shared.AclAction actions = 3;
    public static final int ACTIONS_FIELD_NUMBER = 3;
    private java.util.List<alluxio.proto.shared.Acl.AclAction> actions_;
    /**
     * <code>repeated .alluxio.proto.shared.AclAction actions = 3;</code>
     */
    public java.util.List<alluxio.proto.shared.Acl.AclAction> getActionsList() {
      return actions_;
    }
    /**
     * <code>repeated .alluxio.proto.shared.AclAction actions = 3;</code>
     */
    public int getActionsCount() {
      return actions_.size();
    }
    /**
     * <code>repeated .alluxio.proto.shared.AclAction actions = 3;</code>
     */
    public alluxio.proto.shared.Acl.AclAction getActions(int index) {
      return actions_.get(index);
    }

    // optional bool isDefault = 4;
    public static final int ISDEFAULT_FIELD_NUMBER = 4;
    private boolean isDefault_;
    /**
     * <code>optional bool isDefault = 4;</code>
     */
    public boolean hasIsDefault() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional bool isDefault = 4;</code>
     */
    public boolean getIsDefault() {
      return isDefault_;
    }

    private void initFields() {
      type_ = alluxio.proto.shared.Acl.AclEntryType.OWNER;
      subject_ = "";
      actions_ = java.util.Collections.emptyList();
      isDefault_ = false;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeEnum(1, type_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getSubjectBytes());
      }
      for (int i = 0; i < actions_.size(); i++) {
        output.writeEnum(3, actions_.get(i).getNumber());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBool(4, isDefault_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, type_.getNumber());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getSubjectBytes());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < actions_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeEnumSizeNoTag(actions_.get(i).getNumber());
        }
        size += dataSize;
        size += 1 * actions_.size();
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, isDefault_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static alluxio.proto.shared.Acl.AclEntry parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static alluxio.proto.shared.Acl.AclEntry parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static alluxio.proto.shared.Acl.AclEntry parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static alluxio.proto.shared.Acl.AclEntry parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static alluxio.proto.shared.Acl.AclEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static alluxio.proto.shared.Acl.AclEntry parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static alluxio.proto.shared.Acl.AclEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static alluxio.proto.shared.Acl.AclEntry parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static alluxio.proto.shared.Acl.AclEntry parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static alluxio.proto.shared.Acl.AclEntry parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(alluxio.proto.shared.Acl.AclEntry prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code alluxio.proto.shared.AclEntry}
     *
     * <pre>
     * next available id: 5
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements alluxio.proto.shared.Acl.AclEntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return alluxio.proto.shared.Acl.internal_static_alluxio_proto_shared_AclEntry_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return alluxio.proto.shared.Acl.internal_static_alluxio_proto_shared_AclEntry_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                alluxio.proto.shared.Acl.AclEntry.class, alluxio.proto.shared.Acl.AclEntry.Builder.class);
      }

      // Construct using alluxio.proto.shared.Acl.AclEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        type_ = alluxio.proto.shared.Acl.AclEntryType.OWNER;
        bitField0_ = (bitField0_ & ~0x00000001);
        subject_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        actions_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        isDefault_ = false;
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return alluxio.proto.shared.Acl.internal_static_alluxio_proto_shared_AclEntry_descriptor;
      }

      public alluxio.proto.shared.Acl.AclEntry getDefaultInstanceForType() {
        return alluxio.proto.shared.Acl.AclEntry.getDefaultInstance();
      }

      public alluxio.proto.shared.Acl.AclEntry build() {
        alluxio.proto.shared.Acl.AclEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public alluxio.proto.shared.Acl.AclEntry buildPartial() {
        alluxio.proto.shared.Acl.AclEntry result = new alluxio.proto.shared.Acl.AclEntry(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.subject_ = subject_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          actions_ = java.util.Collections.unmodifiableList(actions_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.actions_ = actions_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        result.isDefault_ = isDefault_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof alluxio.proto.shared.Acl.AclEntry) {
          return mergeFrom((alluxio.proto.shared.Acl.AclEntry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(alluxio.proto.shared.Acl.AclEntry other) {
        if (other == alluxio.proto.shared.Acl.AclEntry.getDefaultInstance()) return this;
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasSubject()) {
          bitField0_ |= 0x00000002;
          subject_ = other.subject_;
          onChanged();
        }
        if (!other.actions_.isEmpty()) {
          if (actions_.isEmpty()) {
            actions_ = other.actions_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureActionsIsMutable();
            actions_.addAll(other.actions_);
          }
          onChanged();
        }
        if (other.hasIsDefault()) {
          setIsDefault(other.getIsDefault());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        alluxio.proto.shared.Acl.AclEntry parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (alluxio.proto.shared.Acl.AclEntry) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional .alluxio.proto.shared.AclEntryType type = 1;
      private alluxio.proto.shared.Acl.AclEntryType type_ = alluxio.proto.shared.Acl.AclEntryType.OWNER;
      /**
       * <code>optional .alluxio.proto.shared.AclEntryType type = 1;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .alluxio.proto.shared.AclEntryType type = 1;</code>
       */
      public alluxio.proto.shared.Acl.AclEntryType getType() {
        return type_;
      }
      /**
       * <code>optional .alluxio.proto.shared.AclEntryType type = 1;</code>
       */
      public Builder setType(alluxio.proto.shared.Acl.AclEntryType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional .alluxio.proto.shared.AclEntryType type = 1;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = alluxio.proto.shared.Acl.AclEntryType.OWNER;
        onChanged();
        return this;
      }

      // optional string subject = 2;
      private java.lang.Object subject_ = "";
      /**
       * <code>optional string subject = 2;</code>
       */
      public boolean hasSubject() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional string subject = 2;</code>
       */
      public java.lang.String getSubject() {
        java.lang.Object ref = subject_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          subject_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string subject = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSubjectBytes() {
        java.lang.Object ref = subject_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          subject_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string subject = 2;</code>
       */
      public Builder setSubject(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        subject_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string subject = 2;</code>
       */
      public Builder clearSubject() {
        bitField0_ = (bitField0_ & ~0x00000002);
        subject_ = getDefaultInstance().getSubject();
        onChanged();
        return this;
      }
      /**
       * <code>optional string subject = 2;</code>
       */
      public Builder setSubjectBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        subject_ = value;
        onChanged();
        return this;
      }

      // repeated .alluxio.proto.shared.AclAction actions = 3;
      private java.util.List<alluxio.proto.shared.Acl.AclAction> actions_ =
        java.util.Collections.emptyList();
      private void ensureActionsIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          actions_ = new java.util.ArrayList<alluxio.proto.shared.Acl.AclAction>(actions_);
          bitField0_ |= 0x00000004;
        }
      }
      /**
       * <code>repeated .alluxio.proto.shared.AclAction actions = 3;</code>
       */
      public java.util.List<alluxio.proto.shared.Acl.AclAction> getActionsList() {
        return java.util.Collections.unmodifiableList(actions_);
      }
      /**
       * <code>repeated .alluxio.proto.shared.AclAction actions = 3;</code>
       */
      public int getActionsCount() {
        return actions_.size();
      }
      /**
       * <code>repeated .alluxio.proto.shared.AclAction actions = 3;</code>
       */
      public alluxio.proto.shared.Acl.AclAction getActions(int index) {
        return actions_.get(index);
      }
      /**
       * <code>repeated .alluxio.proto.shared.AclAction actions = 3;</code>
       */
      public Builder setActions(
          int index, alluxio.proto.shared.Acl.AclAction value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureActionsIsMutable();
        actions_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.AclAction actions = 3;</code>
       */
      public Builder addActions(alluxio.proto.shared.Acl.AclAction value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureActionsIsMutable();
        actions_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.AclAction actions = 3;</code>
       */
      public Builder addAllActions(
          java.lang.Iterable<? extends alluxio.proto.shared.Acl.AclAction> values) {
        ensureActionsIsMutable();
        super.addAll(values, actions_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.AclAction actions = 3;</code>
       */
      public Builder clearActions() {
        actions_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }

      // optional bool isDefault = 4;
      private boolean isDefault_ ;
      /**
       * <code>optional bool isDefault = 4;</code>
       */
      public boolean hasIsDefault() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional bool isDefault = 4;</code>
       */
      public boolean getIsDefault() {
        return isDefault_;
      }
      /**
       * <code>optional bool isDefault = 4;</code>
       */
      public Builder setIsDefault(boolean value) {
        bitField0_ |= 0x00000008;
        isDefault_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool isDefault = 4;</code>
       */
      public Builder clearIsDefault() {
        bitField0_ = (bitField0_ & ~0x00000008);
        isDefault_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:alluxio.proto.shared.AclEntry)
    }

    static {
      defaultInstance = new AclEntry(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:alluxio.proto.shared.AclEntry)
  }

  public interface NamedAclActionsOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional string name = 1;
    /**
     * <code>optional string name = 1;</code>
     */
    boolean hasName();
    /**
     * <code>optional string name = 1;</code>
     */
    java.lang.String getName();
    /**
     * <code>optional string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    // optional .alluxio.proto.shared.AclActions actions = 2;
    /**
     * <code>optional .alluxio.proto.shared.AclActions actions = 2;</code>
     */
    boolean hasActions();
    /**
     * <code>optional .alluxio.proto.shared.AclActions actions = 2;</code>
     */
    alluxio.proto.shared.Acl.AclActions getActions();
    /**
     * <code>optional .alluxio.proto.shared.AclActions actions = 2;</code>
     */
    alluxio.proto.shared.Acl.AclActionsOrBuilder getActionsOrBuilder();
  }
  /**
   * Protobuf type {@code alluxio.proto.shared.NamedAclActions}
   *
   * <pre>
   * AclActions for a String name.
   * next available id: 3
   * </pre>
   */
  public static final class NamedAclActions extends
      com.google.protobuf.GeneratedMessage
      implements NamedAclActionsOrBuilder {
    // Use NamedAclActions.newBuilder() to construct.
    private NamedAclActions(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private NamedAclActions(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final NamedAclActions defaultInstance;
    public static NamedAclActions getDefaultInstance() {
      return defaultInstance;
    }

    public NamedAclActions getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private NamedAclActions(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              name_ = input.readBytes();
              break;
            }
            case 18: {
              alluxio.proto.shared.Acl.AclActions.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = actions_.toBuilder();
              }
              actions_ = input.readMessage(alluxio.proto.shared.Acl.AclActions.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(actions_);
                actions_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return alluxio.proto.shared.Acl.internal_static_alluxio_proto_shared_NamedAclActions_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return alluxio.proto.shared.Acl.internal_static_alluxio_proto_shared_NamedAclActions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              alluxio.proto.shared.Acl.NamedAclActions.class, alluxio.proto.shared.Acl.NamedAclActions.Builder.class);
    }

    public static com.google.protobuf.Parser<NamedAclActions> PARSER =
        new com.google.protobuf.AbstractParser<NamedAclActions>() {
      public NamedAclActions parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new NamedAclActions(input, extensionRegistry);
      }
    };

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

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

    // optional .alluxio.proto.shared.AclActions actions = 2;
    public static final int ACTIONS_FIELD_NUMBER = 2;
    private alluxio.proto.shared.Acl.AclActions actions_;
    /**
     * <code>optional .alluxio.proto.shared.AclActions actions = 2;</code>
     */
    public boolean hasActions() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .alluxio.proto.shared.AclActions actions = 2;</code>
     */
    public alluxio.proto.shared.Acl.AclActions getActions() {
      return actions_;
    }
    /**
     * <code>optional .alluxio.proto.shared.AclActions actions = 2;</code>
     */
    public alluxio.proto.shared.Acl.AclActionsOrBuilder getActionsOrBuilder() {
      return actions_;
    }

    private void initFields() {
      name_ = "";
      actions_ = alluxio.proto.shared.Acl.AclActions.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, actions_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, actions_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static alluxio.proto.shared.Acl.NamedAclActions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static alluxio.proto.shared.Acl.NamedAclActions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static alluxio.proto.shared.Acl.NamedAclActions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static alluxio.proto.shared.Acl.NamedAclActions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static alluxio.proto.shared.Acl.NamedAclActions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static alluxio.proto.shared.Acl.NamedAclActions parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static alluxio.proto.shared.Acl.NamedAclActions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static alluxio.proto.shared.Acl.NamedAclActions parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static alluxio.proto.shared.Acl.NamedAclActions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static alluxio.proto.shared.Acl.NamedAclActions parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(alluxio.proto.shared.Acl.NamedAclActions prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code alluxio.proto.shared.NamedAclActions}
     *
     * <pre>
     * AclActions for a String name.
     * next available id: 3
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements alluxio.proto.shared.Acl.NamedAclActionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return alluxio.proto.shared.Acl.internal_static_alluxio_proto_shared_NamedAclActions_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return alluxio.proto.shared.Acl.internal_static_alluxio_proto_shared_NamedAclActions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                alluxio.proto.shared.Acl.NamedAclActions.class, alluxio.proto.shared.Acl.NamedAclActions.Builder.class);
      }

      // Construct using alluxio.proto.shared.Acl.NamedAclActions.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getActionsFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (actionsBuilder_ == null) {
          actions_ = alluxio.proto.shared.Acl.AclActions.getDefaultInstance();
        } else {
          actionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return alluxio.proto.shared.Acl.internal_static_alluxio_proto_shared_NamedAclActions_descriptor;
      }

      public alluxio.proto.shared.Acl.NamedAclActions getDefaultInstanceForType() {
        return alluxio.proto.shared.Acl.NamedAclActions.getDefaultInstance();
      }

      public alluxio.proto.shared.Acl.NamedAclActions build() {
        alluxio.proto.shared.Acl.NamedAclActions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public alluxio.proto.shared.Acl.NamedAclActions buildPartial() {
        alluxio.proto.shared.Acl.NamedAclActions result = new alluxio.proto.shared.Acl.NamedAclActions(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (actionsBuilder_ == null) {
          result.actions_ = actions_;
        } else {
          result.actions_ = actionsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof alluxio.proto.shared.Acl.NamedAclActions) {
          return mergeFrom((alluxio.proto.shared.Acl.NamedAclActions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(alluxio.proto.shared.Acl.NamedAclActions other) {
        if (other == alluxio.proto.shared.Acl.NamedAclActions.getDefaultInstance()) return this;
        if (other.hasName()) {
          bitField0_ |= 0x00000001;
          name_ = other.name_;
          onChanged();
        }
        if (other.hasActions()) {
          mergeActions(other.getActions());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        alluxio.proto.shared.Acl.NamedAclActions parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (alluxio.proto.shared.Acl.NamedAclActions) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

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

      // optional .alluxio.proto.shared.AclActions actions = 2;
      private alluxio.proto.shared.Acl.AclActions actions_ = alluxio.proto.shared.Acl.AclActions.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          alluxio.proto.shared.Acl.AclActions, alluxio.proto.shared.Acl.AclActions.Builder, alluxio.proto.shared.Acl.AclActionsOrBuilder> actionsBuilder_;
      /**
       * <code>optional .alluxio.proto.shared.AclActions actions = 2;</code>
       */
      public boolean hasActions() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions actions = 2;</code>
       */
      public alluxio.proto.shared.Acl.AclActions getActions() {
        if (actionsBuilder_ == null) {
          return actions_;
        } else {
          return actionsBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions actions = 2;</code>
       */
      public Builder setActions(alluxio.proto.shared.Acl.AclActions value) {
        if (actionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          actions_ = value;
          onChanged();
        } else {
          actionsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions actions = 2;</code>
       */
      public Builder setActions(
          alluxio.proto.shared.Acl.AclActions.Builder builderForValue) {
        if (actionsBuilder_ == null) {
          actions_ = builderForValue.build();
          onChanged();
        } else {
          actionsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions actions = 2;</code>
       */
      public Builder mergeActions(alluxio.proto.shared.Acl.AclActions value) {
        if (actionsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              actions_ != alluxio.proto.shared.Acl.AclActions.getDefaultInstance()) {
            actions_ =
              alluxio.proto.shared.Acl.AclActions.newBuilder(actions_).mergeFrom(value).buildPartial();
          } else {
            actions_ = value;
          }
          onChanged();
        } else {
          actionsBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions actions = 2;</code>
       */
      public Builder clearActions() {
        if (actionsBuilder_ == null) {
          actions_ = alluxio.proto.shared.Acl.AclActions.getDefaultInstance();
          onChanged();
        } else {
          actionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions actions = 2;</code>
       */
      public alluxio.proto.shared.Acl.AclActions.Builder getActionsBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getActionsFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions actions = 2;</code>
       */
      public alluxio.proto.shared.Acl.AclActionsOrBuilder getActionsOrBuilder() {
        if (actionsBuilder_ != null) {
          return actionsBuilder_.getMessageOrBuilder();
        } else {
          return actions_;
        }
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions actions = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          alluxio.proto.shared.Acl.AclActions, alluxio.proto.shared.Acl.AclActions.Builder, alluxio.proto.shared.Acl.AclActionsOrBuilder> 
          getActionsFieldBuilder() {
        if (actionsBuilder_ == null) {
          actionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              alluxio.proto.shared.Acl.AclActions, alluxio.proto.shared.Acl.AclActions.Builder, alluxio.proto.shared.Acl.AclActionsOrBuilder>(
                  actions_,
                  getParentForChildren(),
                  isClean());
          actions_ = null;
        }
        return actionsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:alluxio.proto.shared.NamedAclActions)
    }

    static {
      defaultInstance = new NamedAclActions(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:alluxio.proto.shared.NamedAclActions)
  }

  public interface AccessControlListOrBuilder
      extends com.google.protobuf.MessageOrBuilder {

    // optional string owningUser = 1;
    /**
     * <code>optional string owningUser = 1;</code>
     */
    boolean hasOwningUser();
    /**
     * <code>optional string owningUser = 1;</code>
     */
    java.lang.String getOwningUser();
    /**
     * <code>optional string owningUser = 1;</code>
     */
    com.google.protobuf.ByteString
        getOwningUserBytes();

    // optional string owningGroup = 2;
    /**
     * <code>optional string owningGroup = 2;</code>
     */
    boolean hasOwningGroup();
    /**
     * <code>optional string owningGroup = 2;</code>
     */
    java.lang.String getOwningGroup();
    /**
     * <code>optional string owningGroup = 2;</code>
     */
    com.google.protobuf.ByteString
        getOwningGroupBytes();

    // repeated .alluxio.proto.shared.NamedAclActions userActions = 3;
    /**
     * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
     */
    java.util.List<alluxio.proto.shared.Acl.NamedAclActions> 
        getUserActionsList();
    /**
     * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
     */
    alluxio.proto.shared.Acl.NamedAclActions getUserActions(int index);
    /**
     * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
     */
    int getUserActionsCount();
    /**
     * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
     */
    java.util.List<? extends alluxio.proto.shared.Acl.NamedAclActionsOrBuilder> 
        getUserActionsOrBuilderList();
    /**
     * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
     */
    alluxio.proto.shared.Acl.NamedAclActionsOrBuilder getUserActionsOrBuilder(
        int index);

    // repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;
    /**
     * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
     */
    java.util.List<alluxio.proto.shared.Acl.NamedAclActions> 
        getGroupActionsList();
    /**
     * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
     */
    alluxio.proto.shared.Acl.NamedAclActions getGroupActions(int index);
    /**
     * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
     */
    int getGroupActionsCount();
    /**
     * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
     */
    java.util.List<? extends alluxio.proto.shared.Acl.NamedAclActionsOrBuilder> 
        getGroupActionsOrBuilderList();
    /**
     * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
     */
    alluxio.proto.shared.Acl.NamedAclActionsOrBuilder getGroupActionsOrBuilder(
        int index);

    // optional .alluxio.proto.shared.AclActions maskActions = 5;
    /**
     * <code>optional .alluxio.proto.shared.AclActions maskActions = 5;</code>
     */
    boolean hasMaskActions();
    /**
     * <code>optional .alluxio.proto.shared.AclActions maskActions = 5;</code>
     */
    alluxio.proto.shared.Acl.AclActions getMaskActions();
    /**
     * <code>optional .alluxio.proto.shared.AclActions maskActions = 5;</code>
     */
    alluxio.proto.shared.Acl.AclActionsOrBuilder getMaskActionsOrBuilder();

    // optional .alluxio.proto.shared.AclActions otherActions = 6;
    /**
     * <code>optional .alluxio.proto.shared.AclActions otherActions = 6;</code>
     */
    boolean hasOtherActions();
    /**
     * <code>optional .alluxio.proto.shared.AclActions otherActions = 6;</code>
     */
    alluxio.proto.shared.Acl.AclActions getOtherActions();
    /**
     * <code>optional .alluxio.proto.shared.AclActions otherActions = 6;</code>
     */
    alluxio.proto.shared.Acl.AclActionsOrBuilder getOtherActionsOrBuilder();

    // optional bool isDefault = 7;
    /**
     * <code>optional bool isDefault = 7;</code>
     */
    boolean hasIsDefault();
    /**
     * <code>optional bool isDefault = 7;</code>
     */
    boolean getIsDefault();

    // optional bool isEmpty = 8;
    /**
     * <code>optional bool isEmpty = 8;</code>
     */
    boolean hasIsEmpty();
    /**
     * <code>optional bool isEmpty = 8;</code>
     */
    boolean getIsEmpty();
  }
  /**
   * Protobuf type {@code alluxio.proto.shared.AccessControlList}
   *
   * <pre>
   * next available id: 9
   * </pre>
   */
  public static final class AccessControlList extends
      com.google.protobuf.GeneratedMessage
      implements AccessControlListOrBuilder {
    // Use AccessControlList.newBuilder() to construct.
    private AccessControlList(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private AccessControlList(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final AccessControlList defaultInstance;
    public static AccessControlList getDefaultInstance() {
      return defaultInstance;
    }

    public AccessControlList getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private AccessControlList(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              owningUser_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              owningGroup_ = input.readBytes();
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                userActions_ = new java.util.ArrayList<alluxio.proto.shared.Acl.NamedAclActions>();
                mutable_bitField0_ |= 0x00000004;
              }
              userActions_.add(input.readMessage(alluxio.proto.shared.Acl.NamedAclActions.PARSER, extensionRegistry));
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                groupActions_ = new java.util.ArrayList<alluxio.proto.shared.Acl.NamedAclActions>();
                mutable_bitField0_ |= 0x00000008;
              }
              groupActions_.add(input.readMessage(alluxio.proto.shared.Acl.NamedAclActions.PARSER, extensionRegistry));
              break;
            }
            case 42: {
              alluxio.proto.shared.Acl.AclActions.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = maskActions_.toBuilder();
              }
              maskActions_ = input.readMessage(alluxio.proto.shared.Acl.AclActions.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(maskActions_);
                maskActions_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 50: {
              alluxio.proto.shared.Acl.AclActions.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) == 0x00000008)) {
                subBuilder = otherActions_.toBuilder();
              }
              otherActions_ = input.readMessage(alluxio.proto.shared.Acl.AclActions.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(otherActions_);
                otherActions_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            case 56: {
              bitField0_ |= 0x00000010;
              isDefault_ = input.readBool();
              break;
            }
            case 64: {
              bitField0_ |= 0x00000020;
              isEmpty_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          userActions_ = java.util.Collections.unmodifiableList(userActions_);
        }
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          groupActions_ = java.util.Collections.unmodifiableList(groupActions_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return alluxio.proto.shared.Acl.internal_static_alluxio_proto_shared_AccessControlList_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return alluxio.proto.shared.Acl.internal_static_alluxio_proto_shared_AccessControlList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              alluxio.proto.shared.Acl.AccessControlList.class, alluxio.proto.shared.Acl.AccessControlList.Builder.class);
    }

    public static com.google.protobuf.Parser<AccessControlList> PARSER =
        new com.google.protobuf.AbstractParser<AccessControlList>() {
      public AccessControlList parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new AccessControlList(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    // optional string owningUser = 1;
    public static final int OWNINGUSER_FIELD_NUMBER = 1;
    private java.lang.Object owningUser_;
    /**
     * <code>optional string owningUser = 1;</code>
     */
    public boolean hasOwningUser() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional string owningUser = 1;</code>
     */
    public java.lang.String getOwningUser() {
      java.lang.Object ref = owningUser_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          owningUser_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string owningUser = 1;</code>
     */
    public com.google.protobuf.ByteString
        getOwningUserBytes() {
      java.lang.Object ref = owningUser_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        owningUser_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string owningGroup = 2;
    public static final int OWNINGGROUP_FIELD_NUMBER = 2;
    private java.lang.Object owningGroup_;
    /**
     * <code>optional string owningGroup = 2;</code>
     */
    public boolean hasOwningGroup() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional string owningGroup = 2;</code>
     */
    public java.lang.String getOwningGroup() {
      java.lang.Object ref = owningGroup_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          owningGroup_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string owningGroup = 2;</code>
     */
    public com.google.protobuf.ByteString
        getOwningGroupBytes() {
      java.lang.Object ref = owningGroup_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        owningGroup_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // repeated .alluxio.proto.shared.NamedAclActions userActions = 3;
    public static final int USERACTIONS_FIELD_NUMBER = 3;
    private java.util.List<alluxio.proto.shared.Acl.NamedAclActions> userActions_;
    /**
     * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
     */
    public java.util.List<alluxio.proto.shared.Acl.NamedAclActions> getUserActionsList() {
      return userActions_;
    }
    /**
     * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
     */
    public java.util.List<? extends alluxio.proto.shared.Acl.NamedAclActionsOrBuilder> 
        getUserActionsOrBuilderList() {
      return userActions_;
    }
    /**
     * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
     */
    public int getUserActionsCount() {
      return userActions_.size();
    }
    /**
     * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
     */
    public alluxio.proto.shared.Acl.NamedAclActions getUserActions(int index) {
      return userActions_.get(index);
    }
    /**
     * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
     */
    public alluxio.proto.shared.Acl.NamedAclActionsOrBuilder getUserActionsOrBuilder(
        int index) {
      return userActions_.get(index);
    }

    // repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;
    public static final int GROUPACTIONS_FIELD_NUMBER = 4;
    private java.util.List<alluxio.proto.shared.Acl.NamedAclActions> groupActions_;
    /**
     * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
     */
    public java.util.List<alluxio.proto.shared.Acl.NamedAclActions> getGroupActionsList() {
      return groupActions_;
    }
    /**
     * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
     */
    public java.util.List<? extends alluxio.proto.shared.Acl.NamedAclActionsOrBuilder> 
        getGroupActionsOrBuilderList() {
      return groupActions_;
    }
    /**
     * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
     */
    public int getGroupActionsCount() {
      return groupActions_.size();
    }
    /**
     * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
     */
    public alluxio.proto.shared.Acl.NamedAclActions getGroupActions(int index) {
      return groupActions_.get(index);
    }
    /**
     * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
     */
    public alluxio.proto.shared.Acl.NamedAclActionsOrBuilder getGroupActionsOrBuilder(
        int index) {
      return groupActions_.get(index);
    }

    // optional .alluxio.proto.shared.AclActions maskActions = 5;
    public static final int MASKACTIONS_FIELD_NUMBER = 5;
    private alluxio.proto.shared.Acl.AclActions maskActions_;
    /**
     * <code>optional .alluxio.proto.shared.AclActions maskActions = 5;</code>
     */
    public boolean hasMaskActions() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .alluxio.proto.shared.AclActions maskActions = 5;</code>
     */
    public alluxio.proto.shared.Acl.AclActions getMaskActions() {
      return maskActions_;
    }
    /**
     * <code>optional .alluxio.proto.shared.AclActions maskActions = 5;</code>
     */
    public alluxio.proto.shared.Acl.AclActionsOrBuilder getMaskActionsOrBuilder() {
      return maskActions_;
    }

    // optional .alluxio.proto.shared.AclActions otherActions = 6;
    public static final int OTHERACTIONS_FIELD_NUMBER = 6;
    private alluxio.proto.shared.Acl.AclActions otherActions_;
    /**
     * <code>optional .alluxio.proto.shared.AclActions otherActions = 6;</code>
     */
    public boolean hasOtherActions() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional .alluxio.proto.shared.AclActions otherActions = 6;</code>
     */
    public alluxio.proto.shared.Acl.AclActions getOtherActions() {
      return otherActions_;
    }
    /**
     * <code>optional .alluxio.proto.shared.AclActions otherActions = 6;</code>
     */
    public alluxio.proto.shared.Acl.AclActionsOrBuilder getOtherActionsOrBuilder() {
      return otherActions_;
    }

    // optional bool isDefault = 7;
    public static final int ISDEFAULT_FIELD_NUMBER = 7;
    private boolean isDefault_;
    /**
     * <code>optional bool isDefault = 7;</code>
     */
    public boolean hasIsDefault() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional bool isDefault = 7;</code>
     */
    public boolean getIsDefault() {
      return isDefault_;
    }

    // optional bool isEmpty = 8;
    public static final int ISEMPTY_FIELD_NUMBER = 8;
    private boolean isEmpty_;
    /**
     * <code>optional bool isEmpty = 8;</code>
     */
    public boolean hasIsEmpty() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional bool isEmpty = 8;</code>
     */
    public boolean getIsEmpty() {
      return isEmpty_;
    }

    private void initFields() {
      owningUser_ = "";
      owningGroup_ = "";
      userActions_ = java.util.Collections.emptyList();
      groupActions_ = java.util.Collections.emptyList();
      maskActions_ = alluxio.proto.shared.Acl.AclActions.getDefaultInstance();
      otherActions_ = alluxio.proto.shared.Acl.AclActions.getDefaultInstance();
      isDefault_ = false;
      isEmpty_ = false;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized != -1) return isInitialized == 1;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, getOwningUserBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getOwningGroupBytes());
      }
      for (int i = 0; i < userActions_.size(); i++) {
        output.writeMessage(3, userActions_.get(i));
      }
      for (int i = 0; i < groupActions_.size(); i++) {
        output.writeMessage(4, groupActions_.get(i));
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(5, maskActions_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeMessage(6, otherActions_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBool(7, isDefault_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeBool(8, isEmpty_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, getOwningUserBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getOwningGroupBytes());
      }
      for (int i = 0; i < userActions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, userActions_.get(i));
      }
      for (int i = 0; i < groupActions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, groupActions_.get(i));
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, maskActions_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, otherActions_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, isDefault_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(8, isEmpty_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    protected java.lang.Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static alluxio.proto.shared.Acl.AccessControlList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static alluxio.proto.shared.Acl.AccessControlList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static alluxio.proto.shared.Acl.AccessControlList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static alluxio.proto.shared.Acl.AccessControlList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static alluxio.proto.shared.Acl.AccessControlList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static alluxio.proto.shared.Acl.AccessControlList parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static alluxio.proto.shared.Acl.AccessControlList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static alluxio.proto.shared.Acl.AccessControlList parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static alluxio.proto.shared.Acl.AccessControlList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static alluxio.proto.shared.Acl.AccessControlList parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(alluxio.proto.shared.Acl.AccessControlList prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code alluxio.proto.shared.AccessControlList}
     *
     * <pre>
     * next available id: 9
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements alluxio.proto.shared.Acl.AccessControlListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return alluxio.proto.shared.Acl.internal_static_alluxio_proto_shared_AccessControlList_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return alluxio.proto.shared.Acl.internal_static_alluxio_proto_shared_AccessControlList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                alluxio.proto.shared.Acl.AccessControlList.class, alluxio.proto.shared.Acl.AccessControlList.Builder.class);
      }

      // Construct using alluxio.proto.shared.Acl.AccessControlList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getUserActionsFieldBuilder();
          getGroupActionsFieldBuilder();
          getMaskActionsFieldBuilder();
          getOtherActionsFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        owningUser_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        owningGroup_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        if (userActionsBuilder_ == null) {
          userActions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          userActionsBuilder_.clear();
        }
        if (groupActionsBuilder_ == null) {
          groupActions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
        } else {
          groupActionsBuilder_.clear();
        }
        if (maskActionsBuilder_ == null) {
          maskActions_ = alluxio.proto.shared.Acl.AclActions.getDefaultInstance();
        } else {
          maskActionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        if (otherActionsBuilder_ == null) {
          otherActions_ = alluxio.proto.shared.Acl.AclActions.getDefaultInstance();
        } else {
          otherActionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        isDefault_ = false;
        bitField0_ = (bitField0_ & ~0x00000040);
        isEmpty_ = false;
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return alluxio.proto.shared.Acl.internal_static_alluxio_proto_shared_AccessControlList_descriptor;
      }

      public alluxio.proto.shared.Acl.AccessControlList getDefaultInstanceForType() {
        return alluxio.proto.shared.Acl.AccessControlList.getDefaultInstance();
      }

      public alluxio.proto.shared.Acl.AccessControlList build() {
        alluxio.proto.shared.Acl.AccessControlList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public alluxio.proto.shared.Acl.AccessControlList buildPartial() {
        alluxio.proto.shared.Acl.AccessControlList result = new alluxio.proto.shared.Acl.AccessControlList(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.owningUser_ = owningUser_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.owningGroup_ = owningGroup_;
        if (userActionsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            userActions_ = java.util.Collections.unmodifiableList(userActions_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.userActions_ = userActions_;
        } else {
          result.userActions_ = userActionsBuilder_.build();
        }
        if (groupActionsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            groupActions_ = java.util.Collections.unmodifiableList(groupActions_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.groupActions_ = groupActions_;
        } else {
          result.groupActions_ = groupActionsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000004;
        }
        if (maskActionsBuilder_ == null) {
          result.maskActions_ = maskActions_;
        } else {
          result.maskActions_ = maskActionsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000008;
        }
        if (otherActionsBuilder_ == null) {
          result.otherActions_ = otherActions_;
        } else {
          result.otherActions_ = otherActionsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000010;
        }
        result.isDefault_ = isDefault_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000020;
        }
        result.isEmpty_ = isEmpty_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof alluxio.proto.shared.Acl.AccessControlList) {
          return mergeFrom((alluxio.proto.shared.Acl.AccessControlList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(alluxio.proto.shared.Acl.AccessControlList other) {
        if (other == alluxio.proto.shared.Acl.AccessControlList.getDefaultInstance()) return this;
        if (other.hasOwningUser()) {
          bitField0_ |= 0x00000001;
          owningUser_ = other.owningUser_;
          onChanged();
        }
        if (other.hasOwningGroup()) {
          bitField0_ |= 0x00000002;
          owningGroup_ = other.owningGroup_;
          onChanged();
        }
        if (userActionsBuilder_ == null) {
          if (!other.userActions_.isEmpty()) {
            if (userActions_.isEmpty()) {
              userActions_ = other.userActions_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureUserActionsIsMutable();
              userActions_.addAll(other.userActions_);
            }
            onChanged();
          }
        } else {
          if (!other.userActions_.isEmpty()) {
            if (userActionsBuilder_.isEmpty()) {
              userActionsBuilder_.dispose();
              userActionsBuilder_ = null;
              userActions_ = other.userActions_;
              bitField0_ = (bitField0_ & ~0x00000004);
              userActionsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getUserActionsFieldBuilder() : null;
            } else {
              userActionsBuilder_.addAllMessages(other.userActions_);
            }
          }
        }
        if (groupActionsBuilder_ == null) {
          if (!other.groupActions_.isEmpty()) {
            if (groupActions_.isEmpty()) {
              groupActions_ = other.groupActions_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureGroupActionsIsMutable();
              groupActions_.addAll(other.groupActions_);
            }
            onChanged();
          }
        } else {
          if (!other.groupActions_.isEmpty()) {
            if (groupActionsBuilder_.isEmpty()) {
              groupActionsBuilder_.dispose();
              groupActionsBuilder_ = null;
              groupActions_ = other.groupActions_;
              bitField0_ = (bitField0_ & ~0x00000008);
              groupActionsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getGroupActionsFieldBuilder() : null;
            } else {
              groupActionsBuilder_.addAllMessages(other.groupActions_);
            }
          }
        }
        if (other.hasMaskActions()) {
          mergeMaskActions(other.getMaskActions());
        }
        if (other.hasOtherActions()) {
          mergeOtherActions(other.getOtherActions());
        }
        if (other.hasIsDefault()) {
          setIsDefault(other.getIsDefault());
        }
        if (other.hasIsEmpty()) {
          setIsEmpty(other.getIsEmpty());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        alluxio.proto.shared.Acl.AccessControlList parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (alluxio.proto.shared.Acl.AccessControlList) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional string owningUser = 1;
      private java.lang.Object owningUser_ = "";
      /**
       * <code>optional string owningUser = 1;</code>
       */
      public boolean hasOwningUser() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional string owningUser = 1;</code>
       */
      public java.lang.String getOwningUser() {
        java.lang.Object ref = owningUser_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          owningUser_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string owningUser = 1;</code>
       */
      public com.google.protobuf.ByteString
          getOwningUserBytes() {
        java.lang.Object ref = owningUser_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          owningUser_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string owningUser = 1;</code>
       */
      public Builder setOwningUser(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        owningUser_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string owningUser = 1;</code>
       */
      public Builder clearOwningUser() {
        bitField0_ = (bitField0_ & ~0x00000001);
        owningUser_ = getDefaultInstance().getOwningUser();
        onChanged();
        return this;
      }
      /**
       * <code>optional string owningUser = 1;</code>
       */
      public Builder setOwningUserBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        owningUser_ = value;
        onChanged();
        return this;
      }

      // optional string owningGroup = 2;
      private java.lang.Object owningGroup_ = "";
      /**
       * <code>optional string owningGroup = 2;</code>
       */
      public boolean hasOwningGroup() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional string owningGroup = 2;</code>
       */
      public java.lang.String getOwningGroup() {
        java.lang.Object ref = owningGroup_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          owningGroup_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string owningGroup = 2;</code>
       */
      public com.google.protobuf.ByteString
          getOwningGroupBytes() {
        java.lang.Object ref = owningGroup_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          owningGroup_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string owningGroup = 2;</code>
       */
      public Builder setOwningGroup(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        owningGroup_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string owningGroup = 2;</code>
       */
      public Builder clearOwningGroup() {
        bitField0_ = (bitField0_ & ~0x00000002);
        owningGroup_ = getDefaultInstance().getOwningGroup();
        onChanged();
        return this;
      }
      /**
       * <code>optional string owningGroup = 2;</code>
       */
      public Builder setOwningGroupBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        owningGroup_ = value;
        onChanged();
        return this;
      }

      // repeated .alluxio.proto.shared.NamedAclActions userActions = 3;
      private java.util.List<alluxio.proto.shared.Acl.NamedAclActions> userActions_ =
        java.util.Collections.emptyList();
      private void ensureUserActionsIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          userActions_ = new java.util.ArrayList<alluxio.proto.shared.Acl.NamedAclActions>(userActions_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          alluxio.proto.shared.Acl.NamedAclActions, alluxio.proto.shared.Acl.NamedAclActions.Builder, alluxio.proto.shared.Acl.NamedAclActionsOrBuilder> userActionsBuilder_;

      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
       */
      public java.util.List<alluxio.proto.shared.Acl.NamedAclActions> getUserActionsList() {
        if (userActionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(userActions_);
        } else {
          return userActionsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
       */
      public int getUserActionsCount() {
        if (userActionsBuilder_ == null) {
          return userActions_.size();
        } else {
          return userActionsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
       */
      public alluxio.proto.shared.Acl.NamedAclActions getUserActions(int index) {
        if (userActionsBuilder_ == null) {
          return userActions_.get(index);
        } else {
          return userActionsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
       */
      public Builder setUserActions(
          int index, alluxio.proto.shared.Acl.NamedAclActions value) {
        if (userActionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureUserActionsIsMutable();
          userActions_.set(index, value);
          onChanged();
        } else {
          userActionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
       */
      public Builder setUserActions(
          int index, alluxio.proto.shared.Acl.NamedAclActions.Builder builderForValue) {
        if (userActionsBuilder_ == null) {
          ensureUserActionsIsMutable();
          userActions_.set(index, builderForValue.build());
          onChanged();
        } else {
          userActionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
       */
      public Builder addUserActions(alluxio.proto.shared.Acl.NamedAclActions value) {
        if (userActionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureUserActionsIsMutable();
          userActions_.add(value);
          onChanged();
        } else {
          userActionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
       */
      public Builder addUserActions(
          int index, alluxio.proto.shared.Acl.NamedAclActions value) {
        if (userActionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureUserActionsIsMutable();
          userActions_.add(index, value);
          onChanged();
        } else {
          userActionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
       */
      public Builder addUserActions(
          alluxio.proto.shared.Acl.NamedAclActions.Builder builderForValue) {
        if (userActionsBuilder_ == null) {
          ensureUserActionsIsMutable();
          userActions_.add(builderForValue.build());
          onChanged();
        } else {
          userActionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
       */
      public Builder addUserActions(
          int index, alluxio.proto.shared.Acl.NamedAclActions.Builder builderForValue) {
        if (userActionsBuilder_ == null) {
          ensureUserActionsIsMutable();
          userActions_.add(index, builderForValue.build());
          onChanged();
        } else {
          userActionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
       */
      public Builder addAllUserActions(
          java.lang.Iterable<? extends alluxio.proto.shared.Acl.NamedAclActions> values) {
        if (userActionsBuilder_ == null) {
          ensureUserActionsIsMutable();
          super.addAll(values, userActions_);
          onChanged();
        } else {
          userActionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
       */
      public Builder clearUserActions() {
        if (userActionsBuilder_ == null) {
          userActions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          userActionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
       */
      public Builder removeUserActions(int index) {
        if (userActionsBuilder_ == null) {
          ensureUserActionsIsMutable();
          userActions_.remove(index);
          onChanged();
        } else {
          userActionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
       */
      public alluxio.proto.shared.Acl.NamedAclActions.Builder getUserActionsBuilder(
          int index) {
        return getUserActionsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
       */
      public alluxio.proto.shared.Acl.NamedAclActionsOrBuilder getUserActionsOrBuilder(
          int index) {
        if (userActionsBuilder_ == null) {
          return userActions_.get(index);  } else {
          return userActionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
       */
      public java.util.List<? extends alluxio.proto.shared.Acl.NamedAclActionsOrBuilder> 
           getUserActionsOrBuilderList() {
        if (userActionsBuilder_ != null) {
          return userActionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(userActions_);
        }
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
       */
      public alluxio.proto.shared.Acl.NamedAclActions.Builder addUserActionsBuilder() {
        return getUserActionsFieldBuilder().addBuilder(
            alluxio.proto.shared.Acl.NamedAclActions.getDefaultInstance());
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
       */
      public alluxio.proto.shared.Acl.NamedAclActions.Builder addUserActionsBuilder(
          int index) {
        return getUserActionsFieldBuilder().addBuilder(
            index, alluxio.proto.shared.Acl.NamedAclActions.getDefaultInstance());
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions userActions = 3;</code>
       */
      public java.util.List<alluxio.proto.shared.Acl.NamedAclActions.Builder> 
           getUserActionsBuilderList() {
        return getUserActionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          alluxio.proto.shared.Acl.NamedAclActions, alluxio.proto.shared.Acl.NamedAclActions.Builder, alluxio.proto.shared.Acl.NamedAclActionsOrBuilder> 
          getUserActionsFieldBuilder() {
        if (userActionsBuilder_ == null) {
          userActionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              alluxio.proto.shared.Acl.NamedAclActions, alluxio.proto.shared.Acl.NamedAclActions.Builder, alluxio.proto.shared.Acl.NamedAclActionsOrBuilder>(
                  userActions_,
                  ((bitField0_ & 0x00000004) == 0x00000004),
                  getParentForChildren(),
                  isClean());
          userActions_ = null;
        }
        return userActionsBuilder_;
      }

      // repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;
      private java.util.List<alluxio.proto.shared.Acl.NamedAclActions> groupActions_ =
        java.util.Collections.emptyList();
      private void ensureGroupActionsIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          groupActions_ = new java.util.ArrayList<alluxio.proto.shared.Acl.NamedAclActions>(groupActions_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          alluxio.proto.shared.Acl.NamedAclActions, alluxio.proto.shared.Acl.NamedAclActions.Builder, alluxio.proto.shared.Acl.NamedAclActionsOrBuilder> groupActionsBuilder_;

      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
       */
      public java.util.List<alluxio.proto.shared.Acl.NamedAclActions> getGroupActionsList() {
        if (groupActionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(groupActions_);
        } else {
          return groupActionsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
       */
      public int getGroupActionsCount() {
        if (groupActionsBuilder_ == null) {
          return groupActions_.size();
        } else {
          return groupActionsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
       */
      public alluxio.proto.shared.Acl.NamedAclActions getGroupActions(int index) {
        if (groupActionsBuilder_ == null) {
          return groupActions_.get(index);
        } else {
          return groupActionsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
       */
      public Builder setGroupActions(
          int index, alluxio.proto.shared.Acl.NamedAclActions value) {
        if (groupActionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGroupActionsIsMutable();
          groupActions_.set(index, value);
          onChanged();
        } else {
          groupActionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
       */
      public Builder setGroupActions(
          int index, alluxio.proto.shared.Acl.NamedAclActions.Builder builderForValue) {
        if (groupActionsBuilder_ == null) {
          ensureGroupActionsIsMutable();
          groupActions_.set(index, builderForValue.build());
          onChanged();
        } else {
          groupActionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
       */
      public Builder addGroupActions(alluxio.proto.shared.Acl.NamedAclActions value) {
        if (groupActionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGroupActionsIsMutable();
          groupActions_.add(value);
          onChanged();
        } else {
          groupActionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
       */
      public Builder addGroupActions(
          int index, alluxio.proto.shared.Acl.NamedAclActions value) {
        if (groupActionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGroupActionsIsMutable();
          groupActions_.add(index, value);
          onChanged();
        } else {
          groupActionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
       */
      public Builder addGroupActions(
          alluxio.proto.shared.Acl.NamedAclActions.Builder builderForValue) {
        if (groupActionsBuilder_ == null) {
          ensureGroupActionsIsMutable();
          groupActions_.add(builderForValue.build());
          onChanged();
        } else {
          groupActionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
       */
      public Builder addGroupActions(
          int index, alluxio.proto.shared.Acl.NamedAclActions.Builder builderForValue) {
        if (groupActionsBuilder_ == null) {
          ensureGroupActionsIsMutable();
          groupActions_.add(index, builderForValue.build());
          onChanged();
        } else {
          groupActionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
       */
      public Builder addAllGroupActions(
          java.lang.Iterable<? extends alluxio.proto.shared.Acl.NamedAclActions> values) {
        if (groupActionsBuilder_ == null) {
          ensureGroupActionsIsMutable();
          super.addAll(values, groupActions_);
          onChanged();
        } else {
          groupActionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
       */
      public Builder clearGroupActions() {
        if (groupActionsBuilder_ == null) {
          groupActions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          groupActionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
       */
      public Builder removeGroupActions(int index) {
        if (groupActionsBuilder_ == null) {
          ensureGroupActionsIsMutable();
          groupActions_.remove(index);
          onChanged();
        } else {
          groupActionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
       */
      public alluxio.proto.shared.Acl.NamedAclActions.Builder getGroupActionsBuilder(
          int index) {
        return getGroupActionsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
       */
      public alluxio.proto.shared.Acl.NamedAclActionsOrBuilder getGroupActionsOrBuilder(
          int index) {
        if (groupActionsBuilder_ == null) {
          return groupActions_.get(index);  } else {
          return groupActionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
       */
      public java.util.List<? extends alluxio.proto.shared.Acl.NamedAclActionsOrBuilder> 
           getGroupActionsOrBuilderList() {
        if (groupActionsBuilder_ != null) {
          return groupActionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(groupActions_);
        }
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
       */
      public alluxio.proto.shared.Acl.NamedAclActions.Builder addGroupActionsBuilder() {
        return getGroupActionsFieldBuilder().addBuilder(
            alluxio.proto.shared.Acl.NamedAclActions.getDefaultInstance());
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
       */
      public alluxio.proto.shared.Acl.NamedAclActions.Builder addGroupActionsBuilder(
          int index) {
        return getGroupActionsFieldBuilder().addBuilder(
            index, alluxio.proto.shared.Acl.NamedAclActions.getDefaultInstance());
      }
      /**
       * <code>repeated .alluxio.proto.shared.NamedAclActions groupActions = 4;</code>
       */
      public java.util.List<alluxio.proto.shared.Acl.NamedAclActions.Builder> 
           getGroupActionsBuilderList() {
        return getGroupActionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          alluxio.proto.shared.Acl.NamedAclActions, alluxio.proto.shared.Acl.NamedAclActions.Builder, alluxio.proto.shared.Acl.NamedAclActionsOrBuilder> 
          getGroupActionsFieldBuilder() {
        if (groupActionsBuilder_ == null) {
          groupActionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              alluxio.proto.shared.Acl.NamedAclActions, alluxio.proto.shared.Acl.NamedAclActions.Builder, alluxio.proto.shared.Acl.NamedAclActionsOrBuilder>(
                  groupActions_,
                  ((bitField0_ & 0x00000008) == 0x00000008),
                  getParentForChildren(),
                  isClean());
          groupActions_ = null;
        }
        return groupActionsBuilder_;
      }

      // optional .alluxio.proto.shared.AclActions maskActions = 5;
      private alluxio.proto.shared.Acl.AclActions maskActions_ = alluxio.proto.shared.Acl.AclActions.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          alluxio.proto.shared.Acl.AclActions, alluxio.proto.shared.Acl.AclActions.Builder, alluxio.proto.shared.Acl.AclActionsOrBuilder> maskActionsBuilder_;
      /**
       * <code>optional .alluxio.proto.shared.AclActions maskActions = 5;</code>
       */
      public boolean hasMaskActions() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions maskActions = 5;</code>
       */
      public alluxio.proto.shared.Acl.AclActions getMaskActions() {
        if (maskActionsBuilder_ == null) {
          return maskActions_;
        } else {
          return maskActionsBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions maskActions = 5;</code>
       */
      public Builder setMaskActions(alluxio.proto.shared.Acl.AclActions value) {
        if (maskActionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          maskActions_ = value;
          onChanged();
        } else {
          maskActionsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions maskActions = 5;</code>
       */
      public Builder setMaskActions(
          alluxio.proto.shared.Acl.AclActions.Builder builderForValue) {
        if (maskActionsBuilder_ == null) {
          maskActions_ = builderForValue.build();
          onChanged();
        } else {
          maskActionsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions maskActions = 5;</code>
       */
      public Builder mergeMaskActions(alluxio.proto.shared.Acl.AclActions value) {
        if (maskActionsBuilder_ == null) {
          if (((bitField0_ & 0x00000010) == 0x00000010) &&
              maskActions_ != alluxio.proto.shared.Acl.AclActions.getDefaultInstance()) {
            maskActions_ =
              alluxio.proto.shared.Acl.AclActions.newBuilder(maskActions_).mergeFrom(value).buildPartial();
          } else {
            maskActions_ = value;
          }
          onChanged();
        } else {
          maskActionsBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions maskActions = 5;</code>
       */
      public Builder clearMaskActions() {
        if (maskActionsBuilder_ == null) {
          maskActions_ = alluxio.proto.shared.Acl.AclActions.getDefaultInstance();
          onChanged();
        } else {
          maskActionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions maskActions = 5;</code>
       */
      public alluxio.proto.shared.Acl.AclActions.Builder getMaskActionsBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getMaskActionsFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions maskActions = 5;</code>
       */
      public alluxio.proto.shared.Acl.AclActionsOrBuilder getMaskActionsOrBuilder() {
        if (maskActionsBuilder_ != null) {
          return maskActionsBuilder_.getMessageOrBuilder();
        } else {
          return maskActions_;
        }
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions maskActions = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          alluxio.proto.shared.Acl.AclActions, alluxio.proto.shared.Acl.AclActions.Builder, alluxio.proto.shared.Acl.AclActionsOrBuilder> 
          getMaskActionsFieldBuilder() {
        if (maskActionsBuilder_ == null) {
          maskActionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              alluxio.proto.shared.Acl.AclActions, alluxio.proto.shared.Acl.AclActions.Builder, alluxio.proto.shared.Acl.AclActionsOrBuilder>(
                  maskActions_,
                  getParentForChildren(),
                  isClean());
          maskActions_ = null;
        }
        return maskActionsBuilder_;
      }

      // optional .alluxio.proto.shared.AclActions otherActions = 6;
      private alluxio.proto.shared.Acl.AclActions otherActions_ = alluxio.proto.shared.Acl.AclActions.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          alluxio.proto.shared.Acl.AclActions, alluxio.proto.shared.Acl.AclActions.Builder, alluxio.proto.shared.Acl.AclActionsOrBuilder> otherActionsBuilder_;
      /**
       * <code>optional .alluxio.proto.shared.AclActions otherActions = 6;</code>
       */
      public boolean hasOtherActions() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions otherActions = 6;</code>
       */
      public alluxio.proto.shared.Acl.AclActions getOtherActions() {
        if (otherActionsBuilder_ == null) {
          return otherActions_;
        } else {
          return otherActionsBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions otherActions = 6;</code>
       */
      public Builder setOtherActions(alluxio.proto.shared.Acl.AclActions value) {
        if (otherActionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          otherActions_ = value;
          onChanged();
        } else {
          otherActionsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions otherActions = 6;</code>
       */
      public Builder setOtherActions(
          alluxio.proto.shared.Acl.AclActions.Builder builderForValue) {
        if (otherActionsBuilder_ == null) {
          otherActions_ = builderForValue.build();
          onChanged();
        } else {
          otherActionsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions otherActions = 6;</code>
       */
      public Builder mergeOtherActions(alluxio.proto.shared.Acl.AclActions value) {
        if (otherActionsBuilder_ == null) {
          if (((bitField0_ & 0x00000020) == 0x00000020) &&
              otherActions_ != alluxio.proto.shared.Acl.AclActions.getDefaultInstance()) {
            otherActions_ =
              alluxio.proto.shared.Acl.AclActions.newBuilder(otherActions_).mergeFrom(value).buildPartial();
          } else {
            otherActions_ = value;
          }
          onChanged();
        } else {
          otherActionsBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions otherActions = 6;</code>
       */
      public Builder clearOtherActions() {
        if (otherActionsBuilder_ == null) {
          otherActions_ = alluxio.proto.shared.Acl.AclActions.getDefaultInstance();
          onChanged();
        } else {
          otherActionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions otherActions = 6;</code>
       */
      public alluxio.proto.shared.Acl.AclActions.Builder getOtherActionsBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getOtherActionsFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions otherActions = 6;</code>
       */
      public alluxio.proto.shared.Acl.AclActionsOrBuilder getOtherActionsOrBuilder() {
        if (otherActionsBuilder_ != null) {
          return otherActionsBuilder_.getMessageOrBuilder();
        } else {
          return otherActions_;
        }
      }
      /**
       * <code>optional .alluxio.proto.shared.AclActions otherActions = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          alluxio.proto.shared.Acl.AclActions, alluxio.proto.shared.Acl.AclActions.Builder, alluxio.proto.shared.Acl.AclActionsOrBuilder> 
          getOtherActionsFieldBuilder() {
        if (otherActionsBuilder_ == null) {
          otherActionsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              alluxio.proto.shared.Acl.AclActions, alluxio.proto.shared.Acl.AclActions.Builder, alluxio.proto.shared.Acl.AclActionsOrBuilder>(
                  otherActions_,
                  getParentForChildren(),
                  isClean());
          otherActions_ = null;
        }
        return otherActionsBuilder_;
      }

      // optional bool isDefault = 7;
      private boolean isDefault_ ;
      /**
       * <code>optional bool isDefault = 7;</code>
       */
      public boolean hasIsDefault() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional bool isDefault = 7;</code>
       */
      public boolean getIsDefault() {
        return isDefault_;
      }
      /**
       * <code>optional bool isDefault = 7;</code>
       */
      public Builder setIsDefault(boolean value) {
        bitField0_ |= 0x00000040;
        isDefault_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool isDefault = 7;</code>
       */
      public Builder clearIsDefault() {
        bitField0_ = (bitField0_ & ~0x00000040);
        isDefault_ = false;
        onChanged();
        return this;
      }

      // optional bool isEmpty = 8;
      private boolean isEmpty_ ;
      /**
       * <code>optional bool isEmpty = 8;</code>
       */
      public boolean hasIsEmpty() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional bool isEmpty = 8;</code>
       */
      public boolean getIsEmpty() {
        return isEmpty_;
      }
      /**
       * <code>optional bool isEmpty = 8;</code>
       */
      public Builder setIsEmpty(boolean value) {
        bitField0_ |= 0x00000080;
        isEmpty_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool isEmpty = 8;</code>
       */
      public Builder clearIsEmpty() {
        bitField0_ = (bitField0_ & ~0x00000080);
        isEmpty_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:alluxio.proto.shared.AccessControlList)
    }

    static {
      defaultInstance = new AccessControlList(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:alluxio.proto.shared.AccessControlList)
  }

  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_alluxio_proto_shared_AclActions_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_alluxio_proto_shared_AclActions_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_alluxio_proto_shared_AclEntry_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_alluxio_proto_shared_AclEntry_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_alluxio_proto_shared_NamedAclActions_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_alluxio_proto_shared_NamedAclActions_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_alluxio_proto_shared_AccessControlList_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_alluxio_proto_shared_AccessControlList_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\020shared/acl.proto\022\024alluxio.proto.shared" +
      "\">\n\nAclActions\0220\n\007actions\030\001 \003(\0162\037.alluxi" +
      "o.proto.shared.AclAction\"\222\001\n\010AclEntry\0220\n" +
      "\004type\030\001 \001(\0162\".alluxio.proto.shared.AclEn" +
      "tryType\022\017\n\007subject\030\002 \001(\t\0220\n\007actions\030\003 \003(" +
      "\0162\037.alluxio.proto.shared.AclAction\022\021\n\tis" +
      "Default\030\004 \001(\010\"R\n\017NamedAclActions\022\014\n\004name" +
      "\030\001 \001(\t\0221\n\007actions\030\002 \001(\0132 .alluxio.proto." +
      "shared.AclActions\"\310\002\n\021AccessControlList\022" +
      "\022\n\nowningUser\030\001 \001(\t\022\023\n\013owningGroup\030\002 \001(\t",
      "\022:\n\013userActions\030\003 \003(\0132%.alluxio.proto.sh" +
      "ared.NamedAclActions\022;\n\014groupActions\030\004 \003" +
      "(\0132%.alluxio.proto.shared.NamedAclAction" +
      "s\0225\n\013maskActions\030\005 \001(\0132 .alluxio.proto.s" +
      "hared.AclActions\0226\n\014otherActions\030\006 \001(\0132 " +
      ".alluxio.proto.shared.AclActions\022\021\n\tisDe" +
      "fault\030\007 \001(\010\022\017\n\007isEmpty\030\010 \001(\010*-\n\tAclActio" +
      "n\022\010\n\004READ\020\000\022\t\n\005WRITE\020\001\022\013\n\007EXECUTE\020\002*a\n\014A" +
      "clEntryType\022\t\n\005OWNER\020\000\022\016\n\nNAMED_USER\020\001\022\020" +
      "\n\014OWNING_GROUP\020\002\022\017\n\013NAMED_GROUP\020\003\022\010\n\004MAS",
      "K\020\004\022\t\n\005OTHER\020\005"
    };
    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;
          internal_static_alluxio_proto_shared_AclActions_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_alluxio_proto_shared_AclActions_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_alluxio_proto_shared_AclActions_descriptor,
              new java.lang.String[] { "Actions", });
          internal_static_alluxio_proto_shared_AclEntry_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_alluxio_proto_shared_AclEntry_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_alluxio_proto_shared_AclEntry_descriptor,
              new java.lang.String[] { "Type", "Subject", "Actions", "IsDefault", });
          internal_static_alluxio_proto_shared_NamedAclActions_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_alluxio_proto_shared_NamedAclActions_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_alluxio_proto_shared_NamedAclActions_descriptor,
              new java.lang.String[] { "Name", "Actions", });
          internal_static_alluxio_proto_shared_AccessControlList_descriptor =
            getDescriptor().getMessageTypes().get(3);
          internal_static_alluxio_proto_shared_AccessControlList_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_alluxio_proto_shared_AccessControlList_descriptor,
              new java.lang.String[] { "OwningUser", "OwningGroup", "UserActions", "GroupActions", "MaskActions", "OtherActions", "IsDefault", "IsEmpty", });
          return null;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
  }

  // @@protoc_insertion_point(outer_class_scope)
}
