public final class

AnimationParameterProto

extends java.lang.Object

 java.lang.Object

↳androidx.wear.protolayout.expression.proto.AnimationParameterProto

Gradle dependencies

compile group: 'androidx.wear.protolayout', name: 'protolayout-proto', version: '1.2.0'

  • groupId: androidx.wear.protolayout
  • artifactId: protolayout-proto
  • version: 1.2.0

Artifact androidx.wear.protolayout:protolayout-proto:1.2.0 it located at Google repository (https://maven.google.com/)

Summary

Methods
public static voidregisterAllExtensions(com.google.protobuf.ExtensionRegistryLite registry)

from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Methods

public static void registerAllExtensions(com.google.protobuf.ExtensionRegistryLite registry)

Source

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

package androidx.wear.protolayout.expression.proto;

public final class AnimationParameterProto {
  private AnimationParameterProto() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }
  /**
   * <pre>
   * The repeat mode to specify how animation will behave when repeated.
   * </pre>
   *
   * Protobuf enum {@code androidx.wear.protolayout.expression.proto.RepeatMode}
   */
  public enum RepeatMode
      implements com.google.protobuf.Internal.EnumLite {
    /**
     * <pre>
     * The unknown repeat mode.
     * </pre>
     *
     * <code>REPEAT_MODE_UNKNOWN = 0;</code>
     */
    REPEAT_MODE_UNKNOWN(0),
    /**
     * <pre>
     * The repeat mode where animation restarts from the beginning when repeated.
     * </pre>
     *
     * <code>REPEAT_MODE_RESTART = 1;</code>
     */
    REPEAT_MODE_RESTART(1),
    /**
     * <pre>
     * The repeat mode where animation is played in reverse when repeated.
     * </pre>
     *
     * <code>REPEAT_MODE_REVERSE = 2;</code>
     */
    REPEAT_MODE_REVERSE(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     * The unknown repeat mode.
     * </pre>
     *
     * <code>REPEAT_MODE_UNKNOWN = 0;</code>
     */
    public static final int REPEAT_MODE_UNKNOWN_VALUE = 0;
    /**
     * <pre>
     * The repeat mode where animation restarts from the beginning when repeated.
     * </pre>
     *
     * <code>REPEAT_MODE_RESTART = 1;</code>
     */
    public static final int REPEAT_MODE_RESTART_VALUE = 1;
    /**
     * <pre>
     * The repeat mode where animation is played in reverse when repeated.
     * </pre>
     *
     * <code>REPEAT_MODE_REVERSE = 2;</code>
     */
    public static final int REPEAT_MODE_REVERSE_VALUE = 2;


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

    /**
     * @param value The number of the enum to look for.
     * @return The enum associated with the given number.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static RepeatMode valueOf(int value) {
      return forNumber(value);
    }

    public static RepeatMode forNumber(int value) {
      switch (value) {
        case 0: return REPEAT_MODE_UNKNOWN;
        case 1: return REPEAT_MODE_RESTART;
        case 2: return REPEAT_MODE_REVERSE;
        default: return null;
      }
    }

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

    public static com.google.protobuf.Internal.EnumVerifier 
        internalGetVerifier() {
      return RepeatModeVerifier.INSTANCE;
    }

    private static final class RepeatModeVerifier implements 
         com.google.protobuf.Internal.EnumVerifier { 
            static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new RepeatModeVerifier();
            @java.lang.Override
            public boolean isInRange(int number) {
              return RepeatMode.forNumber(number) != null;
            }
          };

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:androidx.wear.protolayout.expression.proto.RepeatMode)
  }

  public interface AnimationSpecOrBuilder extends
      // @@protoc_insertion_point(interface_extends:androidx.wear.protolayout.expression.proto.AnimationSpec)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * The duration of the animation in milliseconds. If not set, defaults to
     * 300ms.
     * &#64;deprecated Use animation_parameters instead.
     * </pre>
     *
     * <code>uint32 duration_millis = 1;</code>
     * @return The durationMillis.
     */
    int getDurationMillis();

    /**
     * <pre>
     * The delay to start the animation in milliseconds. If not set, defaults to
     * 0.
     * &#64;deprecated Use animation_parameters instead.
     * </pre>
     *
     * <code>uint32 start_delay_millis = 2;</code>
     * @return The startDelayMillis.
     */
    int getStartDelayMillis();

    /**
     * <pre>
     * The easing to be used for adjusting an animation's fraction. If not set,
     * defaults to Linear Interpolator.
     * &#64;deprecated Use animation_parameters instead.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 3;</code>
     * @return Whether the easing field is set.
     */
    boolean hasEasing();
    /**
     * <pre>
     * The easing to be used for adjusting an animation's fraction. If not set,
     * defaults to Linear Interpolator.
     * &#64;deprecated Use animation_parameters instead.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 3;</code>
     * @return The easing.
     */
    androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing getEasing();

    /**
     * <pre>
     * Animation parameters including duration, easing and repeat delay.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters animation_parameters = 4;</code>
     * @return Whether the animationParameters field is set.
     */
    boolean hasAnimationParameters();
    /**
     * <pre>
     * Animation parameters including duration, easing and repeat delay.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters animation_parameters = 4;</code>
     * @return The animationParameters.
     */
    androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters getAnimationParameters();

    /**
     * <pre>
     * The repeatable mode to be used for specifying repetition parameters for the
     * animation. If not set, animation won't be repeated.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Repeatable repeatable = 5;</code>
     * @return Whether the repeatable field is set.
     */
    boolean hasRepeatable();
    /**
     * <pre>
     * The repeatable mode to be used for specifying repetition parameters for the
     * animation. If not set, animation won't be repeated.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Repeatable repeatable = 5;</code>
     * @return The repeatable.
     */
    androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable getRepeatable();
  }
  /**
   * <pre>
   * Animation parameters that can be added to any animatable node.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.expression.proto.AnimationSpec}
   */
  public  static final class AnimationSpec extends
      com.google.protobuf.GeneratedMessageLite<
          AnimationSpec, AnimationSpec.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.expression.proto.AnimationSpec)
      AnimationSpecOrBuilder {
    private AnimationSpec() {
    }
    public static final int DURATION_MILLIS_FIELD_NUMBER = 1;
    private int durationMillis_;
    /**
     * <pre>
     * The duration of the animation in milliseconds. If not set, defaults to
     * 300ms.
     * &#64;deprecated Use animation_parameters instead.
     * </pre>
     *
     * <code>uint32 duration_millis = 1;</code>
     * @return The durationMillis.
     */
    @java.lang.Override
    public int getDurationMillis() {
      return durationMillis_;
    }
    /**
     * <pre>
     * The duration of the animation in milliseconds. If not set, defaults to
     * 300ms.
     * &#64;deprecated Use animation_parameters instead.
     * </pre>
     *
     * <code>uint32 duration_millis = 1;</code>
     * @param value The durationMillis to set.
     */
    private void setDurationMillis(int value) {
      
      durationMillis_ = value;
    }
    /**
     * <pre>
     * The duration of the animation in milliseconds. If not set, defaults to
     * 300ms.
     * &#64;deprecated Use animation_parameters instead.
     * </pre>
     *
     * <code>uint32 duration_millis = 1;</code>
     */
    private void clearDurationMillis() {

      durationMillis_ = 0;
    }

    public static final int START_DELAY_MILLIS_FIELD_NUMBER = 2;
    private int startDelayMillis_;
    /**
     * <pre>
     * The delay to start the animation in milliseconds. If not set, defaults to
     * 0.
     * &#64;deprecated Use animation_parameters instead.
     * </pre>
     *
     * <code>uint32 start_delay_millis = 2;</code>
     * @return The startDelayMillis.
     */
    @java.lang.Override
    public int getStartDelayMillis() {
      return startDelayMillis_;
    }
    /**
     * <pre>
     * The delay to start the animation in milliseconds. If not set, defaults to
     * 0.
     * &#64;deprecated Use animation_parameters instead.
     * </pre>
     *
     * <code>uint32 start_delay_millis = 2;</code>
     * @param value The startDelayMillis to set.
     */
    private void setStartDelayMillis(int value) {
      
      startDelayMillis_ = value;
    }
    /**
     * <pre>
     * The delay to start the animation in milliseconds. If not set, defaults to
     * 0.
     * &#64;deprecated Use animation_parameters instead.
     * </pre>
     *
     * <code>uint32 start_delay_millis = 2;</code>
     */
    private void clearStartDelayMillis() {

      startDelayMillis_ = 0;
    }

    public static final int EASING_FIELD_NUMBER = 3;
    private androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing easing_;
    /**
     * <pre>
     * The easing to be used for adjusting an animation's fraction. If not set,
     * defaults to Linear Interpolator.
     * &#64;deprecated Use animation_parameters instead.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 3;</code>
     */
    @java.lang.Override
    public boolean hasEasing() {
      return easing_ != null;
    }
    /**
     * <pre>
     * The easing to be used for adjusting an animation's fraction. If not set,
     * defaults to Linear Interpolator.
     * &#64;deprecated Use animation_parameters instead.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 3;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing getEasing() {
      return easing_ == null ? androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing.getDefaultInstance() : easing_;
    }
    /**
     * <pre>
     * The easing to be used for adjusting an animation's fraction. If not set,
     * defaults to Linear Interpolator.
     * &#64;deprecated Use animation_parameters instead.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 3;</code>
     */
    private void setEasing(androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing value) {
      value.getClass();
  easing_ = value;

      }
    /**
     * <pre>
     * The easing to be used for adjusting an animation's fraction. If not set,
     * defaults to Linear Interpolator.
     * &#64;deprecated Use animation_parameters instead.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 3;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeEasing(androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing value) {
      value.getClass();
  if (easing_ != null &&
          easing_ != androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing.getDefaultInstance()) {
        easing_ =
          androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing.newBuilder(easing_).mergeFrom(value).buildPartial();
      } else {
        easing_ = value;
      }

    }
    /**
     * <pre>
     * The easing to be used for adjusting an animation's fraction. If not set,
     * defaults to Linear Interpolator.
     * &#64;deprecated Use animation_parameters instead.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 3;</code>
     */
    private void clearEasing() {  easing_ = null;

    }

    public static final int ANIMATION_PARAMETERS_FIELD_NUMBER = 4;
    private androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters animationParameters_;
    /**
     * <pre>
     * Animation parameters including duration, easing and repeat delay.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters animation_parameters = 4;</code>
     */
    @java.lang.Override
    public boolean hasAnimationParameters() {
      return animationParameters_ != null;
    }
    /**
     * <pre>
     * Animation parameters including duration, easing and repeat delay.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters animation_parameters = 4;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters getAnimationParameters() {
      return animationParameters_ == null ? androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters.getDefaultInstance() : animationParameters_;
    }
    /**
     * <pre>
     * Animation parameters including duration, easing and repeat delay.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters animation_parameters = 4;</code>
     */
    private void setAnimationParameters(androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters value) {
      value.getClass();
  animationParameters_ = value;

      }
    /**
     * <pre>
     * Animation parameters including duration, easing and repeat delay.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters animation_parameters = 4;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeAnimationParameters(androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters value) {
      value.getClass();
  if (animationParameters_ != null &&
          animationParameters_ != androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters.getDefaultInstance()) {
        animationParameters_ =
          androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters.newBuilder(animationParameters_).mergeFrom(value).buildPartial();
      } else {
        animationParameters_ = value;
      }

    }
    /**
     * <pre>
     * Animation parameters including duration, easing and repeat delay.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters animation_parameters = 4;</code>
     */
    private void clearAnimationParameters() {  animationParameters_ = null;

    }

    public static final int REPEATABLE_FIELD_NUMBER = 5;
    private androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable repeatable_;
    /**
     * <pre>
     * The repeatable mode to be used for specifying repetition parameters for the
     * animation. If not set, animation won't be repeated.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Repeatable repeatable = 5;</code>
     */
    @java.lang.Override
    public boolean hasRepeatable() {
      return repeatable_ != null;
    }
    /**
     * <pre>
     * The repeatable mode to be used for specifying repetition parameters for the
     * animation. If not set, animation won't be repeated.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Repeatable repeatable = 5;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable getRepeatable() {
      return repeatable_ == null ? androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable.getDefaultInstance() : repeatable_;
    }
    /**
     * <pre>
     * The repeatable mode to be used for specifying repetition parameters for the
     * animation. If not set, animation won't be repeated.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Repeatable repeatable = 5;</code>
     */
    private void setRepeatable(androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable value) {
      value.getClass();
  repeatable_ = value;

      }
    /**
     * <pre>
     * The repeatable mode to be used for specifying repetition parameters for the
     * animation. If not set, animation won't be repeated.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Repeatable repeatable = 5;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeRepeatable(androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable value) {
      value.getClass();
  if (repeatable_ != null &&
          repeatable_ != androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable.getDefaultInstance()) {
        repeatable_ =
          androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable.newBuilder(repeatable_).mergeFrom(value).buildPartial();
      } else {
        repeatable_ = value;
      }

    }
    /**
     * <pre>
     * The repeatable mode to be used for specifying repetition parameters for the
     * animation. If not set, animation won't be repeated.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Repeatable repeatable = 5;</code>
     */
    private void clearRepeatable() {  repeatable_ = null;

    }

    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Animation parameters that can be added to any animatable node.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.expression.proto.AnimationSpec}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.expression.proto.AnimationSpec)
        androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpecOrBuilder {
      // Construct using androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The duration of the animation in milliseconds. If not set, defaults to
       * 300ms.
       * &#64;deprecated Use animation_parameters instead.
       * </pre>
       *
       * <code>uint32 duration_millis = 1;</code>
       * @return The durationMillis.
       */
      @java.lang.Override
      public int getDurationMillis() {
        return instance.getDurationMillis();
      }
      /**
       * <pre>
       * The duration of the animation in milliseconds. If not set, defaults to
       * 300ms.
       * &#64;deprecated Use animation_parameters instead.
       * </pre>
       *
       * <code>uint32 duration_millis = 1;</code>
       * @param value The durationMillis to set.
       * @return This builder for chaining.
       */
      public Builder setDurationMillis(int value) {
        copyOnWrite();
        instance.setDurationMillis(value);
        return this;
      }
      /**
       * <pre>
       * The duration of the animation in milliseconds. If not set, defaults to
       * 300ms.
       * &#64;deprecated Use animation_parameters instead.
       * </pre>
       *
       * <code>uint32 duration_millis = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDurationMillis() {
        copyOnWrite();
        instance.clearDurationMillis();
        return this;
      }

      /**
       * <pre>
       * The delay to start the animation in milliseconds. If not set, defaults to
       * 0.
       * &#64;deprecated Use animation_parameters instead.
       * </pre>
       *
       * <code>uint32 start_delay_millis = 2;</code>
       * @return The startDelayMillis.
       */
      @java.lang.Override
      public int getStartDelayMillis() {
        return instance.getStartDelayMillis();
      }
      /**
       * <pre>
       * The delay to start the animation in milliseconds. If not set, defaults to
       * 0.
       * &#64;deprecated Use animation_parameters instead.
       * </pre>
       *
       * <code>uint32 start_delay_millis = 2;</code>
       * @param value The startDelayMillis to set.
       * @return This builder for chaining.
       */
      public Builder setStartDelayMillis(int value) {
        copyOnWrite();
        instance.setStartDelayMillis(value);
        return this;
      }
      /**
       * <pre>
       * The delay to start the animation in milliseconds. If not set, defaults to
       * 0.
       * &#64;deprecated Use animation_parameters instead.
       * </pre>
       *
       * <code>uint32 start_delay_millis = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearStartDelayMillis() {
        copyOnWrite();
        instance.clearStartDelayMillis();
        return this;
      }

      /**
       * <pre>
       * The easing to be used for adjusting an animation's fraction. If not set,
       * defaults to Linear Interpolator.
       * &#64;deprecated Use animation_parameters instead.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 3;</code>
       */
      @java.lang.Override
      public boolean hasEasing() {
        return instance.hasEasing();
      }
      /**
       * <pre>
       * The easing to be used for adjusting an animation's fraction. If not set,
       * defaults to Linear Interpolator.
       * &#64;deprecated Use animation_parameters instead.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 3;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing getEasing() {
        return instance.getEasing();
      }
      /**
       * <pre>
       * The easing to be used for adjusting an animation's fraction. If not set,
       * defaults to Linear Interpolator.
       * &#64;deprecated Use animation_parameters instead.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 3;</code>
       */
      public Builder setEasing(androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing value) {
        copyOnWrite();
        instance.setEasing(value);
        return this;
        }
      /**
       * <pre>
       * The easing to be used for adjusting an animation's fraction. If not set,
       * defaults to Linear Interpolator.
       * &#64;deprecated Use animation_parameters instead.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 3;</code>
       */
      public Builder setEasing(
          androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing.Builder builderForValue) {
        copyOnWrite();
        instance.setEasing(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The easing to be used for adjusting an animation's fraction. If not set,
       * defaults to Linear Interpolator.
       * &#64;deprecated Use animation_parameters instead.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 3;</code>
       */
      public Builder mergeEasing(androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing value) {
        copyOnWrite();
        instance.mergeEasing(value);
        return this;
      }
      /**
       * <pre>
       * The easing to be used for adjusting an animation's fraction. If not set,
       * defaults to Linear Interpolator.
       * &#64;deprecated Use animation_parameters instead.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 3;</code>
       */
      public Builder clearEasing() {  copyOnWrite();
        instance.clearEasing();
        return this;
      }

      /**
       * <pre>
       * Animation parameters including duration, easing and repeat delay.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters animation_parameters = 4;</code>
       */
      @java.lang.Override
      public boolean hasAnimationParameters() {
        return instance.hasAnimationParameters();
      }
      /**
       * <pre>
       * Animation parameters including duration, easing and repeat delay.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters animation_parameters = 4;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters getAnimationParameters() {
        return instance.getAnimationParameters();
      }
      /**
       * <pre>
       * Animation parameters including duration, easing and repeat delay.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters animation_parameters = 4;</code>
       */
      public Builder setAnimationParameters(androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters value) {
        copyOnWrite();
        instance.setAnimationParameters(value);
        return this;
        }
      /**
       * <pre>
       * Animation parameters including duration, easing and repeat delay.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters animation_parameters = 4;</code>
       */
      public Builder setAnimationParameters(
          androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters.Builder builderForValue) {
        copyOnWrite();
        instance.setAnimationParameters(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Animation parameters including duration, easing and repeat delay.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters animation_parameters = 4;</code>
       */
      public Builder mergeAnimationParameters(androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters value) {
        copyOnWrite();
        instance.mergeAnimationParameters(value);
        return this;
      }
      /**
       * <pre>
       * Animation parameters including duration, easing and repeat delay.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters animation_parameters = 4;</code>
       */
      public Builder clearAnimationParameters() {  copyOnWrite();
        instance.clearAnimationParameters();
        return this;
      }

      /**
       * <pre>
       * The repeatable mode to be used for specifying repetition parameters for the
       * animation. If not set, animation won't be repeated.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.Repeatable repeatable = 5;</code>
       */
      @java.lang.Override
      public boolean hasRepeatable() {
        return instance.hasRepeatable();
      }
      /**
       * <pre>
       * The repeatable mode to be used for specifying repetition parameters for the
       * animation. If not set, animation won't be repeated.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.Repeatable repeatable = 5;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable getRepeatable() {
        return instance.getRepeatable();
      }
      /**
       * <pre>
       * The repeatable mode to be used for specifying repetition parameters for the
       * animation. If not set, animation won't be repeated.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.Repeatable repeatable = 5;</code>
       */
      public Builder setRepeatable(androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable value) {
        copyOnWrite();
        instance.setRepeatable(value);
        return this;
        }
      /**
       * <pre>
       * The repeatable mode to be used for specifying repetition parameters for the
       * animation. If not set, animation won't be repeated.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.Repeatable repeatable = 5;</code>
       */
      public Builder setRepeatable(
          androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable.Builder builderForValue) {
        copyOnWrite();
        instance.setRepeatable(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The repeatable mode to be used for specifying repetition parameters for the
       * animation. If not set, animation won't be repeated.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.Repeatable repeatable = 5;</code>
       */
      public Builder mergeRepeatable(androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable value) {
        copyOnWrite();
        instance.mergeRepeatable(value);
        return this;
      }
      /**
       * <pre>
       * The repeatable mode to be used for specifying repetition parameters for the
       * animation. If not set, animation won't be repeated.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.Repeatable repeatable = 5;</code>
       */
      public Builder clearRepeatable() {  copyOnWrite();
        instance.clearRepeatable();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.expression.proto.AnimationSpec)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "durationMillis_",
              "startDelayMillis_",
              "easing_",
              "animationParameters_",
              "repeatable_",
            };
            java.lang.String info =
                "\u0000\u0005\u0000\u0000\u0001\u0005\u0005\u0000\u0000\u0000\u0001\u000b\u0002\u000b" +
                "\u0003\t\u0004\t\u0005\t";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:androidx.wear.protolayout.expression.proto.AnimationSpec)
    private static final androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec DEFAULT_INSTANCE;
    static {
      AnimationSpec defaultInstance = new AnimationSpec();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        AnimationSpec.class, defaultInstance);
    }

    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationSpec getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<AnimationSpec> PARSER;

    public static com.google.protobuf.Parser<AnimationSpec> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface AnimationParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:androidx.wear.protolayout.expression.proto.AnimationParameters)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * The duration of the animation in milliseconds. If not set, defaults to
     * 300ms.
     * </pre>
     *
     * <code>uint64 duration_millis = 1;</code>
     * @return The durationMillis.
     */
    long getDurationMillis();

    /**
     * <pre>
     * The easing to be used for adjusting an animation's fraction. If not set,
     * defaults to Linear Interpolator.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 2;</code>
     * @return Whether the easing field is set.
     */
    boolean hasEasing();
    /**
     * <pre>
     * The easing to be used for adjusting an animation's fraction. If not set,
     * defaults to Linear Interpolator.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 2;</code>
     * @return The easing.
     */
    androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing getEasing();

    /**
     * <pre>
     * Animation delay in millis. When used outside repeatable, this is the
     * delay to start the animation in milliseconds. When set inside repeatable,
     * this is the delay before repeating animation in milliseconds. If not set,
     * no delay will be applied.
     * </pre>
     *
     * <code>uint64 delay_millis = 3;</code>
     * @return Whether the delayMillis field is set.
     */
    boolean hasDelayMillis();
    /**
     * <pre>
     * Animation delay in millis. When used outside repeatable, this is the
     * delay to start the animation in milliseconds. When set inside repeatable,
     * this is the delay before repeating animation in milliseconds. If not set,
     * no delay will be applied.
     * </pre>
     *
     * <code>uint64 delay_millis = 3;</code>
     * @return The delayMillis.
     */
    long getDelayMillis();

    public androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters.OptionalDelayMillisCase getOptionalDelayMillisCase();
  }
  /**
   * <pre>
   * Animation specs of duration, easing and repeat delay.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.expression.proto.AnimationParameters}
   */
  public  static final class AnimationParameters extends
      com.google.protobuf.GeneratedMessageLite<
          AnimationParameters, AnimationParameters.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.expression.proto.AnimationParameters)
      AnimationParametersOrBuilder {
    private AnimationParameters() {
    }
    private int optionalDelayMillisCase_ = 0;
    private java.lang.Object optionalDelayMillis_;
    public enum OptionalDelayMillisCase {
      DELAY_MILLIS(3),
      OPTIONALDELAYMILLIS_NOT_SET(0);
      private final int value;
      private OptionalDelayMillisCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static OptionalDelayMillisCase valueOf(int value) {
        return forNumber(value);
      }

      public static OptionalDelayMillisCase forNumber(int value) {
        switch (value) {
          case 3: return DELAY_MILLIS;
          case 0: return OPTIONALDELAYMILLIS_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    @java.lang.Override
    public OptionalDelayMillisCase
    getOptionalDelayMillisCase() {
      return OptionalDelayMillisCase.forNumber(
          optionalDelayMillisCase_);
    }

    private void clearOptionalDelayMillis() {
      optionalDelayMillisCase_ = 0;
      optionalDelayMillis_ = null;
    }

    public static final int DURATION_MILLIS_FIELD_NUMBER = 1;
    private long durationMillis_;
    /**
     * <pre>
     * The duration of the animation in milliseconds. If not set, defaults to
     * 300ms.
     * </pre>
     *
     * <code>uint64 duration_millis = 1;</code>
     * @return The durationMillis.
     */
    @java.lang.Override
    public long getDurationMillis() {
      return durationMillis_;
    }
    /**
     * <pre>
     * The duration of the animation in milliseconds. If not set, defaults to
     * 300ms.
     * </pre>
     *
     * <code>uint64 duration_millis = 1;</code>
     * @param value The durationMillis to set.
     */
    private void setDurationMillis(long value) {
      
      durationMillis_ = value;
    }
    /**
     * <pre>
     * The duration of the animation in milliseconds. If not set, defaults to
     * 300ms.
     * </pre>
     *
     * <code>uint64 duration_millis = 1;</code>
     */
    private void clearDurationMillis() {

      durationMillis_ = 0L;
    }

    public static final int EASING_FIELD_NUMBER = 2;
    private androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing easing_;
    /**
     * <pre>
     * The easing to be used for adjusting an animation's fraction. If not set,
     * defaults to Linear Interpolator.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 2;</code>
     */
    @java.lang.Override
    public boolean hasEasing() {
      return easing_ != null;
    }
    /**
     * <pre>
     * The easing to be used for adjusting an animation's fraction. If not set,
     * defaults to Linear Interpolator.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing getEasing() {
      return easing_ == null ? androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing.getDefaultInstance() : easing_;
    }
    /**
     * <pre>
     * The easing to be used for adjusting an animation's fraction. If not set,
     * defaults to Linear Interpolator.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 2;</code>
     */
    private void setEasing(androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing value) {
      value.getClass();
  easing_ = value;

      }
    /**
     * <pre>
     * The easing to be used for adjusting an animation's fraction. If not set,
     * defaults to Linear Interpolator.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 2;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeEasing(androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing value) {
      value.getClass();
  if (easing_ != null &&
          easing_ != androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing.getDefaultInstance()) {
        easing_ =
          androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing.newBuilder(easing_).mergeFrom(value).buildPartial();
      } else {
        easing_ = value;
      }

    }
    /**
     * <pre>
     * The easing to be used for adjusting an animation's fraction. If not set,
     * defaults to Linear Interpolator.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 2;</code>
     */
    private void clearEasing() {  easing_ = null;

    }

    public static final int DELAY_MILLIS_FIELD_NUMBER = 3;
    /**
     * <pre>
     * Animation delay in millis. When used outside repeatable, this is the
     * delay to start the animation in milliseconds. When set inside repeatable,
     * this is the delay before repeating animation in milliseconds. If not set,
     * no delay will be applied.
     * </pre>
     *
     * <code>uint64 delay_millis = 3;</code>
     * @return Whether the delayMillis field is set.
     */
    @java.lang.Override
    public boolean hasDelayMillis() {
      return optionalDelayMillisCase_ == 3;
    }
    /**
     * <pre>
     * Animation delay in millis. When used outside repeatable, this is the
     * delay to start the animation in milliseconds. When set inside repeatable,
     * this is the delay before repeating animation in milliseconds. If not set,
     * no delay will be applied.
     * </pre>
     *
     * <code>uint64 delay_millis = 3;</code>
     * @return The delayMillis.
     */
    @java.lang.Override
    public long getDelayMillis() {
      if (optionalDelayMillisCase_ == 3) {
        return (java.lang.Long) optionalDelayMillis_;
      }
      return 0L;
    }
    /**
     * <pre>
     * Animation delay in millis. When used outside repeatable, this is the
     * delay to start the animation in milliseconds. When set inside repeatable,
     * this is the delay before repeating animation in milliseconds. If not set,
     * no delay will be applied.
     * </pre>
     *
     * <code>uint64 delay_millis = 3;</code>
     * @param value The delayMillis to set.
     */
    private void setDelayMillis(long value) {
      optionalDelayMillisCase_ = 3;
      optionalDelayMillis_ = value;
    }
    /**
     * <pre>
     * Animation delay in millis. When used outside repeatable, this is the
     * delay to start the animation in milliseconds. When set inside repeatable,
     * this is the delay before repeating animation in milliseconds. If not set,
     * no delay will be applied.
     * </pre>
     *
     * <code>uint64 delay_millis = 3;</code>
     */
    private void clearDelayMillis() {
      if (optionalDelayMillisCase_ == 3) {
        optionalDelayMillisCase_ = 0;
        optionalDelayMillis_ = null;
      }
    }

    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Animation specs of duration, easing and repeat delay.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.expression.proto.AnimationParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.expression.proto.AnimationParameters)
        androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParametersOrBuilder {
      // Construct using androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public OptionalDelayMillisCase
          getOptionalDelayMillisCase() {
        return instance.getOptionalDelayMillisCase();
      }

      public Builder clearOptionalDelayMillis() {
        copyOnWrite();
        instance.clearOptionalDelayMillis();
        return this;
      }


      /**
       * <pre>
       * The duration of the animation in milliseconds. If not set, defaults to
       * 300ms.
       * </pre>
       *
       * <code>uint64 duration_millis = 1;</code>
       * @return The durationMillis.
       */
      @java.lang.Override
      public long getDurationMillis() {
        return instance.getDurationMillis();
      }
      /**
       * <pre>
       * The duration of the animation in milliseconds. If not set, defaults to
       * 300ms.
       * </pre>
       *
       * <code>uint64 duration_millis = 1;</code>
       * @param value The durationMillis to set.
       * @return This builder for chaining.
       */
      public Builder setDurationMillis(long value) {
        copyOnWrite();
        instance.setDurationMillis(value);
        return this;
      }
      /**
       * <pre>
       * The duration of the animation in milliseconds. If not set, defaults to
       * 300ms.
       * </pre>
       *
       * <code>uint64 duration_millis = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDurationMillis() {
        copyOnWrite();
        instance.clearDurationMillis();
        return this;
      }

      /**
       * <pre>
       * The easing to be used for adjusting an animation's fraction. If not set,
       * defaults to Linear Interpolator.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 2;</code>
       */
      @java.lang.Override
      public boolean hasEasing() {
        return instance.hasEasing();
      }
      /**
       * <pre>
       * The easing to be used for adjusting an animation's fraction. If not set,
       * defaults to Linear Interpolator.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing getEasing() {
        return instance.getEasing();
      }
      /**
       * <pre>
       * The easing to be used for adjusting an animation's fraction. If not set,
       * defaults to Linear Interpolator.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 2;</code>
       */
      public Builder setEasing(androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing value) {
        copyOnWrite();
        instance.setEasing(value);
        return this;
        }
      /**
       * <pre>
       * The easing to be used for adjusting an animation's fraction. If not set,
       * defaults to Linear Interpolator.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 2;</code>
       */
      public Builder setEasing(
          androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing.Builder builderForValue) {
        copyOnWrite();
        instance.setEasing(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The easing to be used for adjusting an animation's fraction. If not set,
       * defaults to Linear Interpolator.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 2;</code>
       */
      public Builder mergeEasing(androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing value) {
        copyOnWrite();
        instance.mergeEasing(value);
        return this;
      }
      /**
       * <pre>
       * The easing to be used for adjusting an animation's fraction. If not set,
       * defaults to Linear Interpolator.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.Easing easing = 2;</code>
       */
      public Builder clearEasing() {  copyOnWrite();
        instance.clearEasing();
        return this;
      }

      /**
       * <pre>
       * Animation delay in millis. When used outside repeatable, this is the
       * delay to start the animation in milliseconds. When set inside repeatable,
       * this is the delay before repeating animation in milliseconds. If not set,
       * no delay will be applied.
       * </pre>
       *
       * <code>uint64 delay_millis = 3;</code>
       * @return Whether the delayMillis field is set.
       */
      @java.lang.Override
      public boolean hasDelayMillis() {
        return instance.hasDelayMillis();
      }
      /**
       * <pre>
       * Animation delay in millis. When used outside repeatable, this is the
       * delay to start the animation in milliseconds. When set inside repeatable,
       * this is the delay before repeating animation in milliseconds. If not set,
       * no delay will be applied.
       * </pre>
       *
       * <code>uint64 delay_millis = 3;</code>
       * @return The delayMillis.
       */
      @java.lang.Override
      public long getDelayMillis() {
        return instance.getDelayMillis();
      }
      /**
       * <pre>
       * Animation delay in millis. When used outside repeatable, this is the
       * delay to start the animation in milliseconds. When set inside repeatable,
       * this is the delay before repeating animation in milliseconds. If not set,
       * no delay will be applied.
       * </pre>
       *
       * <code>uint64 delay_millis = 3;</code>
       * @param value The delayMillis to set.
       * @return This builder for chaining.
       */
      public Builder setDelayMillis(long value) {
        copyOnWrite();
        instance.setDelayMillis(value);
        return this;
      }
      /**
       * <pre>
       * Animation delay in millis. When used outside repeatable, this is the
       * delay to start the animation in milliseconds. When set inside repeatable,
       * this is the delay before repeating animation in milliseconds. If not set,
       * no delay will be applied.
       * </pre>
       *
       * <code>uint64 delay_millis = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearDelayMillis() {
        copyOnWrite();
        instance.clearDelayMillis();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.expression.proto.AnimationParameters)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "optionalDelayMillis_",
              "optionalDelayMillisCase_",
              "durationMillis_",
              "easing_",
            };
            java.lang.String info =
                "\u0000\u0003\u0001\u0000\u0001\u0003\u0003\u0000\u0000\u0000\u0001\u0003\u0002\t" +
                "\u00036\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:androidx.wear.protolayout.expression.proto.AnimationParameters)
    private static final androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters DEFAULT_INSTANCE;
    static {
      AnimationParameters defaultInstance = new AnimationParameters();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        AnimationParameters.class, defaultInstance);
    }

    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<AnimationParameters> PARSER;

    public static com.google.protobuf.Parser<AnimationParameters> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface EasingOrBuilder extends
      // @@protoc_insertion_point(interface_extends:androidx.wear.protolayout.expression.proto.Easing)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * The cubic polynomial easing that implements third-order Bezier curves.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.CubicBezierEasing cubic_bezier = 1;</code>
     * @return Whether the cubicBezier field is set.
     */
    boolean hasCubicBezier();
    /**
     * <pre>
     * The cubic polynomial easing that implements third-order Bezier curves.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.CubicBezierEasing cubic_bezier = 1;</code>
     * @return The cubicBezier.
     */
    androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing getCubicBezier();

    public androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing.InnerCase getInnerCase();
  }
  /**
   * <pre>
   * The easing to be used for adjusting an animation's fraction. This allows
   * animation to speed up and slow down, rather than moving at a constant rate.
   * If not set, defaults to Linear Interpolator.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.expression.proto.Easing}
   */
  public  static final class Easing extends
      com.google.protobuf.GeneratedMessageLite<
          Easing, Easing.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.expression.proto.Easing)
      EasingOrBuilder {
    private Easing() {
    }
    private int innerCase_ = 0;
    private java.lang.Object inner_;
    public enum InnerCase {
      CUBIC_BEZIER(1),
      INNER_NOT_SET(0);
      private final int value;
      private InnerCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static InnerCase valueOf(int value) {
        return forNumber(value);
      }

      public static InnerCase forNumber(int value) {
        switch (value) {
          case 1: return CUBIC_BEZIER;
          case 0: return INNER_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    @java.lang.Override
    public InnerCase
    getInnerCase() {
      return InnerCase.forNumber(
          innerCase_);
    }

    private void clearInner() {
      innerCase_ = 0;
      inner_ = null;
    }

    public static final int CUBIC_BEZIER_FIELD_NUMBER = 1;
    /**
     * <pre>
     * The cubic polynomial easing that implements third-order Bezier curves.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.CubicBezierEasing cubic_bezier = 1;</code>
     */
    @java.lang.Override
    public boolean hasCubicBezier() {
      return innerCase_ == 1;
    }
    /**
     * <pre>
     * The cubic polynomial easing that implements third-order Bezier curves.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.CubicBezierEasing cubic_bezier = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing getCubicBezier() {
      if (innerCase_ == 1) {
         return (androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing) inner_;
      }
      return androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing.getDefaultInstance();
    }
    /**
     * <pre>
     * The cubic polynomial easing that implements third-order Bezier curves.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.CubicBezierEasing cubic_bezier = 1;</code>
     */
    private void setCubicBezier(androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing value) {
      value.getClass();
  inner_ = value;
      innerCase_ = 1;
    }
    /**
     * <pre>
     * The cubic polynomial easing that implements third-order Bezier curves.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.CubicBezierEasing cubic_bezier = 1;</code>
     */
    private void mergeCubicBezier(androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing value) {
      value.getClass();
  if (innerCase_ == 1 &&
          inner_ != androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing.getDefaultInstance()) {
        inner_ = androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing.newBuilder((androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing) inner_)
            .mergeFrom(value).buildPartial();
      } else {
        inner_ = value;
      }
      innerCase_ = 1;
    }
    /**
     * <pre>
     * The cubic polynomial easing that implements third-order Bezier curves.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.CubicBezierEasing cubic_bezier = 1;</code>
     */
    private void clearCubicBezier() {
      if (innerCase_ == 1) {
        innerCase_ = 0;
        inner_ = null;
      }
    }

    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * The easing to be used for adjusting an animation's fraction. This allows
     * animation to speed up and slow down, rather than moving at a constant rate.
     * If not set, defaults to Linear Interpolator.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.expression.proto.Easing}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.expression.proto.Easing)
        androidx.wear.protolayout.expression.proto.AnimationParameterProto.EasingOrBuilder {
      // Construct using androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public InnerCase
          getInnerCase() {
        return instance.getInnerCase();
      }

      public Builder clearInner() {
        copyOnWrite();
        instance.clearInner();
        return this;
      }


      /**
       * <pre>
       * The cubic polynomial easing that implements third-order Bezier curves.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.CubicBezierEasing cubic_bezier = 1;</code>
       */
      @java.lang.Override
      public boolean hasCubicBezier() {
        return instance.hasCubicBezier();
      }
      /**
       * <pre>
       * The cubic polynomial easing that implements third-order Bezier curves.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.CubicBezierEasing cubic_bezier = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing getCubicBezier() {
        return instance.getCubicBezier();
      }
      /**
       * <pre>
       * The cubic polynomial easing that implements third-order Bezier curves.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.CubicBezierEasing cubic_bezier = 1;</code>
       */
      public Builder setCubicBezier(androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing value) {
        copyOnWrite();
        instance.setCubicBezier(value);
        return this;
      }
      /**
       * <pre>
       * The cubic polynomial easing that implements third-order Bezier curves.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.CubicBezierEasing cubic_bezier = 1;</code>
       */
      public Builder setCubicBezier(
          androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing.Builder builderForValue) {
        copyOnWrite();
        instance.setCubicBezier(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The cubic polynomial easing that implements third-order Bezier curves.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.CubicBezierEasing cubic_bezier = 1;</code>
       */
      public Builder mergeCubicBezier(androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing value) {
        copyOnWrite();
        instance.mergeCubicBezier(value);
        return this;
      }
      /**
       * <pre>
       * The cubic polynomial easing that implements third-order Bezier curves.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.CubicBezierEasing cubic_bezier = 1;</code>
       */
      public Builder clearCubicBezier() {
        copyOnWrite();
        instance.clearCubicBezier();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.expression.proto.Easing)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "inner_",
              "innerCase_",
              androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing.class,
            };
            java.lang.String info =
                "\u0000\u0001\u0001\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001<\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:androidx.wear.protolayout.expression.proto.Easing)
    private static final androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing DEFAULT_INSTANCE;
    static {
      Easing defaultInstance = new Easing();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        Easing.class, defaultInstance);
    }

    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Easing getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<Easing> PARSER;

    public static com.google.protobuf.Parser<Easing> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface CubicBezierEasingOrBuilder extends
      // @@protoc_insertion_point(interface_extends:androidx.wear.protolayout.expression.proto.CubicBezierEasing)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * The x coordinate of the first control point. The line through the point (0,
     * 0) and the first control point is tangent to the easing at the point (0, 0)
     * </pre>
     *
     * <code>float x1 = 1;</code>
     * @return The x1.
     */
    float getX1();

    /**
     * <pre>
     * The y coordinate of the first control point. The line through the point (0,
     * 0) and the first control point is tangent to the easing at the point (0,
     * 0).
     * </pre>
     *
     * <code>float y1 = 2;</code>
     * @return The y1.
     */
    float getY1();

    /**
     * <pre>
     * The x coordinate of the second control point. The line through the point
     * (1, 1) and the second control point is tangent to the easing at the point
     * (1, 1).
     * </pre>
     *
     * <code>float x2 = 3;</code>
     * @return The x2.
     */
    float getX2();

    /**
     * <pre>
     * The y coordinate of the second control point. The line through the point
     * (1, 1) and the second control point is tangent to the easing at the point
     * (1, 1).
     * </pre>
     *
     * <code>float y2 = 4;</code>
     * @return The y2.
     */
    float getY2();
  }
  /**
   * <pre>
   * The cubic polynomial easing that implements third-order Bezier curves. This
   * is equivalent to the Android PathInterpolator.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.expression.proto.CubicBezierEasing}
   */
  public  static final class CubicBezierEasing extends
      com.google.protobuf.GeneratedMessageLite<
          CubicBezierEasing, CubicBezierEasing.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.expression.proto.CubicBezierEasing)
      CubicBezierEasingOrBuilder {
    private CubicBezierEasing() {
    }
    public static final int X1_FIELD_NUMBER = 1;
    private float x1_;
    /**
     * <pre>
     * The x coordinate of the first control point. The line through the point (0,
     * 0) and the first control point is tangent to the easing at the point (0, 0)
     * </pre>
     *
     * <code>float x1 = 1;</code>
     * @return The x1.
     */
    @java.lang.Override
    public float getX1() {
      return x1_;
    }
    /**
     * <pre>
     * The x coordinate of the first control point. The line through the point (0,
     * 0) and the first control point is tangent to the easing at the point (0, 0)
     * </pre>
     *
     * <code>float x1 = 1;</code>
     * @param value The x1 to set.
     */
    private void setX1(float value) {
      
      x1_ = value;
    }
    /**
     * <pre>
     * The x coordinate of the first control point. The line through the point (0,
     * 0) and the first control point is tangent to the easing at the point (0, 0)
     * </pre>
     *
     * <code>float x1 = 1;</code>
     */
    private void clearX1() {

      x1_ = 0F;
    }

    public static final int Y1_FIELD_NUMBER = 2;
    private float y1_;
    /**
     * <pre>
     * The y coordinate of the first control point. The line through the point (0,
     * 0) and the first control point is tangent to the easing at the point (0,
     * 0).
     * </pre>
     *
     * <code>float y1 = 2;</code>
     * @return The y1.
     */
    @java.lang.Override
    public float getY1() {
      return y1_;
    }
    /**
     * <pre>
     * The y coordinate of the first control point. The line through the point (0,
     * 0) and the first control point is tangent to the easing at the point (0,
     * 0).
     * </pre>
     *
     * <code>float y1 = 2;</code>
     * @param value The y1 to set.
     */
    private void setY1(float value) {
      
      y1_ = value;
    }
    /**
     * <pre>
     * The y coordinate of the first control point. The line through the point (0,
     * 0) and the first control point is tangent to the easing at the point (0,
     * 0).
     * </pre>
     *
     * <code>float y1 = 2;</code>
     */
    private void clearY1() {

      y1_ = 0F;
    }

    public static final int X2_FIELD_NUMBER = 3;
    private float x2_;
    /**
     * <pre>
     * The x coordinate of the second control point. The line through the point
     * (1, 1) and the second control point is tangent to the easing at the point
     * (1, 1).
     * </pre>
     *
     * <code>float x2 = 3;</code>
     * @return The x2.
     */
    @java.lang.Override
    public float getX2() {
      return x2_;
    }
    /**
     * <pre>
     * The x coordinate of the second control point. The line through the point
     * (1, 1) and the second control point is tangent to the easing at the point
     * (1, 1).
     * </pre>
     *
     * <code>float x2 = 3;</code>
     * @param value The x2 to set.
     */
    private void setX2(float value) {
      
      x2_ = value;
    }
    /**
     * <pre>
     * The x coordinate of the second control point. The line through the point
     * (1, 1) and the second control point is tangent to the easing at the point
     * (1, 1).
     * </pre>
     *
     * <code>float x2 = 3;</code>
     */
    private void clearX2() {

      x2_ = 0F;
    }

    public static final int Y2_FIELD_NUMBER = 4;
    private float y2_;
    /**
     * <pre>
     * The y coordinate of the second control point. The line through the point
     * (1, 1) and the second control point is tangent to the easing at the point
     * (1, 1).
     * </pre>
     *
     * <code>float y2 = 4;</code>
     * @return The y2.
     */
    @java.lang.Override
    public float getY2() {
      return y2_;
    }
    /**
     * <pre>
     * The y coordinate of the second control point. The line through the point
     * (1, 1) and the second control point is tangent to the easing at the point
     * (1, 1).
     * </pre>
     *
     * <code>float y2 = 4;</code>
     * @param value The y2 to set.
     */
    private void setY2(float value) {
      
      y2_ = value;
    }
    /**
     * <pre>
     * The y coordinate of the second control point. The line through the point
     * (1, 1) and the second control point is tangent to the easing at the point
     * (1, 1).
     * </pre>
     *
     * <code>float y2 = 4;</code>
     */
    private void clearY2() {

      y2_ = 0F;
    }

    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * The cubic polynomial easing that implements third-order Bezier curves. This
     * is equivalent to the Android PathInterpolator.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.expression.proto.CubicBezierEasing}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.expression.proto.CubicBezierEasing)
        androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasingOrBuilder {
      // Construct using androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The x coordinate of the first control point. The line through the point (0,
       * 0) and the first control point is tangent to the easing at the point (0, 0)
       * </pre>
       *
       * <code>float x1 = 1;</code>
       * @return The x1.
       */
      @java.lang.Override
      public float getX1() {
        return instance.getX1();
      }
      /**
       * <pre>
       * The x coordinate of the first control point. The line through the point (0,
       * 0) and the first control point is tangent to the easing at the point (0, 0)
       * </pre>
       *
       * <code>float x1 = 1;</code>
       * @param value The x1 to set.
       * @return This builder for chaining.
       */
      public Builder setX1(float value) {
        copyOnWrite();
        instance.setX1(value);
        return this;
      }
      /**
       * <pre>
       * The x coordinate of the first control point. The line through the point (0,
       * 0) and the first control point is tangent to the easing at the point (0, 0)
       * </pre>
       *
       * <code>float x1 = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearX1() {
        copyOnWrite();
        instance.clearX1();
        return this;
      }

      /**
       * <pre>
       * The y coordinate of the first control point. The line through the point (0,
       * 0) and the first control point is tangent to the easing at the point (0,
       * 0).
       * </pre>
       *
       * <code>float y1 = 2;</code>
       * @return The y1.
       */
      @java.lang.Override
      public float getY1() {
        return instance.getY1();
      }
      /**
       * <pre>
       * The y coordinate of the first control point. The line through the point (0,
       * 0) and the first control point is tangent to the easing at the point (0,
       * 0).
       * </pre>
       *
       * <code>float y1 = 2;</code>
       * @param value The y1 to set.
       * @return This builder for chaining.
       */
      public Builder setY1(float value) {
        copyOnWrite();
        instance.setY1(value);
        return this;
      }
      /**
       * <pre>
       * The y coordinate of the first control point. The line through the point (0,
       * 0) and the first control point is tangent to the easing at the point (0,
       * 0).
       * </pre>
       *
       * <code>float y1 = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearY1() {
        copyOnWrite();
        instance.clearY1();
        return this;
      }

      /**
       * <pre>
       * The x coordinate of the second control point. The line through the point
       * (1, 1) and the second control point is tangent to the easing at the point
       * (1, 1).
       * </pre>
       *
       * <code>float x2 = 3;</code>
       * @return The x2.
       */
      @java.lang.Override
      public float getX2() {
        return instance.getX2();
      }
      /**
       * <pre>
       * The x coordinate of the second control point. The line through the point
       * (1, 1) and the second control point is tangent to the easing at the point
       * (1, 1).
       * </pre>
       *
       * <code>float x2 = 3;</code>
       * @param value The x2 to set.
       * @return This builder for chaining.
       */
      public Builder setX2(float value) {
        copyOnWrite();
        instance.setX2(value);
        return this;
      }
      /**
       * <pre>
       * The x coordinate of the second control point. The line through the point
       * (1, 1) and the second control point is tangent to the easing at the point
       * (1, 1).
       * </pre>
       *
       * <code>float x2 = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearX2() {
        copyOnWrite();
        instance.clearX2();
        return this;
      }

      /**
       * <pre>
       * The y coordinate of the second control point. The line through the point
       * (1, 1) and the second control point is tangent to the easing at the point
       * (1, 1).
       * </pre>
       *
       * <code>float y2 = 4;</code>
       * @return The y2.
       */
      @java.lang.Override
      public float getY2() {
        return instance.getY2();
      }
      /**
       * <pre>
       * The y coordinate of the second control point. The line through the point
       * (1, 1) and the second control point is tangent to the easing at the point
       * (1, 1).
       * </pre>
       *
       * <code>float y2 = 4;</code>
       * @param value The y2 to set.
       * @return This builder for chaining.
       */
      public Builder setY2(float value) {
        copyOnWrite();
        instance.setY2(value);
        return this;
      }
      /**
       * <pre>
       * The y coordinate of the second control point. The line through the point
       * (1, 1) and the second control point is tangent to the easing at the point
       * (1, 1).
       * </pre>
       *
       * <code>float y2 = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearY2() {
        copyOnWrite();
        instance.clearY2();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.expression.proto.CubicBezierEasing)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "x1_",
              "y1_",
              "x2_",
              "y2_",
            };
            java.lang.String info =
                "\u0000\u0004\u0000\u0000\u0001\u0004\u0004\u0000\u0000\u0000\u0001\u0001\u0002\u0001" +
                "\u0003\u0001\u0004\u0001";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:androidx.wear.protolayout.expression.proto.CubicBezierEasing)
    private static final androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing DEFAULT_INSTANCE;
    static {
      CubicBezierEasing defaultInstance = new CubicBezierEasing();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        CubicBezierEasing.class, defaultInstance);
    }

    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.CubicBezierEasing getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<CubicBezierEasing> PARSER;

    public static com.google.protobuf.Parser<CubicBezierEasing> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface RepeatableOrBuilder extends
      // @@protoc_insertion_point(interface_extends:androidx.wear.protolayout.expression.proto.Repeatable)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * The number specifying how many times animation will be repeated. If
     * not set, defaults to 0, i.e. repeat infinitely.
     * </pre>
     *
     * <code>uint32 iterations = 1;</code>
     * @return The iterations.
     */
    int getIterations();

    /**
     * <pre>
     * The repeat mode to specify how animation will behave when repeated. If not
     * set, defaults to restart.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.RepeatMode repeat_mode = 2;</code>
     * @return The enum numeric value on the wire for repeatMode.
     */
    int getRepeatModeValue();
    /**
     * <pre>
     * The repeat mode to specify how animation will behave when repeated. If not
     * set, defaults to restart.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.RepeatMode repeat_mode = 2;</code>
     * @return The repeatMode.
     */
    androidx.wear.protolayout.expression.proto.AnimationParameterProto.RepeatMode getRepeatMode();

    /**
     * <pre>
     * Optional custom parameters for the forward passes of animation. If not set,
     * use the main animation parameters set outside of Repeatable.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters forward_repeat_override = 6;</code>
     * @return Whether the forwardRepeatOverride field is set.
     */
    boolean hasForwardRepeatOverride();
    /**
     * <pre>
     * Optional custom parameters for the forward passes of animation. If not set,
     * use the main animation parameters set outside of Repeatable.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters forward_repeat_override = 6;</code>
     * @return The forwardRepeatOverride.
     */
    androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters getForwardRepeatOverride();

    /**
     * <pre>
     * Optional custom parameters for the reverse passes of animation. If not set,
     * use the main animation parameters set outside of Repeatable.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters reverse_repeat_override = 7;</code>
     * @return Whether the reverseRepeatOverride field is set.
     */
    boolean hasReverseRepeatOverride();
    /**
     * <pre>
     * Optional custom parameters for the reverse passes of animation. If not set,
     * use the main animation parameters set outside of Repeatable.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters reverse_repeat_override = 7;</code>
     * @return The reverseRepeatOverride.
     */
    androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters getReverseRepeatOverride();
  }
  /**
   * <pre>
   * The repeatable mode to be used for specifying how many times animation will
   * be repeated.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.expression.proto.Repeatable}
   */
  public  static final class Repeatable extends
      com.google.protobuf.GeneratedMessageLite<
          Repeatable, Repeatable.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.expression.proto.Repeatable)
      RepeatableOrBuilder {
    private Repeatable() {
    }
    public static final int ITERATIONS_FIELD_NUMBER = 1;
    private int iterations_;
    /**
     * <pre>
     * The number specifying how many times animation will be repeated. If
     * not set, defaults to 0, i.e. repeat infinitely.
     * </pre>
     *
     * <code>uint32 iterations = 1;</code>
     * @return The iterations.
     */
    @java.lang.Override
    public int getIterations() {
      return iterations_;
    }
    /**
     * <pre>
     * The number specifying how many times animation will be repeated. If
     * not set, defaults to 0, i.e. repeat infinitely.
     * </pre>
     *
     * <code>uint32 iterations = 1;</code>
     * @param value The iterations to set.
     */
    private void setIterations(int value) {
      
      iterations_ = value;
    }
    /**
     * <pre>
     * The number specifying how many times animation will be repeated. If
     * not set, defaults to 0, i.e. repeat infinitely.
     * </pre>
     *
     * <code>uint32 iterations = 1;</code>
     */
    private void clearIterations() {

      iterations_ = 0;
    }

    public static final int REPEAT_MODE_FIELD_NUMBER = 2;
    private int repeatMode_;
    /**
     * <pre>
     * The repeat mode to specify how animation will behave when repeated. If not
     * set, defaults to restart.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.RepeatMode repeat_mode = 2;</code>
     * @return The enum numeric value on the wire for repeatMode.
     */
    @java.lang.Override
    public int getRepeatModeValue() {
      return repeatMode_;
    }
    /**
     * <pre>
     * The repeat mode to specify how animation will behave when repeated. If not
     * set, defaults to restart.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.RepeatMode repeat_mode = 2;</code>
     * @return The repeatMode.
     */
    @java.lang.Override
    public androidx.wear.protolayout.expression.proto.AnimationParameterProto.RepeatMode getRepeatMode() {
      androidx.wear.protolayout.expression.proto.AnimationParameterProto.RepeatMode result = androidx.wear.protolayout.expression.proto.AnimationParameterProto.RepeatMode.forNumber(repeatMode_);
      return result == null ? androidx.wear.protolayout.expression.proto.AnimationParameterProto.RepeatMode.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * The repeat mode to specify how animation will behave when repeated. If not
     * set, defaults to restart.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.RepeatMode repeat_mode = 2;</code>
     * @param value The enum numeric value on the wire for repeatMode to set.
     */
    private void setRepeatModeValue(int value) {
        repeatMode_ = value;
    }
    /**
     * <pre>
     * The repeat mode to specify how animation will behave when repeated. If not
     * set, defaults to restart.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.RepeatMode repeat_mode = 2;</code>
     * @param value The repeatMode to set.
     */
    private void setRepeatMode(androidx.wear.protolayout.expression.proto.AnimationParameterProto.RepeatMode value) {
      repeatMode_ = value.getNumber();

    }
    /**
     * <pre>
     * The repeat mode to specify how animation will behave when repeated. If not
     * set, defaults to restart.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.RepeatMode repeat_mode = 2;</code>
     */
    private void clearRepeatMode() {

      repeatMode_ = 0;
    }

    public static final int FORWARD_REPEAT_OVERRIDE_FIELD_NUMBER = 6;
    private androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters forwardRepeatOverride_;
    /**
     * <pre>
     * Optional custom parameters for the forward passes of animation. If not set,
     * use the main animation parameters set outside of Repeatable.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters forward_repeat_override = 6;</code>
     */
    @java.lang.Override
    public boolean hasForwardRepeatOverride() {
      return forwardRepeatOverride_ != null;
    }
    /**
     * <pre>
     * Optional custom parameters for the forward passes of animation. If not set,
     * use the main animation parameters set outside of Repeatable.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters forward_repeat_override = 6;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters getForwardRepeatOverride() {
      return forwardRepeatOverride_ == null ? androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters.getDefaultInstance() : forwardRepeatOverride_;
    }
    /**
     * <pre>
     * Optional custom parameters for the forward passes of animation. If not set,
     * use the main animation parameters set outside of Repeatable.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters forward_repeat_override = 6;</code>
     */
    private void setForwardRepeatOverride(androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters value) {
      value.getClass();
  forwardRepeatOverride_ = value;

      }
    /**
     * <pre>
     * Optional custom parameters for the forward passes of animation. If not set,
     * use the main animation parameters set outside of Repeatable.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters forward_repeat_override = 6;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeForwardRepeatOverride(androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters value) {
      value.getClass();
  if (forwardRepeatOverride_ != null &&
          forwardRepeatOverride_ != androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters.getDefaultInstance()) {
        forwardRepeatOverride_ =
          androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters.newBuilder(forwardRepeatOverride_).mergeFrom(value).buildPartial();
      } else {
        forwardRepeatOverride_ = value;
      }

    }
    /**
     * <pre>
     * Optional custom parameters for the forward passes of animation. If not set,
     * use the main animation parameters set outside of Repeatable.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters forward_repeat_override = 6;</code>
     */
    private void clearForwardRepeatOverride() {  forwardRepeatOverride_ = null;

    }

    public static final int REVERSE_REPEAT_OVERRIDE_FIELD_NUMBER = 7;
    private androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters reverseRepeatOverride_;
    /**
     * <pre>
     * Optional custom parameters for the reverse passes of animation. If not set,
     * use the main animation parameters set outside of Repeatable.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters reverse_repeat_override = 7;</code>
     */
    @java.lang.Override
    public boolean hasReverseRepeatOverride() {
      return reverseRepeatOverride_ != null;
    }
    /**
     * <pre>
     * Optional custom parameters for the reverse passes of animation. If not set,
     * use the main animation parameters set outside of Repeatable.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters reverse_repeat_override = 7;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters getReverseRepeatOverride() {
      return reverseRepeatOverride_ == null ? androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters.getDefaultInstance() : reverseRepeatOverride_;
    }
    /**
     * <pre>
     * Optional custom parameters for the reverse passes of animation. If not set,
     * use the main animation parameters set outside of Repeatable.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters reverse_repeat_override = 7;</code>
     */
    private void setReverseRepeatOverride(androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters value) {
      value.getClass();
  reverseRepeatOverride_ = value;

      }
    /**
     * <pre>
     * Optional custom parameters for the reverse passes of animation. If not set,
     * use the main animation parameters set outside of Repeatable.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters reverse_repeat_override = 7;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeReverseRepeatOverride(androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters value) {
      value.getClass();
  if (reverseRepeatOverride_ != null &&
          reverseRepeatOverride_ != androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters.getDefaultInstance()) {
        reverseRepeatOverride_ =
          androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters.newBuilder(reverseRepeatOverride_).mergeFrom(value).buildPartial();
      } else {
        reverseRepeatOverride_ = value;
      }

    }
    /**
     * <pre>
     * Optional custom parameters for the reverse passes of animation. If not set,
     * use the main animation parameters set outside of Repeatable.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters reverse_repeat_override = 7;</code>
     */
    private void clearReverseRepeatOverride() {  reverseRepeatOverride_ = null;

    }

    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * The repeatable mode to be used for specifying how many times animation will
     * be repeated.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.expression.proto.Repeatable}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.expression.proto.Repeatable)
        androidx.wear.protolayout.expression.proto.AnimationParameterProto.RepeatableOrBuilder {
      // Construct using androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The number specifying how many times animation will be repeated. If
       * not set, defaults to 0, i.e. repeat infinitely.
       * </pre>
       *
       * <code>uint32 iterations = 1;</code>
       * @return The iterations.
       */
      @java.lang.Override
      public int getIterations() {
        return instance.getIterations();
      }
      /**
       * <pre>
       * The number specifying how many times animation will be repeated. If
       * not set, defaults to 0, i.e. repeat infinitely.
       * </pre>
       *
       * <code>uint32 iterations = 1;</code>
       * @param value The iterations to set.
       * @return This builder for chaining.
       */
      public Builder setIterations(int value) {
        copyOnWrite();
        instance.setIterations(value);
        return this;
      }
      /**
       * <pre>
       * The number specifying how many times animation will be repeated. If
       * not set, defaults to 0, i.e. repeat infinitely.
       * </pre>
       *
       * <code>uint32 iterations = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearIterations() {
        copyOnWrite();
        instance.clearIterations();
        return this;
      }

      /**
       * <pre>
       * The repeat mode to specify how animation will behave when repeated. If not
       * set, defaults to restart.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.RepeatMode repeat_mode = 2;</code>
       * @return The enum numeric value on the wire for repeatMode.
       */
      @java.lang.Override
      public int getRepeatModeValue() {
        return instance.getRepeatModeValue();
      }
      /**
       * <pre>
       * The repeat mode to specify how animation will behave when repeated. If not
       * set, defaults to restart.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.RepeatMode repeat_mode = 2;</code>
       * @param value The repeatMode to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatModeValue(int value) {
        copyOnWrite();
        instance.setRepeatModeValue(value);
        return this;
      }
      /**
       * <pre>
       * The repeat mode to specify how animation will behave when repeated. If not
       * set, defaults to restart.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.RepeatMode repeat_mode = 2;</code>
       * @return The repeatMode.
       */
      @java.lang.Override
      public androidx.wear.protolayout.expression.proto.AnimationParameterProto.RepeatMode getRepeatMode() {
        return instance.getRepeatMode();
      }
      /**
       * <pre>
       * The repeat mode to specify how animation will behave when repeated. If not
       * set, defaults to restart.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.RepeatMode repeat_mode = 2;</code>
       * @param value The enum numeric value on the wire for repeatMode to set.
       * @return This builder for chaining.
       */
      public Builder setRepeatMode(androidx.wear.protolayout.expression.proto.AnimationParameterProto.RepeatMode value) {
        copyOnWrite();
        instance.setRepeatMode(value);
        return this;
      }
      /**
       * <pre>
       * The repeat mode to specify how animation will behave when repeated. If not
       * set, defaults to restart.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.RepeatMode repeat_mode = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearRepeatMode() {
        copyOnWrite();
        instance.clearRepeatMode();
        return this;
      }

      /**
       * <pre>
       * Optional custom parameters for the forward passes of animation. If not set,
       * use the main animation parameters set outside of Repeatable.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters forward_repeat_override = 6;</code>
       */
      @java.lang.Override
      public boolean hasForwardRepeatOverride() {
        return instance.hasForwardRepeatOverride();
      }
      /**
       * <pre>
       * Optional custom parameters for the forward passes of animation. If not set,
       * use the main animation parameters set outside of Repeatable.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters forward_repeat_override = 6;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters getForwardRepeatOverride() {
        return instance.getForwardRepeatOverride();
      }
      /**
       * <pre>
       * Optional custom parameters for the forward passes of animation. If not set,
       * use the main animation parameters set outside of Repeatable.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters forward_repeat_override = 6;</code>
       */
      public Builder setForwardRepeatOverride(androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters value) {
        copyOnWrite();
        instance.setForwardRepeatOverride(value);
        return this;
        }
      /**
       * <pre>
       * Optional custom parameters for the forward passes of animation. If not set,
       * use the main animation parameters set outside of Repeatable.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters forward_repeat_override = 6;</code>
       */
      public Builder setForwardRepeatOverride(
          androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters.Builder builderForValue) {
        copyOnWrite();
        instance.setForwardRepeatOverride(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Optional custom parameters for the forward passes of animation. If not set,
       * use the main animation parameters set outside of Repeatable.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters forward_repeat_override = 6;</code>
       */
      public Builder mergeForwardRepeatOverride(androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters value) {
        copyOnWrite();
        instance.mergeForwardRepeatOverride(value);
        return this;
      }
      /**
       * <pre>
       * Optional custom parameters for the forward passes of animation. If not set,
       * use the main animation parameters set outside of Repeatable.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters forward_repeat_override = 6;</code>
       */
      public Builder clearForwardRepeatOverride() {  copyOnWrite();
        instance.clearForwardRepeatOverride();
        return this;
      }

      /**
       * <pre>
       * Optional custom parameters for the reverse passes of animation. If not set,
       * use the main animation parameters set outside of Repeatable.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters reverse_repeat_override = 7;</code>
       */
      @java.lang.Override
      public boolean hasReverseRepeatOverride() {
        return instance.hasReverseRepeatOverride();
      }
      /**
       * <pre>
       * Optional custom parameters for the reverse passes of animation. If not set,
       * use the main animation parameters set outside of Repeatable.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters reverse_repeat_override = 7;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters getReverseRepeatOverride() {
        return instance.getReverseRepeatOverride();
      }
      /**
       * <pre>
       * Optional custom parameters for the reverse passes of animation. If not set,
       * use the main animation parameters set outside of Repeatable.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters reverse_repeat_override = 7;</code>
       */
      public Builder setReverseRepeatOverride(androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters value) {
        copyOnWrite();
        instance.setReverseRepeatOverride(value);
        return this;
        }
      /**
       * <pre>
       * Optional custom parameters for the reverse passes of animation. If not set,
       * use the main animation parameters set outside of Repeatable.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters reverse_repeat_override = 7;</code>
       */
      public Builder setReverseRepeatOverride(
          androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters.Builder builderForValue) {
        copyOnWrite();
        instance.setReverseRepeatOverride(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Optional custom parameters for the reverse passes of animation. If not set,
       * use the main animation parameters set outside of Repeatable.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters reverse_repeat_override = 7;</code>
       */
      public Builder mergeReverseRepeatOverride(androidx.wear.protolayout.expression.proto.AnimationParameterProto.AnimationParameters value) {
        copyOnWrite();
        instance.mergeReverseRepeatOverride(value);
        return this;
      }
      /**
       * <pre>
       * Optional custom parameters for the reverse passes of animation. If not set,
       * use the main animation parameters set outside of Repeatable.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.expression.proto.AnimationParameters reverse_repeat_override = 7;</code>
       */
      public Builder clearReverseRepeatOverride() {  copyOnWrite();
        instance.clearReverseRepeatOverride();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.expression.proto.Repeatable)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "iterations_",
              "repeatMode_",
              "forwardRepeatOverride_",
              "reverseRepeatOverride_",
            };
            java.lang.String info =
                "\u0000\u0004\u0000\u0000\u0001\u0007\u0004\u0000\u0000\u0000\u0001\u000b\u0002\f" +
                "\u0006\t\u0007\t";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:androidx.wear.protolayout.expression.proto.Repeatable)
    private static final androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable DEFAULT_INSTANCE;
    static {
      Repeatable defaultInstance = new Repeatable();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        Repeatable.class, defaultInstance);
    }

    public static androidx.wear.protolayout.expression.proto.AnimationParameterProto.Repeatable getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<Repeatable> PARSER;

    public static com.google.protobuf.Parser<Repeatable> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }


  static {
  }

  // @@protoc_insertion_point(outer_class_scope)
}