content: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: AbilityMetaModifierChange.proto
  
  package emu.grasscutter.net.proto;
  
  public final class AbilityMetaModifierChangeOuterClass {
    private AbilityMetaModifierChangeOuterClass() {}
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistryLite registry) {
    }
  
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistry registry) {
      registerAllExtensions(
          (com.google.protobuf.ExtensionRegistryLite) registry);
    }
    public interface AbilityMetaModifierChangeOrBuilder extends
        // @@protoc_insertion_point(interface_extends:AbilityMetaModifierChange)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>.AbilityAttachedModifier attached_instanced_modifier = 3;</code>
       * @return Whether the attachedInstancedModifier field is set.
       */
      boolean hasAttachedInstancedModifier();
      /**
       * <code>.AbilityAttachedModifier attached_instanced_modifier = 3;</code>
       * @return The attachedInstancedModifier.
       */
      emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier getAttachedInstancedModifier();
      /**
       * <code>.AbilityAttachedModifier attached_instanced_modifier = 3;</code>
       */
      emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifierOrBuilder getAttachedInstancedModifierOrBuilder();
  
      /**
       * <code>bool is_attached_parent_ability = 5;</code>
       * @return The isAttachedParentAbility.
       */
      boolean getIsAttachedParentAbility();
  
      /**
       * <code>repeated .ModifierProperty properties = 14;</code>
       */
      java.util.List<emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty> 
          getPropertiesList();
      /**
       * <code>repeated .ModifierProperty properties = 14;</code>
       */
      emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty getProperties(int index);
      /**
       * <code>repeated .ModifierProperty properties = 14;</code>
       */
      int getPropertiesCount();
      /**
       * <code>repeated .ModifierProperty properties = 14;</code>
       */
      java.util.List<? extends emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierPropertyOrBuilder> 
          getPropertiesOrBuilderList();
      /**
       * <code>repeated .ModifierProperty properties = 14;</code>
       */
      emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierPropertyOrBuilder getPropertiesOrBuilder(
          int index);
  
      /**
       * <code>bool is_mute_remote = 12;</code>
       * @return The isMuteRemote.
       */
      boolean getIsMuteRemote();
  
      /**
       * <code>int32 modifier_local_id = 2;</code>
       * @return The modifierLocalId.
       */
      int getModifierLocalId();
  
      /**
       * <code>bool is_durability_zero = 8;</code>
       * @return The isDurabilityZero.
       */
      boolean getIsDurabilityZero();
  
      /**
       * <code>.AbilityString parent_ability_name = 13;</code>
       * @return Whether the parentAbilityName field is set.
       */
      boolean hasParentAbilityName();
      /**
       * <code>.AbilityString parent_ability_name = 13;</code>
       * @return The parentAbilityName.
       */
      emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString getParentAbilityName();
      /**
       * <code>.AbilityString parent_ability_name = 13;</code>
       */
      emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityStringOrBuilder getParentAbilityNameOrBuilder();
  
      /**
       * <code>uint32 server_buff_uid = 9;</code>
       * @return The serverBuffUid.
       */
      int getServerBuffUid();
  
      /**
       * <code>uint32 apply_entity_id = 7;</code>
       * @return The applyEntityId.
       */
      int getApplyEntityId();
  
      /**
       * <code>.AbilityString parent_ability_override = 15;</code>
       * @return Whether the parentAbilityOverride field is set.
       */
      boolean hasParentAbilityOverride();
      /**
       * <code>.AbilityString parent_ability_override = 15;</code>
       * @return The parentAbilityOverride.
       */
      emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString getParentAbilityOverride();
      /**
       * <code>.AbilityString parent_ability_override = 15;</code>
       */
      emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityStringOrBuilder getParentAbilityOverrideOrBuilder();
  
      /**
       * <code>.ModifierAction action = 4;</code>
       * @return The enum numeric value on the wire for action.
       */
      int getActionValue();
      /**
       * <code>.ModifierAction action = 4;</code>
       * @return The action.
       */
      emu.grasscutter.net.proto.ModifierActionOuterClass.ModifierAction getAction();
    }
    /**
     * Protobuf type {@code AbilityMetaModifierChange}
     */
    public static final class AbilityMetaModifierChange extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:AbilityMetaModifierChange)
        AbilityMetaModifierChangeOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use AbilityMetaModifierChange.newBuilder() to construct.
      private AbilityMetaModifierChange(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private AbilityMetaModifierChange() {
        properties_ = java.util.Collections.emptyList();
        action_ = 0;
      }
  
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new AbilityMetaModifierChange();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private AbilityMetaModifierChange(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 16: {
  
                modifierLocalId_ = input.readInt32();
                break;
              }
              case 26: {
                emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier.Builder subBuilder = null;
                if (attachedInstancedModifier_ != null) {
                  subBuilder = attachedInstancedModifier_.toBuilder();
                }
                attachedInstancedModifier_ = input.readMessage(emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(attachedInstancedModifier_);
                  attachedInstancedModifier_ = subBuilder.buildPartial();
                }
  
                break;
              }
              case 32: {
                int rawValue = input.readEnum();
  
                action_ = rawValue;
                break;
              }
              case 40: {
  
                isAttachedParentAbility_ = input.readBool();
                break;
              }
              case 56: {
  
                applyEntityId_ = input.readUInt32();
                break;
              }
              case 64: {
  
                isDurabilityZero_ = input.readBool();
                break;
              }
              case 72: {
  
                serverBuffUid_ = input.readUInt32();
                break;
              }
              case 96: {
  
                isMuteRemote_ = input.readBool();
                break;
              }
              case 106: {
                emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.Builder subBuilder = null;
                if (parentAbilityName_ != null) {
                  subBuilder = parentAbilityName_.toBuilder();
                }
                parentAbilityName_ = input.readMessage(emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(parentAbilityName_);
                  parentAbilityName_ = subBuilder.buildPartial();
                }
  
                break;
              }
              case 114: {
                if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                  properties_ = new java.util.ArrayList<emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty>();
                  mutable_bitField0_ |= 0x00000001;
                }
                properties_.add(
                    input.readMessage(emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty.parser(), extensionRegistry));
                break;
              }
              case 122: {
                emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.Builder subBuilder = null;
                if (parentAbilityOverride_ != null) {
                  subBuilder = parentAbilityOverride_.toBuilder();
                }
                parentAbilityOverride_ = input.readMessage(emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(parentAbilityOverride_);
                  parentAbilityOverride_ = subBuilder.buildPartial();
                }
  
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000001) != 0)) {
            properties_ = java.util.Collections.unmodifiableList(properties_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.internal_static_AbilityMetaModifierChange_descriptor;
      }
  
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.internal_static_AbilityMetaModifierChange_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange.class, emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange.Builder.class);
      }
  
      public static final int ATTACHED_INSTANCED_MODIFIER_FIELD_NUMBER = 3;
      private emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier attachedInstancedModifier_;
      /**
       * <code>.AbilityAttachedModifier attached_instanced_modifier = 3;</code>
       * @return Whether the attachedInstancedModifier field is set.
       */
      @java.lang.Override
      public boolean hasAttachedInstancedModifier() {
        return attachedInstancedModifier_ != null;
      }
      /**
       * <code>.AbilityAttachedModifier attached_instanced_modifier = 3;</code>
       * @return The attachedInstancedModifier.
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier getAttachedInstancedModifier() {
        return attachedInstancedModifier_ == null ? emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier.getDefaultInstance() : attachedInstancedModifier_;
      }
      /**
       * <code>.AbilityAttachedModifier attached_instanced_modifier = 3;</code>
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifierOrBuilder getAttachedInstancedModifierOrBuilder() {
        return getAttachedInstancedModifier();
      }
  
      public static final int IS_ATTACHED_PARENT_ABILITY_FIELD_NUMBER = 5;
      private boolean isAttachedParentAbility_;
      /**
       * <code>bool is_attached_parent_ability = 5;</code>
       * @return The isAttachedParentAbility.
       */
      @java.lang.Override
      public boolean getIsAttachedParentAbility() {
        return isAttachedParentAbility_;
      }
  
      public static final int PROPERTIES_FIELD_NUMBER = 14;
      private java.util.List<emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty> properties_;
      /**
       * <code>repeated .ModifierProperty properties = 14;</code>
       */
      @java.lang.Override
      public java.util.List<emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty> getPropertiesList() {
        return properties_;
      }
      /**
       * <code>repeated .ModifierProperty properties = 14;</code>
       */
      @java.lang.Override
      public java.util.List<? extends emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierPropertyOrBuilder> 
          getPropertiesOrBuilderList() {
        return properties_;
      }
      /**
       * <code>repeated .ModifierProperty properties = 14;</code>
       */
      @java.lang.Override
      public int getPropertiesCount() {
        return properties_.size();
      }
      /**
       * <code>repeated .ModifierProperty properties = 14;</code>
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty getProperties(int index) {
        return properties_.get(index);
      }
      /**
       * <code>repeated .ModifierProperty properties = 14;</code>
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierPropertyOrBuilder getPropertiesOrBuilder(
          int index) {
        return properties_.get(index);
      }
  
      public static final int IS_MUTE_REMOTE_FIELD_NUMBER = 12;
      private boolean isMuteRemote_;
      /**
       * <code>bool is_mute_remote = 12;</code>
       * @return The isMuteRemote.
       */
      @java.lang.Override
      public boolean getIsMuteRemote() {
        return isMuteRemote_;
      }
  
      public static final int MODIFIER_LOCAL_ID_FIELD_NUMBER = 2;
      private int modifierLocalId_;
      /**
       * <code>int32 modifier_local_id = 2;</code>
       * @return The modifierLocalId.
       */
      @java.lang.Override
      public int getModifierLocalId() {
        return modifierLocalId_;
      }
  
      public static final int IS_DURABILITY_ZERO_FIELD_NUMBER = 8;
      private boolean isDurabilityZero_;
      /**
       * <code>bool is_durability_zero = 8;</code>
       * @return The isDurabilityZero.
       */
      @java.lang.Override
      public boolean getIsDurabilityZero() {
        return isDurabilityZero_;
      }
  
      public static final int PARENT_ABILITY_NAME_FIELD_NUMBER = 13;
      private emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString parentAbilityName_;
      /**
       * <code>.AbilityString parent_ability_name = 13;</code>
       * @return Whether the parentAbilityName field is set.
       */
      @java.lang.Override
      public boolean hasParentAbilityName() {
        return parentAbilityName_ != null;
      }
      /**
       * <code>.AbilityString parent_ability_name = 13;</code>
       * @return The parentAbilityName.
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString getParentAbilityName() {
        return parentAbilityName_ == null ? emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.getDefaultInstance() : parentAbilityName_;
      }
      /**
       * <code>.AbilityString parent_ability_name = 13;</code>
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityStringOrBuilder getParentAbilityNameOrBuilder() {
        return getParentAbilityName();
      }
  
      public static final int SERVER_BUFF_UID_FIELD_NUMBER = 9;
      private int serverBuffUid_;
      /**
       * <code>uint32 server_buff_uid = 9;</code>
       * @return The serverBuffUid.
       */
      @java.lang.Override
      public int getServerBuffUid() {
        return serverBuffUid_;
      }
  
      public static final int APPLY_ENTITY_ID_FIELD_NUMBER = 7;
      private int applyEntityId_;
      /**
       * <code>uint32 apply_entity_id = 7;</code>
       * @return The applyEntityId.
       */
      @java.lang.Override
      public int getApplyEntityId() {
        return applyEntityId_;
      }
  
      public static final int PARENT_ABILITY_OVERRIDE_FIELD_NUMBER = 15;
      private emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString parentAbilityOverride_;
      /**
       * <code>.AbilityString parent_ability_override = 15;</code>
       * @return Whether the parentAbilityOverride field is set.
       */
      @java.lang.Override
      public boolean hasParentAbilityOverride() {
        return parentAbilityOverride_ != null;
      }
      /**
       * <code>.AbilityString parent_ability_override = 15;</code>
       * @return The parentAbilityOverride.
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString getParentAbilityOverride() {
        return parentAbilityOverride_ == null ? emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.getDefaultInstance() : parentAbilityOverride_;
      }
      /**
       * <code>.AbilityString parent_ability_override = 15;</code>
       */
      @java.lang.Override
      public emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityStringOrBuilder getParentAbilityOverrideOrBuilder() {
        return getParentAbilityOverride();
      }
  
      public static final int ACTION_FIELD_NUMBER = 4;
      private int action_;
      /**
       * <code>.ModifierAction action = 4;</code>
       * @return The enum numeric value on the wire for action.
       */
      @java.lang.Override public int getActionValue() {
        return action_;
      }
      /**
       * <code>.ModifierAction action = 4;</code>
       * @return The action.
       */
      @java.lang.Override public emu.grasscutter.net.proto.ModifierActionOuterClass.ModifierAction getAction() {
        @SuppressWarnings("deprecation")
        emu.grasscutter.net.proto.ModifierActionOuterClass.ModifierAction result = emu.grasscutter.net.proto.ModifierActionOuterClass.ModifierAction.valueOf(action_);
        return result == null ? emu.grasscutter.net.proto.ModifierActionOuterClass.ModifierAction.UNRECOGNIZED : result;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (modifierLocalId_ != 0) {
          output.writeInt32(2, modifierLocalId_);
        }
        if (attachedInstancedModifier_ != null) {
          output.writeMessage(3, getAttachedInstancedModifier());
        }
        if (action_ != emu.grasscutter.net.proto.ModifierActionOuterClass.ModifierAction.MODIFIER_ACTION_ADDED.getNumber()) {
          output.writeEnum(4, action_);
        }
        if (isAttachedParentAbility_ != false) {
          output.writeBool(5, isAttachedParentAbility_);
        }
        if (applyEntityId_ != 0) {
          output.writeUInt32(7, applyEntityId_);
        }
        if (isDurabilityZero_ != false) {
          output.writeBool(8, isDurabilityZero_);
        }
        if (serverBuffUid_ != 0) {
          output.writeUInt32(9, serverBuffUid_);
        }
        if (isMuteRemote_ != false) {
          output.writeBool(12, isMuteRemote_);
        }
        if (parentAbilityName_ != null) {
          output.writeMessage(13, getParentAbilityName());
        }
        for (int i = 0; i < properties_.size(); i++) {
          output.writeMessage(14, properties_.get(i));
        }
        if (parentAbilityOverride_ != null) {
          output.writeMessage(15, getParentAbilityOverride());
        }
        unknownFields.writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (modifierLocalId_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, modifierLocalId_);
        }
        if (attachedInstancedModifier_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, getAttachedInstancedModifier());
        }
        if (action_ != emu.grasscutter.net.proto.ModifierActionOuterClass.ModifierAction.MODIFIER_ACTION_ADDED.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(4, action_);
        }
        if (isAttachedParentAbility_ != false) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(5, isAttachedParentAbility_);
        }
        if (applyEntityId_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(7, applyEntityId_);
        }
        if (isDurabilityZero_ != false) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(8, isDurabilityZero_);
        }
        if (serverBuffUid_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(9, serverBuffUid_);
        }
        if (isMuteRemote_ != false) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(12, isMuteRemote_);
        }
        if (parentAbilityName_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(13, getParentAbilityName());
        }
        for (int i = 0; i < properties_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(14, properties_.get(i));
        }
        if (parentAbilityOverride_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(15, getParentAbilityOverride());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange)) {
          return super.equals(obj);
        }
        emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange other = (emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange) obj;
  
        if (hasAttachedInstancedModifier() != other.hasAttachedInstancedModifier()) return false;
        if (hasAttachedInstancedModifier()) {
          if (!getAttachedInstancedModifier()
              .equals(other.getAttachedInstancedModifier())) return false;
        }
        if (getIsAttachedParentAbility()
            != other.getIsAttachedParentAbility()) return false;
        if (!getPropertiesList()
            .equals(other.getPropertiesList())) return false;
        if (getIsMuteRemote()
            != other.getIsMuteRemote()) return false;
        if (getModifierLocalId()
            != other.getModifierLocalId()) return false;
        if (getIsDurabilityZero()
            != other.getIsDurabilityZero()) return false;
        if (hasParentAbilityName() != other.hasParentAbilityName()) return false;
        if (hasParentAbilityName()) {
          if (!getParentAbilityName()
              .equals(other.getParentAbilityName())) return false;
        }
        if (getServerBuffUid()
            != other.getServerBuffUid()) return false;
        if (getApplyEntityId()
            != other.getApplyEntityId()) return false;
        if (hasParentAbilityOverride() != other.hasParentAbilityOverride()) return false;
        if (hasParentAbilityOverride()) {
          if (!getParentAbilityOverride()
              .equals(other.getParentAbilityOverride())) return false;
        }
        if (action_ != other.action_) return false;
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasAttachedInstancedModifier()) {
          hash = (37 * hash) + ATTACHED_INSTANCED_MODIFIER_FIELD_NUMBER;
          hash = (53 * hash) + getAttachedInstancedModifier().hashCode();
        }
        hash = (37 * hash) + IS_ATTACHED_PARENT_ABILITY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsAttachedParentAbility());
        if (getPropertiesCount() > 0) {
          hash = (37 * hash) + PROPERTIES_FIELD_NUMBER;
          hash = (53 * hash) + getPropertiesList().hashCode();
        }
        hash = (37 * hash) + IS_MUTE_REMOTE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsMuteRemote());
        hash = (37 * hash) + MODIFIER_LOCAL_ID_FIELD_NUMBER;
        hash = (53 * hash) + getModifierLocalId();
        hash = (37 * hash) + IS_DURABILITY_ZERO_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsDurabilityZero());
        if (hasParentAbilityName()) {
          hash = (37 * hash) + PARENT_ABILITY_NAME_FIELD_NUMBER;
          hash = (53 * hash) + getParentAbilityName().hashCode();
        }
        hash = (37 * hash) + SERVER_BUFF_UID_FIELD_NUMBER;
        hash = (53 * hash) + getServerBuffUid();
        hash = (37 * hash) + APPLY_ENTITY_ID_FIELD_NUMBER;
        hash = (53 * hash) + getApplyEntityId();
        if (hasParentAbilityOverride()) {
          hash = (37 * hash) + PARENT_ABILITY_OVERRIDE_FIELD_NUMBER;
          hash = (53 * hash) + getParentAbilityOverride().hashCode();
        }
        hash = (37 * hash) + ACTION_FIELD_NUMBER;
        hash = (53 * hash) + action_;
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code AbilityMetaModifierChange}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:AbilityMetaModifierChange)
          emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChangeOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.internal_static_AbilityMetaModifierChange_descriptor;
        }
  
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.internal_static_AbilityMetaModifierChange_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange.class, emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange.Builder.class);
        }
  
        // Construct using emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getPropertiesFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (attachedInstancedModifierBuilder_ == null) {
            attachedInstancedModifier_ = null;
          } else {
            attachedInstancedModifier_ = null;
            attachedInstancedModifierBuilder_ = null;
          }
          isAttachedParentAbility_ = false;
  
          if (propertiesBuilder_ == null) {
            properties_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            propertiesBuilder_.clear();
          }
          isMuteRemote_ = false;
  
          modifierLocalId_ = 0;
  
          isDurabilityZero_ = false;
  
          if (parentAbilityNameBuilder_ == null) {
            parentAbilityName_ = null;
          } else {
            parentAbilityName_ = null;
            parentAbilityNameBuilder_ = null;
          }
          serverBuffUid_ = 0;
  
          applyEntityId_ = 0;
  
          if (parentAbilityOverrideBuilder_ == null) {
            parentAbilityOverride_ = null;
          } else {
            parentAbilityOverride_ = null;
            parentAbilityOverrideBuilder_ = null;
          }
          action_ = 0;
  
          return this;
        }
  
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.internal_static_AbilityMetaModifierChange_descriptor;
        }
  
        @java.lang.Override
        public emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange getDefaultInstanceForType() {
          return emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange.getDefaultInstance();
        }
  
        @java.lang.Override
        public emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange build() {
          emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange buildPartial() {
          emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange result = new emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange(this);
          int from_bitField0_ = bitField0_;
          if (attachedInstancedModifierBuilder_ == null) {
            result.attachedInstancedModifier_ = attachedInstancedModifier_;
          } else {
            result.attachedInstancedModifier_ = attachedInstancedModifierBuilder_.build();
          }
          result.isAttachedParentAbility_ = isAttachedParentAbility_;
          if (propertiesBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0)) {
              properties_ = java.util.Collections.unmodifiableList(properties_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.properties_ = properties_;
          } else {
            result.properties_ = propertiesBuilder_.build();
          }
          result.isMuteRemote_ = isMuteRemote_;
          result.modifierLocalId_ = modifierLocalId_;
          result.isDurabilityZero_ = isDurabilityZero_;
          if (parentAbilityNameBuilder_ == null) {
            result.parentAbilityName_ = parentAbilityName_;
          } else {
            result.parentAbilityName_ = parentAbilityNameBuilder_.build();
          }
          result.serverBuffUid_ = serverBuffUid_;
          result.applyEntityId_ = applyEntityId_;
          if (parentAbilityOverrideBuilder_ == null) {
            result.parentAbilityOverride_ = parentAbilityOverride_;
          } else {
            result.parentAbilityOverride_ = parentAbilityOverrideBuilder_.build();
          }
          result.action_ = action_;
          onBuilt();
          return result;
        }
  
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange) {
            return mergeFrom((emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange other) {
          if (other == emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange.getDefaultInstance()) return this;
          if (other.hasAttachedInstancedModifier()) {
            mergeAttachedInstancedModifier(other.getAttachedInstancedModifier());
          }
          if (other.getIsAttachedParentAbility() != false) {
            setIsAttachedParentAbility(other.getIsAttachedParentAbility());
          }
          if (propertiesBuilder_ == null) {
            if (!other.properties_.isEmpty()) {
              if (properties_.isEmpty()) {
                properties_ = other.properties_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensurePropertiesIsMutable();
                properties_.addAll(other.properties_);
              }
              onChanged();
            }
          } else {
            if (!other.properties_.isEmpty()) {
              if (propertiesBuilder_.isEmpty()) {
                propertiesBuilder_.dispose();
                propertiesBuilder_ = null;
                properties_ = other.properties_;
                bitField0_ = (bitField0_ & ~0x00000001);
                propertiesBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getPropertiesFieldBuilder() : null;
              } else {
                propertiesBuilder_.addAllMessages(other.properties_);
              }
            }
          }
          if (other.getIsMuteRemote() != false) {
            setIsMuteRemote(other.getIsMuteRemote());
          }
          if (other.getModifierLocalId() != 0) {
            setModifierLocalId(other.getModifierLocalId());
          }
          if (other.getIsDurabilityZero() != false) {
            setIsDurabilityZero(other.getIsDurabilityZero());
          }
          if (other.hasParentAbilityName()) {
            mergeParentAbilityName(other.getParentAbilityName());
          }
          if (other.getServerBuffUid() != 0) {
            setServerBuffUid(other.getServerBuffUid());
          }
          if (other.getApplyEntityId() != 0) {
            setApplyEntityId(other.getApplyEntityId());
          }
          if (other.hasParentAbilityOverride()) {
            mergeParentAbilityOverride(other.getParentAbilityOverride());
          }
          if (other.action_ != 0) {
            setActionValue(other.getActionValue());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier attachedInstancedModifier_;
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier, emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier.Builder, emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifierOrBuilder> attachedInstancedModifierBuilder_;
        /**
         * <code>.AbilityAttachedModifier attached_instanced_modifier = 3;</code>
         * @return Whether the attachedInstancedModifier field is set.
         */
        public boolean hasAttachedInstancedModifier() {
          return attachedInstancedModifierBuilder_ != null || attachedInstancedModifier_ != null;
        }
        /**
         * <code>.AbilityAttachedModifier attached_instanced_modifier = 3;</code>
         * @return The attachedInstancedModifier.
         */
        public emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier getAttachedInstancedModifier() {
          if (attachedInstancedModifierBuilder_ == null) {
            return attachedInstancedModifier_ == null ? emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier.getDefaultInstance() : attachedInstancedModifier_;
          } else {
            return attachedInstancedModifierBuilder_.getMessage();
          }
        }
        /**
         * <code>.AbilityAttachedModifier attached_instanced_modifier = 3;</code>
         */
        public Builder setAttachedInstancedModifier(emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier value) {
          if (attachedInstancedModifierBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            attachedInstancedModifier_ = value;
            onChanged();
          } else {
            attachedInstancedModifierBuilder_.setMessage(value);
          }
  
          return this;
        }
        /**
         * <code>.AbilityAttachedModifier attached_instanced_modifier = 3;</code>
         */
        public Builder setAttachedInstancedModifier(
            emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier.Builder builderForValue) {
          if (attachedInstancedModifierBuilder_ == null) {
            attachedInstancedModifier_ = builderForValue.build();
            onChanged();
          } else {
            attachedInstancedModifierBuilder_.setMessage(builderForValue.build());
          }
  
          return this;
        }
        /**
         * <code>.AbilityAttachedModifier attached_instanced_modifier = 3;</code>
         */
        public Builder mergeAttachedInstancedModifier(emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier value) {
          if (attachedInstancedModifierBuilder_ == null) {
            if (attachedInstancedModifier_ != null) {
              attachedInstancedModifier_ =
                emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier.newBuilder(attachedInstancedModifier_).mergeFrom(value).buildPartial();
            } else {
              attachedInstancedModifier_ = value;
            }
            onChanged();
          } else {
            attachedInstancedModifierBuilder_.mergeFrom(value);
          }
  
          return this;
        }
        /**
         * <code>.AbilityAttachedModifier attached_instanced_modifier = 3;</code>
         */
        public Builder clearAttachedInstancedModifier() {
          if (attachedInstancedModifierBuilder_ == null) {
            attachedInstancedModifier_ = null;
            onChanged();
          } else {
            attachedInstancedModifier_ = null;
            attachedInstancedModifierBuilder_ = null;
          }
  
          return this;
        }
        /**
         * <code>.AbilityAttachedModifier attached_instanced_modifier = 3;</code>
         */
        public emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier.Builder getAttachedInstancedModifierBuilder() {
          
          onChanged();
          return getAttachedInstancedModifierFieldBuilder().getBuilder();
        }
        /**
         * <code>.AbilityAttachedModifier attached_instanced_modifier = 3;</code>
         */
        public emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifierOrBuilder getAttachedInstancedModifierOrBuilder() {
          if (attachedInstancedModifierBuilder_ != null) {
            return attachedInstancedModifierBuilder_.getMessageOrBuilder();
          } else {
            return attachedInstancedModifier_ == null ?
                emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier.getDefaultInstance() : attachedInstancedModifier_;
          }
        }
        /**
         * <code>.AbilityAttachedModifier attached_instanced_modifier = 3;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier, emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier.Builder, emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifierOrBuilder> 
            getAttachedInstancedModifierFieldBuilder() {
          if (attachedInstancedModifierBuilder_ == null) {
            attachedInstancedModifierBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier, emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifier.Builder, emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.AbilityAttachedModifierOrBuilder>(
                    getAttachedInstancedModifier(),
                    getParentForChildren(),
                    isClean());
            attachedInstancedModifier_ = null;
          }
          return attachedInstancedModifierBuilder_;
        }
  
        private boolean isAttachedParentAbility_ ;
        /**
         * <code>bool is_attached_parent_ability = 5;</code>
         * @return The isAttachedParentAbility.
         */
        @java.lang.Override
        public boolean getIsAttachedParentAbility() {
          return isAttachedParentAbility_;
        }
        /**
         * <code>bool is_attached_parent_ability = 5;</code>
         * @param value The isAttachedParentAbility to set.
         * @return This builder for chaining.
         */
        public Builder setIsAttachedParentAbility(boolean value) {
          
          isAttachedParentAbility_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>bool is_attached_parent_ability = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearIsAttachedParentAbility() {
          
          isAttachedParentAbility_ = false;
          onChanged();
          return this;
        }
  
        private java.util.List<emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty> properties_ =
          java.util.Collections.emptyList();
        private void ensurePropertiesIsMutable() {
          if (!((bitField0_ & 0x00000001) != 0)) {
            properties_ = new java.util.ArrayList<emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty>(properties_);
            bitField0_ |= 0x00000001;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty, emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty.Builder, emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierPropertyOrBuilder> propertiesBuilder_;
  
        /**
         * <code>repeated .ModifierProperty properties = 14;</code>
         */
        public java.util.List<emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty> getPropertiesList() {
          if (propertiesBuilder_ == null) {
            return java.util.Collections.unmodifiableList(properties_);
          } else {
            return propertiesBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .ModifierProperty properties = 14;</code>
         */
        public int getPropertiesCount() {
          if (propertiesBuilder_ == null) {
            return properties_.size();
          } else {
            return propertiesBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .ModifierProperty properties = 14;</code>
         */
        public emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty getProperties(int index) {
          if (propertiesBuilder_ == null) {
            return properties_.get(index);
          } else {
            return propertiesBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .ModifierProperty properties = 14;</code>
         */
        public Builder setProperties(
            int index, emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty value) {
          if (propertiesBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePropertiesIsMutable();
            properties_.set(index, value);
            onChanged();
          } else {
            propertiesBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .ModifierProperty properties = 14;</code>
         */
        public Builder setProperties(
            int index, emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty.Builder builderForValue) {
          if (propertiesBuilder_ == null) {
            ensurePropertiesIsMutable();
            properties_.set(index, builderForValue.build());
            onChanged();
          } else {
            propertiesBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .ModifierProperty properties = 14;</code>
         */
        public Builder addProperties(emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty value) {
          if (propertiesBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePropertiesIsMutable();
            properties_.add(value);
            onChanged();
          } else {
            propertiesBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .ModifierProperty properties = 14;</code>
         */
        public Builder addProperties(
            int index, emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty value) {
          if (propertiesBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePropertiesIsMutable();
            properties_.add(index, value);
            onChanged();
          } else {
            propertiesBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .ModifierProperty properties = 14;</code>
         */
        public Builder addProperties(
            emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty.Builder builderForValue) {
          if (propertiesBuilder_ == null) {
            ensurePropertiesIsMutable();
            properties_.add(builderForValue.build());
            onChanged();
          } else {
            propertiesBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .ModifierProperty properties = 14;</code>
         */
        public Builder addProperties(
            int index, emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty.Builder builderForValue) {
          if (propertiesBuilder_ == null) {
            ensurePropertiesIsMutable();
            properties_.add(index, builderForValue.build());
            onChanged();
          } else {
            propertiesBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .ModifierProperty properties = 14;</code>
         */
        public Builder addAllProperties(
            java.lang.Iterable<? extends emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty> values) {
          if (propertiesBuilder_ == null) {
            ensurePropertiesIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, properties_);
            onChanged();
          } else {
            propertiesBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .ModifierProperty properties = 14;</code>
         */
        public Builder clearProperties() {
          if (propertiesBuilder_ == null) {
            properties_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
          } else {
            propertiesBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .ModifierProperty properties = 14;</code>
         */
        public Builder removeProperties(int index) {
          if (propertiesBuilder_ == null) {
            ensurePropertiesIsMutable();
            properties_.remove(index);
            onChanged();
          } else {
            propertiesBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .ModifierProperty properties = 14;</code>
         */
        public emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty.Builder getPropertiesBuilder(
            int index) {
          return getPropertiesFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .ModifierProperty properties = 14;</code>
         */
        public emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierPropertyOrBuilder getPropertiesOrBuilder(
            int index) {
          if (propertiesBuilder_ == null) {
            return properties_.get(index);  } else {
            return propertiesBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .ModifierProperty properties = 14;</code>
         */
        public java.util.List<? extends emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierPropertyOrBuilder> 
             getPropertiesOrBuilderList() {
          if (propertiesBuilder_ != null) {
            return propertiesBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(properties_);
          }
        }
        /**
         * <code>repeated .ModifierProperty properties = 14;</code>
         */
        public emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty.Builder addPropertiesBuilder() {
          return getPropertiesFieldBuilder().addBuilder(
              emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty.getDefaultInstance());
        }
        /**
         * <code>repeated .ModifierProperty properties = 14;</code>
         */
        public emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty.Builder addPropertiesBuilder(
            int index) {
          return getPropertiesFieldBuilder().addBuilder(
              index, emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty.getDefaultInstance());
        }
        /**
         * <code>repeated .ModifierProperty properties = 14;</code>
         */
        public java.util.List<emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty.Builder> 
             getPropertiesBuilderList() {
          return getPropertiesFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty, emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty.Builder, emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierPropertyOrBuilder> 
            getPropertiesFieldBuilder() {
          if (propertiesBuilder_ == null) {
            propertiesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty, emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierProperty.Builder, emu.grasscutter.net.proto.ModifierPropertyOuterClass.ModifierPropertyOrBuilder>(
                    properties_,
                    ((bitField0_ & 0x00000001) != 0),
                    getParentForChildren(),
                    isClean());
            properties_ = null;
          }
          return propertiesBuilder_;
        }
  
        private boolean isMuteRemote_ ;
        /**
         * <code>bool is_mute_remote = 12;</code>
         * @return The isMuteRemote.
         */
        @java.lang.Override
        public boolean getIsMuteRemote() {
          return isMuteRemote_;
        }
        /**
         * <code>bool is_mute_remote = 12;</code>
         * @param value The isMuteRemote to set.
         * @return This builder for chaining.
         */
        public Builder setIsMuteRemote(boolean value) {
          
          isMuteRemote_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>bool is_mute_remote = 12;</code>
         * @return This builder for chaining.
         */
        public Builder clearIsMuteRemote() {
          
          isMuteRemote_ = false;
          onChanged();
          return this;
        }
  
        private int modifierLocalId_ ;
        /**
         * <code>int32 modifier_local_id = 2;</code>
         * @return The modifierLocalId.
         */
        @java.lang.Override
        public int getModifierLocalId() {
          return modifierLocalId_;
        }
        /**
         * <code>int32 modifier_local_id = 2;</code>
         * @param value The modifierLocalId to set.
         * @return This builder for chaining.
         */
        public Builder setModifierLocalId(int value) {
          
          modifierLocalId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>int32 modifier_local_id = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearModifierLocalId() {
          
          modifierLocalId_ = 0;
          onChanged();
          return this;
        }
  
        private boolean isDurabilityZero_ ;
        /**
         * <code>bool is_durability_zero = 8;</code>
         * @return The isDurabilityZero.
         */
        @java.lang.Override
        public boolean getIsDurabilityZero() {
          return isDurabilityZero_;
        }
        /**
         * <code>bool is_durability_zero = 8;</code>
         * @param value The isDurabilityZero to set.
         * @return This builder for chaining.
         */
        public Builder setIsDurabilityZero(boolean value) {
          
          isDurabilityZero_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>bool is_durability_zero = 8;</code>
         * @return This builder for chaining.
         */
        public Builder clearIsDurabilityZero() {
          
          isDurabilityZero_ = false;
          onChanged();
          return this;
        }
  
        private emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString parentAbilityName_;
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString, emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.Builder, emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityStringOrBuilder> parentAbilityNameBuilder_;
        /**
         * <code>.AbilityString parent_ability_name = 13;</code>
         * @return Whether the parentAbilityName field is set.
         */
        public boolean hasParentAbilityName() {
          return parentAbilityNameBuilder_ != null || parentAbilityName_ != null;
        }
        /**
         * <code>.AbilityString parent_ability_name = 13;</code>
         * @return The parentAbilityName.
         */
        public emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString getParentAbilityName() {
          if (parentAbilityNameBuilder_ == null) {
            return parentAbilityName_ == null ? emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.getDefaultInstance() : parentAbilityName_;
          } else {
            return parentAbilityNameBuilder_.getMessage();
          }
        }
        /**
         * <code>.AbilityString parent_ability_name = 13;</code>
         */
        public Builder setParentAbilityName(emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString value) {
          if (parentAbilityNameBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            parentAbilityName_ = value;
            onChanged();
          } else {
            parentAbilityNameBuilder_.setMessage(value);
          }
  
          return this;
        }
        /**
         * <code>.AbilityString parent_ability_name = 13;</code>
         */
        public Builder setParentAbilityName(
            emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.Builder builderForValue) {
          if (parentAbilityNameBuilder_ == null) {
            parentAbilityName_ = builderForValue.build();
            onChanged();
          } else {
            parentAbilityNameBuilder_.setMessage(builderForValue.build());
          }
  
          return this;
        }
        /**
         * <code>.AbilityString parent_ability_name = 13;</code>
         */
        public Builder mergeParentAbilityName(emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString value) {
          if (parentAbilityNameBuilder_ == null) {
            if (parentAbilityName_ != null) {
              parentAbilityName_ =
                emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.newBuilder(parentAbilityName_).mergeFrom(value).buildPartial();
            } else {
              parentAbilityName_ = value;
            }
            onChanged();
          } else {
            parentAbilityNameBuilder_.mergeFrom(value);
          }
  
          return this;
        }
        /**
         * <code>.AbilityString parent_ability_name = 13;</code>
         */
        public Builder clearParentAbilityName() {
          if (parentAbilityNameBuilder_ == null) {
            parentAbilityName_ = null;
            onChanged();
          } else {
            parentAbilityName_ = null;
            parentAbilityNameBuilder_ = null;
          }
  
          return this;
        }
        /**
         * <code>.AbilityString parent_ability_name = 13;</code>
         */
        public emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.Builder getParentAbilityNameBuilder() {
          
          onChanged();
          return getParentAbilityNameFieldBuilder().getBuilder();
        }
        /**
         * <code>.AbilityString parent_ability_name = 13;</code>
         */
        public emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityStringOrBuilder getParentAbilityNameOrBuilder() {
          if (parentAbilityNameBuilder_ != null) {
            return parentAbilityNameBuilder_.getMessageOrBuilder();
          } else {
            return parentAbilityName_ == null ?
                emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.getDefaultInstance() : parentAbilityName_;
          }
        }
        /**
         * <code>.AbilityString parent_ability_name = 13;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString, emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.Builder, emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityStringOrBuilder> 
            getParentAbilityNameFieldBuilder() {
          if (parentAbilityNameBuilder_ == null) {
            parentAbilityNameBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString, emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.Builder, emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityStringOrBuilder>(
                    getParentAbilityName(),
                    getParentForChildren(),
                    isClean());
            parentAbilityName_ = null;
          }
          return parentAbilityNameBuilder_;
        }
  
        private int serverBuffUid_ ;
        /**
         * <code>uint32 server_buff_uid = 9;</code>
         * @return The serverBuffUid.
         */
        @java.lang.Override
        public int getServerBuffUid() {
          return serverBuffUid_;
        }
        /**
         * <code>uint32 server_buff_uid = 9;</code>
         * @param value The serverBuffUid to set.
         * @return This builder for chaining.
         */
        public Builder setServerBuffUid(int value) {
          
          serverBuffUid_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>uint32 server_buff_uid = 9;</code>
         * @return This builder for chaining.
         */
        public Builder clearServerBuffUid() {
          
          serverBuffUid_ = 0;
          onChanged();
          return this;
        }
  
        private int applyEntityId_ ;
        /**
         * <code>uint32 apply_entity_id = 7;</code>
         * @return The applyEntityId.
         */
        @java.lang.Override
        public int getApplyEntityId() {
          return applyEntityId_;
        }
        /**
         * <code>uint32 apply_entity_id = 7;</code>
         * @param value The applyEntityId to set.
         * @return This builder for chaining.
         */
        public Builder setApplyEntityId(int value) {
          
          applyEntityId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>uint32 apply_entity_id = 7;</code>
         * @return This builder for chaining.
         */
        public Builder clearApplyEntityId() {
          
          applyEntityId_ = 0;
          onChanged();
          return this;
        }
  
        private emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString parentAbilityOverride_;
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString, emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.Builder, emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityStringOrBuilder> parentAbilityOverrideBuilder_;
        /**
         * <code>.AbilityString parent_ability_override = 15;</code>
         * @return Whether the parentAbilityOverride field is set.
         */
        public boolean hasParentAbilityOverride() {
          return parentAbilityOverrideBuilder_ != null || parentAbilityOverride_ != null;
        }
        /**
         * <code>.AbilityString parent_ability_override = 15;</code>
         * @return The parentAbilityOverride.
         */
        public emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString getParentAbilityOverride() {
          if (parentAbilityOverrideBuilder_ == null) {
            return parentAbilityOverride_ == null ? emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.getDefaultInstance() : parentAbilityOverride_;
          } else {
            return parentAbilityOverrideBuilder_.getMessage();
          }
        }
        /**
         * <code>.AbilityString parent_ability_override = 15;</code>
         */
        public Builder setParentAbilityOverride(emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString value) {
          if (parentAbilityOverrideBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            parentAbilityOverride_ = value;
            onChanged();
          } else {
            parentAbilityOverrideBuilder_.setMessage(value);
          }
  
          return this;
        }
        /**
         * <code>.AbilityString parent_ability_override = 15;</code>
         */
        public Builder setParentAbilityOverride(
            emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.Builder builderForValue) {
          if (parentAbilityOverrideBuilder_ == null) {
            parentAbilityOverride_ = builderForValue.build();
            onChanged();
          } else {
            parentAbilityOverrideBuilder_.setMessage(builderForValue.build());
          }
  
          return this;
        }
        /**
         * <code>.AbilityString parent_ability_override = 15;</code>
         */
        public Builder mergeParentAbilityOverride(emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString value) {
          if (parentAbilityOverrideBuilder_ == null) {
            if (parentAbilityOverride_ != null) {
              parentAbilityOverride_ =
                emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.newBuilder(parentAbilityOverride_).mergeFrom(value).buildPartial();
            } else {
              parentAbilityOverride_ = value;
            }
            onChanged();
          } else {
            parentAbilityOverrideBuilder_.mergeFrom(value);
          }
  
          return this;
        }
        /**
         * <code>.AbilityString parent_ability_override = 15;</code>
         */
        public Builder clearParentAbilityOverride() {
          if (parentAbilityOverrideBuilder_ == null) {
            parentAbilityOverride_ = null;
            onChanged();
          } else {
            parentAbilityOverride_ = null;
            parentAbilityOverrideBuilder_ = null;
          }
  
          return this;
        }
        /**
         * <code>.AbilityString parent_ability_override = 15;</code>
         */
        public emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.Builder getParentAbilityOverrideBuilder() {
          
          onChanged();
          return getParentAbilityOverrideFieldBuilder().getBuilder();
        }
        /**
         * <code>.AbilityString parent_ability_override = 15;</code>
         */
        public emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityStringOrBuilder getParentAbilityOverrideOrBuilder() {
          if (parentAbilityOverrideBuilder_ != null) {
            return parentAbilityOverrideBuilder_.getMessageOrBuilder();
          } else {
            return parentAbilityOverride_ == null ?
                emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.getDefaultInstance() : parentAbilityOverride_;
          }
        }
        /**
         * <code>.AbilityString parent_ability_override = 15;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString, emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.Builder, emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityStringOrBuilder> 
            getParentAbilityOverrideFieldBuilder() {
          if (parentAbilityOverrideBuilder_ == null) {
            parentAbilityOverrideBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString, emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityString.Builder, emu.grasscutter.net.proto.AbilityStringOuterClass.AbilityStringOrBuilder>(
                    getParentAbilityOverride(),
                    getParentForChildren(),
                    isClean());
            parentAbilityOverride_ = null;
          }
          return parentAbilityOverrideBuilder_;
        }
  
        private int action_ = 0;
        /**
         * <code>.ModifierAction action = 4;</code>
         * @return The enum numeric value on the wire for action.
         */
        @java.lang.Override public int getActionValue() {
          return action_;
        }
        /**
         * <code>.ModifierAction action = 4;</code>
         * @param value The enum numeric value on the wire for action to set.
         * @return This builder for chaining.
         */
        public Builder setActionValue(int value) {
          
          action_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.ModifierAction action = 4;</code>
         * @return The action.
         */
        @java.lang.Override
        public emu.grasscutter.net.proto.ModifierActionOuterClass.ModifierAction getAction() {
          @SuppressWarnings("deprecation")
          emu.grasscutter.net.proto.ModifierActionOuterClass.ModifierAction result = emu.grasscutter.net.proto.ModifierActionOuterClass.ModifierAction.valueOf(action_);
          return result == null ? emu.grasscutter.net.proto.ModifierActionOuterClass.ModifierAction.UNRECOGNIZED : result;
        }
        /**
         * <code>.ModifierAction action = 4;</code>
         * @param value The action to set.
         * @return This builder for chaining.
         */
        public Builder setAction(emu.grasscutter.net.proto.ModifierActionOuterClass.ModifierAction value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          action_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.ModifierAction action = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearAction() {
          
          action_ = 0;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:AbilityMetaModifierChange)
      }
  
      // @@protoc_insertion_point(class_scope:AbilityMetaModifierChange)
      private static final emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange();
      }
  
      public static emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      private static final com.google.protobuf.Parser<AbilityMetaModifierChange>
          PARSER = new com.google.protobuf.AbstractParser<AbilityMetaModifierChange>() {
        @java.lang.Override
        public AbilityMetaModifierChange parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new AbilityMetaModifierChange(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<AbilityMetaModifierChange> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<AbilityMetaModifierChange> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public emu.grasscutter.net.proto.AbilityMetaModifierChangeOuterClass.AbilityMetaModifierChange getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_AbilityMetaModifierChange_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_AbilityMetaModifierChange_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\037AbilityMetaModifierChange.proto\032\035Abili" +
        "tyAttachedModifier.proto\032\023AbilityString." +
        "proto\032\024ModifierAction.proto\032\026ModifierPro" +
        "perty.proto\"\245\003\n\031AbilityMetaModifierChang" +
        "e\022=\n\033attached_instanced_modifier\030\003 \001(\0132\030" +
        ".AbilityAttachedModifier\022\"\n\032is_attached_" +
        "parent_ability\030\005 \001(\010\022%\n\nproperties\030\016 \003(\013" +
        "2\021.ModifierProperty\022\026\n\016is_mute_remote\030\014 " +
        "\001(\010\022\031\n\021modifier_local_id\030\002 \001(\005\022\032\n\022is_dur" +
        "ability_zero\030\010 \001(\010\022+\n\023parent_ability_nam" +
        "e\030\r \001(\0132\016.AbilityString\022\027\n\017server_buff_u" +
        "id\030\t \001(\r\022\027\n\017apply_entity_id\030\007 \001(\r\022/\n\027par" +
        "ent_ability_override\030\017 \001(\0132\016.AbilityStri" +
        "ng\022\037\n\006action\030\004 \001(\0162\017.ModifierActionB\033\n\031e" +
        "mu.grasscutter.net.protob\006proto3"
      };
      descriptor = com.google.protobuf.Descriptors.FileDescriptor
        .internalBuildGeneratedFileFrom(descriptorData,
          new com.google.protobuf.Descriptors.FileDescriptor[] {
            emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.getDescriptor(),
            emu.grasscutter.net.proto.AbilityStringOuterClass.getDescriptor(),
            emu.grasscutter.net.proto.ModifierActionOuterClass.getDescriptor(),
            emu.grasscutter.net.proto.ModifierPropertyOuterClass.getDescriptor(),
          });
      internal_static_AbilityMetaModifierChange_descriptor =
        getDescriptor().getMessageTypes().get(0);
      internal_static_AbilityMetaModifierChange_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_AbilityMetaModifierChange_descriptor,
          new java.lang.String[] { "AttachedInstancedModifier", "IsAttachedParentAbility", "Properties", "IsMuteRemote", "ModifierLocalId", "IsDurabilityZero", "ParentAbilityName", "ServerBuffUid", "ApplyEntityId", "ParentAbilityOverride", "Action", });
      emu.grasscutter.net.proto.AbilityAttachedModifierOuterClass.getDescriptor();
      emu.grasscutter.net.proto.AbilityStringOuterClass.getDescriptor();
      emu.grasscutter.net.proto.ModifierActionOuterClass.getDescriptor();
      emu.grasscutter.net.proto.ModifierPropertyOuterClass.getDescriptor();
    }
  
    // @@protoc_insertion_point(outer_class_scope)
  }
  