public final class

LayoutElementProto

extends java.lang.Object

 java.lang.Object

↳androidx.wear.protolayout.proto.LayoutElementProto

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: layout.proto

package androidx.wear.protolayout.proto;

public final class LayoutElementProto {
  private LayoutElementProto() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }
  /**
   * <pre>
   * The weight to be applied to the font.
   * </pre>
   *
   * Protobuf enum {@code androidx.wear.protolayout.proto.FontWeight}
   */
  public enum FontWeight
      implements com.google.protobuf.Internal.EnumLite {
    /**
     * <pre>
     * Font weight is undefined.
     * </pre>
     *
     * <code>FONT_WEIGHT_UNDEFINED = 0;</code>
     */
    FONT_WEIGHT_UNDEFINED(0),
    /**
     * <pre>
     * Normal font weight.
     * </pre>
     *
     * <code>FONT_WEIGHT_NORMAL = 400;</code>
     */
    FONT_WEIGHT_NORMAL(400),
    /**
     * <pre>
     * Medium font weight.
     * </pre>
     *
     * <code>FONT_WEIGHT_MEDIUM = 500;</code>
     */
    FONT_WEIGHT_MEDIUM(500),
    /**
     * <pre>
     * Bold font weight.
     * </pre>
     *
     * <code>FONT_WEIGHT_BOLD = 700;</code>
     */
    FONT_WEIGHT_BOLD(700),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     * Font weight is undefined.
     * </pre>
     *
     * <code>FONT_WEIGHT_UNDEFINED = 0;</code>
     */
    public static final int FONT_WEIGHT_UNDEFINED_VALUE = 0;
    /**
     * <pre>
     * Normal font weight.
     * </pre>
     *
     * <code>FONT_WEIGHT_NORMAL = 400;</code>
     */
    public static final int FONT_WEIGHT_NORMAL_VALUE = 400;
    /**
     * <pre>
     * Medium font weight.
     * </pre>
     *
     * <code>FONT_WEIGHT_MEDIUM = 500;</code>
     */
    public static final int FONT_WEIGHT_MEDIUM_VALUE = 500;
    /**
     * <pre>
     * Bold font weight.
     * </pre>
     *
     * <code>FONT_WEIGHT_BOLD = 700;</code>
     */
    public static final int FONT_WEIGHT_BOLD_VALUE = 700;


    @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 FontWeight valueOf(int value) {
      return forNumber(value);
    }

    public static FontWeight forNumber(int value) {
      switch (value) {
        case 0: return FONT_WEIGHT_UNDEFINED;
        case 400: return FONT_WEIGHT_NORMAL;
        case 500: return FONT_WEIGHT_MEDIUM;
        case 700: return FONT_WEIGHT_BOLD;
        default: return null;
      }
    }

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

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

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

    private final int value;

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

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

  /**
   * <pre>
   * The variant of a font. Some renderers may use different fonts for title and
   * body text, which can be selected using this field.
   * </pre>
   *
   * Protobuf enum {@code androidx.wear.protolayout.proto.FontVariant}
   */
  public enum FontVariant
      implements com.google.protobuf.Internal.EnumLite {
    /**
     * <pre>
     * Font variant is undefined.
     * </pre>
     *
     * <code>FONT_VARIANT_UNDEFINED = 0;</code>
     */
    FONT_VARIANT_UNDEFINED(0),
    /**
     * <pre>
     * Font variant suited for title text.
     * </pre>
     *
     * <code>FONT_VARIANT_TITLE = 1;</code>
     */
    FONT_VARIANT_TITLE(1),
    /**
     * <pre>
     * Font variant suited for body text.
     * </pre>
     *
     * <code>FONT_VARIANT_BODY = 2;</code>
     */
    FONT_VARIANT_BODY(2),
    /**
     * <pre>
     * Placeholder for a custom font variant in the renderer.
     * </pre>
     *
     * <code>FONT_VARIANT_CUSTOM_1 = 3;</code>
     */
    FONT_VARIANT_CUSTOM_1(3),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     * Font variant is undefined.
     * </pre>
     *
     * <code>FONT_VARIANT_UNDEFINED = 0;</code>
     */
    public static final int FONT_VARIANT_UNDEFINED_VALUE = 0;
    /**
     * <pre>
     * Font variant suited for title text.
     * </pre>
     *
     * <code>FONT_VARIANT_TITLE = 1;</code>
     */
    public static final int FONT_VARIANT_TITLE_VALUE = 1;
    /**
     * <pre>
     * Font variant suited for body text.
     * </pre>
     *
     * <code>FONT_VARIANT_BODY = 2;</code>
     */
    public static final int FONT_VARIANT_BODY_VALUE = 2;
    /**
     * <pre>
     * Placeholder for a custom font variant in the renderer.
     * </pre>
     *
     * <code>FONT_VARIANT_CUSTOM_1 = 3;</code>
     */
    public static final int FONT_VARIANT_CUSTOM_1_VALUE = 3;


    @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 FontVariant valueOf(int value) {
      return forNumber(value);
    }

    public static FontVariant forNumber(int value) {
      switch (value) {
        case 0: return FONT_VARIANT_UNDEFINED;
        case 1: return FONT_VARIANT_TITLE;
        case 2: return FONT_VARIANT_BODY;
        case 3: return FONT_VARIANT_CUSTOM_1;
        default: return null;
      }
    }

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

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

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

    private final int value;

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

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

  /**
   * <pre>
   * The alignment of a SpanImage within the line height of the surrounding
   * Spannable.
   * </pre>
   *
   * Protobuf enum {@code androidx.wear.protolayout.proto.SpanVerticalAlignment}
   */
  public enum SpanVerticalAlignment
      implements com.google.protobuf.Internal.EnumLite {
    /**
     * <pre>
     * Alignment is undefined.
     * </pre>
     *
     * <code>SPAN_VERTICAL_ALIGN_UNDEFINED = 0;</code>
     */
    SPAN_VERTICAL_ALIGN_UNDEFINED(0),
    /**
     * <pre>
     * Align to the bottom of the line (descent of the largest text in this line).
     * If there is no text in the line containing this image, this will align to
     * the bottom of the line, where the line height is defined as the height of
     * the largest image in the line.
     * </pre>
     *
     * <code>SPAN_VERTICAL_ALIGN_BOTTOM = 1;</code>
     */
    SPAN_VERTICAL_ALIGN_BOTTOM(1),
    /**
     * <pre>
     * Align to the baseline of the text. Note that if the line in the Spannable
     * which contains this image does not contain any text, the effects of using
     * this alignment are undefined.
     * </pre>
     *
     * <code>SPAN_VERTICAL_ALIGN_TEXT_BASELINE = 2;</code>
     */
    SPAN_VERTICAL_ALIGN_TEXT_BASELINE(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     * Alignment is undefined.
     * </pre>
     *
     * <code>SPAN_VERTICAL_ALIGN_UNDEFINED = 0;</code>
     */
    public static final int SPAN_VERTICAL_ALIGN_UNDEFINED_VALUE = 0;
    /**
     * <pre>
     * Align to the bottom of the line (descent of the largest text in this line).
     * If there is no text in the line containing this image, this will align to
     * the bottom of the line, where the line height is defined as the height of
     * the largest image in the line.
     * </pre>
     *
     * <code>SPAN_VERTICAL_ALIGN_BOTTOM = 1;</code>
     */
    public static final int SPAN_VERTICAL_ALIGN_BOTTOM_VALUE = 1;
    /**
     * <pre>
     * Align to the baseline of the text. Note that if the line in the Spannable
     * which contains this image does not contain any text, the effects of using
     * this alignment are undefined.
     * </pre>
     *
     * <code>SPAN_VERTICAL_ALIGN_TEXT_BASELINE = 2;</code>
     */
    public static final int SPAN_VERTICAL_ALIGN_TEXT_BASELINE_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 SpanVerticalAlignment valueOf(int value) {
      return forNumber(value);
    }

    public static SpanVerticalAlignment forNumber(int value) {
      switch (value) {
        case 0: return SPAN_VERTICAL_ALIGN_UNDEFINED;
        case 1: return SPAN_VERTICAL_ALIGN_BOTTOM;
        case 2: return SPAN_VERTICAL_ALIGN_TEXT_BASELINE;
        default: return null;
      }
    }

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

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

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

    private final int value;

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

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

  /**
   * <pre>
   * How text that will not fit inside the bounds of a Text element will be
   * handled.
   * </pre>
   *
   * Protobuf enum {@code androidx.wear.protolayout.proto.TextOverflow}
   */
  public enum TextOverflow
      implements com.google.protobuf.Internal.EnumLite {
    /**
     * <pre>
     * Overflow behavior is undefined.
     * </pre>
     *
     * <code>TEXT_OVERFLOW_UNDEFINED = 0;</code>
     */
    TEXT_OVERFLOW_UNDEFINED(0),
    /**
     * <pre>
     * Truncate the text to fit inside of the Text element's bounds. If text is
     * truncated, it will be truncated on a word boundary.
     * </pre>
     *
     * <code>TEXT_OVERFLOW_TRUNCATE = 1;</code>
     */
    TEXT_OVERFLOW_TRUNCATE(1),
    /**
     * <pre>
     * Truncate the text at the last line defined by {&#64;code setMaxLines} in Text
     * to fit in the Text element's bounds, but add an ellipsis (i.e. ...) to the
     * end of the text if it has been truncated. Note that this will not add an
     * ellipsis if the number of lines that fits into the available space is less
     * than the {&#64;code setMaxLines} in Text.
     *
     * DEPRECATED: Use {&#64;link #TEXT_OVERFLOW_ELLIPSIZE} instead.
     * </pre>
     *
     * <code>TEXT_OVERFLOW_ELLIPSIZE_END = 2;</code>
     */
    TEXT_OVERFLOW_ELLIPSIZE_END(2),
    /**
     * <code>TEXT_OVERFLOW_MARQUEE = 3;</code>
     */
    TEXT_OVERFLOW_MARQUEE(3),
    /**
     * <pre>
     * Truncate the text to fit in the Text element's parent bounds, but add an
     * ellipsis (i.e. ...) to the end of the text if it has been truncated.
     *
     * &lt;p&gt;Note that, when this is used, the parent of the Text element this
     * corresponds to shouldn't have its width and height set to wrapped, as it
     * can lead to unexpected results.
     * </pre>
     *
     * <code>TEXT_OVERFLOW_ELLIPSIZE = 4;</code>
     */
    TEXT_OVERFLOW_ELLIPSIZE(4),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     * Overflow behavior is undefined.
     * </pre>
     *
     * <code>TEXT_OVERFLOW_UNDEFINED = 0;</code>
     */
    public static final int TEXT_OVERFLOW_UNDEFINED_VALUE = 0;
    /**
     * <pre>
     * Truncate the text to fit inside of the Text element's bounds. If text is
     * truncated, it will be truncated on a word boundary.
     * </pre>
     *
     * <code>TEXT_OVERFLOW_TRUNCATE = 1;</code>
     */
    public static final int TEXT_OVERFLOW_TRUNCATE_VALUE = 1;
    /**
     * <pre>
     * Truncate the text at the last line defined by {&#64;code setMaxLines} in Text
     * to fit in the Text element's bounds, but add an ellipsis (i.e. ...) to the
     * end of the text if it has been truncated. Note that this will not add an
     * ellipsis if the number of lines that fits into the available space is less
     * than the {&#64;code setMaxLines} in Text.
     *
     * DEPRECATED: Use {&#64;link #TEXT_OVERFLOW_ELLIPSIZE} instead.
     * </pre>
     *
     * <code>TEXT_OVERFLOW_ELLIPSIZE_END = 2;</code>
     */
    public static final int TEXT_OVERFLOW_ELLIPSIZE_END_VALUE = 2;
    /**
     * <code>TEXT_OVERFLOW_MARQUEE = 3;</code>
     */
    public static final int TEXT_OVERFLOW_MARQUEE_VALUE = 3;
    /**
     * <pre>
     * Truncate the text to fit in the Text element's parent bounds, but add an
     * ellipsis (i.e. ...) to the end of the text if it has been truncated.
     *
     * &lt;p&gt;Note that, when this is used, the parent of the Text element this
     * corresponds to shouldn't have its width and height set to wrapped, as it
     * can lead to unexpected results.
     * </pre>
     *
     * <code>TEXT_OVERFLOW_ELLIPSIZE = 4;</code>
     */
    public static final int TEXT_OVERFLOW_ELLIPSIZE_VALUE = 4;


    @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 TextOverflow valueOf(int value) {
      return forNumber(value);
    }

    public static TextOverflow forNumber(int value) {
      switch (value) {
        case 0: return TEXT_OVERFLOW_UNDEFINED;
        case 1: return TEXT_OVERFLOW_TRUNCATE;
        case 2: return TEXT_OVERFLOW_ELLIPSIZE_END;
        case 3: return TEXT_OVERFLOW_MARQUEE;
        case 4: return TEXT_OVERFLOW_ELLIPSIZE;
        default: return null;
      }
    }

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

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

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

    private final int value;

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

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

  /**
   * <pre>
   * How content which does not match the dimensions of its bounds (e.g. an image
   * resource being drawn inside an Image) will be resized to fit its bounds.
   * </pre>
   *
   * Protobuf enum {@code androidx.wear.protolayout.proto.ContentScaleMode}
   */
  public enum ContentScaleMode
      implements com.google.protobuf.Internal.EnumLite {
    /**
     * <pre>
     * Content scaling is undefined.
     * </pre>
     *
     * <code>CONTENT_SCALE_MODE_UNDEFINED = 0;</code>
     */
    CONTENT_SCALE_MODE_UNDEFINED(0),
    /**
     * <pre>
     * Content will be scaled to fit inside its bounds, proportionally. As an
     * example, If a 10x5 image was going to be drawn inside a 50x50 Image
     * element, the actual image resource would be drawn as a 50x25 image,
     * centered within the 50x50 bounds.
     * </pre>
     *
     * <code>CONTENT_SCALE_MODE_FIT = 1;</code>
     */
    CONTENT_SCALE_MODE_FIT(1),
    /**
     * <pre>
     * Content will be resized proportionally so it completely fills its bounds,
     * and anything outside of the bounds will be cropped. As an example, if a
     * 10x5 image was going to be drawn inside a 50x50 Image element, the image
     * resource would be drawn as a 100x50 image, centered within its bounds (and
     * with 25px cropped from both the left and right sides).
     * </pre>
     *
     * <code>CONTENT_SCALE_MODE_CROP = 2;</code>
     */
    CONTENT_SCALE_MODE_CROP(2),
    /**
     * <pre>
     * Content will be resized to fill its bounds, without taking into account the
     * aspect ratio. If a 10x5 image was going to be drawn inside a 50x50 Image
     * element, the image would be drawn as a 50x50 image, stretched vertically.
     * </pre>
     *
     * <code>CONTENT_SCALE_MODE_FILL_BOUNDS = 3;</code>
     */
    CONTENT_SCALE_MODE_FILL_BOUNDS(3),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     * Content scaling is undefined.
     * </pre>
     *
     * <code>CONTENT_SCALE_MODE_UNDEFINED = 0;</code>
     */
    public static final int CONTENT_SCALE_MODE_UNDEFINED_VALUE = 0;
    /**
     * <pre>
     * Content will be scaled to fit inside its bounds, proportionally. As an
     * example, If a 10x5 image was going to be drawn inside a 50x50 Image
     * element, the actual image resource would be drawn as a 50x25 image,
     * centered within the 50x50 bounds.
     * </pre>
     *
     * <code>CONTENT_SCALE_MODE_FIT = 1;</code>
     */
    public static final int CONTENT_SCALE_MODE_FIT_VALUE = 1;
    /**
     * <pre>
     * Content will be resized proportionally so it completely fills its bounds,
     * and anything outside of the bounds will be cropped. As an example, if a
     * 10x5 image was going to be drawn inside a 50x50 Image element, the image
     * resource would be drawn as a 100x50 image, centered within its bounds (and
     * with 25px cropped from both the left and right sides).
     * </pre>
     *
     * <code>CONTENT_SCALE_MODE_CROP = 2;</code>
     */
    public static final int CONTENT_SCALE_MODE_CROP_VALUE = 2;
    /**
     * <pre>
     * Content will be resized to fill its bounds, without taking into account the
     * aspect ratio. If a 10x5 image was going to be drawn inside a 50x50 Image
     * element, the image would be drawn as a 50x50 image, stretched vertically.
     * </pre>
     *
     * <code>CONTENT_SCALE_MODE_FILL_BOUNDS = 3;</code>
     */
    public static final int CONTENT_SCALE_MODE_FILL_BOUNDS_VALUE = 3;


    @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 ContentScaleMode valueOf(int value) {
      return forNumber(value);
    }

    public static ContentScaleMode forNumber(int value) {
      switch (value) {
        case 0: return CONTENT_SCALE_MODE_UNDEFINED;
        case 1: return CONTENT_SCALE_MODE_FIT;
        case 2: return CONTENT_SCALE_MODE_CROP;
        case 3: return CONTENT_SCALE_MODE_FILL_BOUNDS;
        default: return null;
      }
    }

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

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

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

    private final int value;

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

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

  /**
   * <pre>
   * Styles to use for path endings
   * </pre>
   *
   * Protobuf enum {@code androidx.wear.protolayout.proto.StrokeCap}
   */
  public enum StrokeCap
      implements com.google.protobuf.Internal.EnumLite {
    /**
     * <pre>
     * StrokeCap is undefined.
     * </pre>
     *
     * <code>STROKE_CAP_UNDEFINED = 0;</code>
     */
    STROKE_CAP_UNDEFINED(0),
    /**
     * <pre>
     * Begin and end contours with a flat edge and no extension.
     * </pre>
     *
     * <code>STROKE_CAP_BUTT = 1;</code>
     */
    STROKE_CAP_BUTT(1),
    /**
     * <pre>
     * Begin and end contours with a semi-circle extension. The extension size is
     * proportional to the thickness of the path.
     * </pre>
     *
     * <code>STROKE_CAP_ROUND = 2;</code>
     */
    STROKE_CAP_ROUND(2),
    /**
     * <pre>
     * Begin and end contours with a half square extension. The extension size is
     * proportional to the thickness of the path.
     * </pre>
     *
     * <code>STROKE_CAP_SQUARE = 3;</code>
     */
    STROKE_CAP_SQUARE(3),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     * StrokeCap is undefined.
     * </pre>
     *
     * <code>STROKE_CAP_UNDEFINED = 0;</code>
     */
    public static final int STROKE_CAP_UNDEFINED_VALUE = 0;
    /**
     * <pre>
     * Begin and end contours with a flat edge and no extension.
     * </pre>
     *
     * <code>STROKE_CAP_BUTT = 1;</code>
     */
    public static final int STROKE_CAP_BUTT_VALUE = 1;
    /**
     * <pre>
     * Begin and end contours with a semi-circle extension. The extension size is
     * proportional to the thickness of the path.
     * </pre>
     *
     * <code>STROKE_CAP_ROUND = 2;</code>
     */
    public static final int STROKE_CAP_ROUND_VALUE = 2;
    /**
     * <pre>
     * Begin and end contours with a half square extension. The extension size is
     * proportional to the thickness of the path.
     * </pre>
     *
     * <code>STROKE_CAP_SQUARE = 3;</code>
     */
    public static final int STROKE_CAP_SQUARE_VALUE = 3;


    @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 StrokeCap valueOf(int value) {
      return forNumber(value);
    }

    public static StrokeCap forNumber(int value) {
      switch (value) {
        case 0: return STROKE_CAP_UNDEFINED;
        case 1: return STROKE_CAP_BUTT;
        case 2: return STROKE_CAP_ROUND;
        case 3: return STROKE_CAP_SQUARE;
        default: return null;
      }
    }

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

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

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

    private final int value;

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

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

  /**
   * <pre>
   * Direction of drawing for any curved element.
   * </pre>
   *
   * Protobuf enum {@code androidx.wear.protolayout.proto.ArcDirection}
   */
  public enum ArcDirection
      implements com.google.protobuf.Internal.EnumLite {
    /**
     * <pre>
     * Draws an element in Clockwise direction for LTR layout direction and
     * Counter Clockwise for RTL.
     * </pre>
     *
     * <code>ARC_DIRECTION_NORMAL = 0;</code>
     */
    ARC_DIRECTION_NORMAL(0),
    /**
     * <pre>
     * Draws an element in Clockwise direction, independently of layout direction.
     * </pre>
     *
     * <code>ARC_DIRECTION_CLOCKWISE = 1;</code>
     */
    ARC_DIRECTION_CLOCKWISE(1),
    /**
     * <pre>
     * Draws an element in Counter Clockwise direction, independently of layout
     * direction.
     * </pre>
     *
     * <code>ARC_DIRECTION_COUNTER_CLOCKWISE = 2;</code>
     */
    ARC_DIRECTION_COUNTER_CLOCKWISE(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     * Draws an element in Clockwise direction for LTR layout direction and
     * Counter Clockwise for RTL.
     * </pre>
     *
     * <code>ARC_DIRECTION_NORMAL = 0;</code>
     */
    public static final int ARC_DIRECTION_NORMAL_VALUE = 0;
    /**
     * <pre>
     * Draws an element in Clockwise direction, independently of layout direction.
     * </pre>
     *
     * <code>ARC_DIRECTION_CLOCKWISE = 1;</code>
     */
    public static final int ARC_DIRECTION_CLOCKWISE_VALUE = 1;
    /**
     * <pre>
     * Draws an element in Counter Clockwise direction, independently of layout
     * direction.
     * </pre>
     *
     * <code>ARC_DIRECTION_COUNTER_CLOCKWISE = 2;</code>
     */
    public static final int ARC_DIRECTION_COUNTER_CLOCKWISE_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 ArcDirection valueOf(int value) {
      return forNumber(value);
    }

    public static ArcDirection forNumber(int value) {
      switch (value) {
        case 0: return ARC_DIRECTION_NORMAL;
        case 1: return ARC_DIRECTION_CLOCKWISE;
        case 2: return ARC_DIRECTION_COUNTER_CLOCKWISE;
        default: return null;
      }
    }

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

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

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

    private final int value;

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

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

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

    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontWeight value = 1;</code>
     * @return The enum numeric value on the wire for value.
     */
    int getValueValue();
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontWeight value = 1;</code>
     * @return The value.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.FontWeight getValue();
  }
  /**
   * <pre>
   * An extensible FontWeight property.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.FontWeightProp}
   */
  public  static final class FontWeightProp extends
      com.google.protobuf.GeneratedMessageLite<
          FontWeightProp, FontWeightProp.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.FontWeightProp)
      FontWeightPropOrBuilder {
    private FontWeightProp() {
    }
    public static final int VALUE_FIELD_NUMBER = 1;
    private int value_;
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontWeight value = 1;</code>
     * @return The enum numeric value on the wire for value.
     */
    @java.lang.Override
    public int getValueValue() {
      return value_;
    }
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontWeight value = 1;</code>
     * @return The value.
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.FontWeight getValue() {
      androidx.wear.protolayout.proto.LayoutElementProto.FontWeight result = androidx.wear.protolayout.proto.LayoutElementProto.FontWeight.forNumber(value_);
      return result == null ? androidx.wear.protolayout.proto.LayoutElementProto.FontWeight.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontWeight value = 1;</code>
     * @param value The enum numeric value on the wire for value to set.
     */
    private void setValueValue(int value) {
        value_ = value;
    }
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontWeight value = 1;</code>
     * @param value The value to set.
     */
    private void setValue(androidx.wear.protolayout.proto.LayoutElementProto.FontWeight value) {
      value_ = value.getNumber();

    }
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontWeight value = 1;</code>
     */
    private void clearValue() {

      value_ = 0;
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp 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.proto.LayoutElementProto.FontWeightProp 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.proto.LayoutElementProto.FontWeightProp 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.proto.LayoutElementProto.FontWeightProp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp 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.proto.LayoutElementProto.FontWeightProp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp 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.proto.LayoutElementProto.FontWeightProp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp 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.proto.LayoutElementProto.FontWeightProp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp 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.proto.LayoutElementProto.FontWeightProp prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * An extensible FontWeight property.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.FontWeightProp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.FontWeightProp)
        androidx.wear.protolayout.proto.LayoutElementProto.FontWeightPropOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontWeight value = 1;</code>
       * @return The enum numeric value on the wire for value.
       */
      @java.lang.Override
      public int getValueValue() {
        return instance.getValueValue();
      }
      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontWeight value = 1;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValueValue(int value) {
        copyOnWrite();
        instance.setValueValue(value);
        return this;
      }
      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontWeight value = 1;</code>
       * @return The value.
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.FontWeight getValue() {
        return instance.getValue();
      }
      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontWeight value = 1;</code>
       * @param value The enum numeric value on the wire for value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(androidx.wear.protolayout.proto.LayoutElementProto.FontWeight value) {
        copyOnWrite();
        instance.setValue(value);
        return this;
      }
      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontWeight value = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        copyOnWrite();
        instance.clearValue();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.FontWeightProp)
    }
    @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.proto.LayoutElementProto.FontWeightProp();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "value_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\f";
            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.proto.LayoutElementProto.FontWeightProp> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp>(
                        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.proto.FontWeightProp)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp DEFAULT_INSTANCE;
    static {
      FontWeightProp defaultInstance = new FontWeightProp();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        FontWeightProp.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariant value = 1;</code>
     * @return The enum numeric value on the wire for value.
     */
    int getValueValue();
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariant value = 1;</code>
     * @return The value.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.FontVariant getValue();
  }
  /**
   * <pre>
   * An extensible FontVariant property.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.FontVariantProp}
   */
  public  static final class FontVariantProp extends
      com.google.protobuf.GeneratedMessageLite<
          FontVariantProp, FontVariantProp.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.FontVariantProp)
      FontVariantPropOrBuilder {
    private FontVariantProp() {
    }
    public static final int VALUE_FIELD_NUMBER = 1;
    private int value_;
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariant value = 1;</code>
     * @return The enum numeric value on the wire for value.
     */
    @java.lang.Override
    public int getValueValue() {
      return value_;
    }
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariant value = 1;</code>
     * @return The value.
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.FontVariant getValue() {
      androidx.wear.protolayout.proto.LayoutElementProto.FontVariant result = androidx.wear.protolayout.proto.LayoutElementProto.FontVariant.forNumber(value_);
      return result == null ? androidx.wear.protolayout.proto.LayoutElementProto.FontVariant.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariant value = 1;</code>
     * @param value The enum numeric value on the wire for value to set.
     */
    private void setValueValue(int value) {
        value_ = value;
    }
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariant value = 1;</code>
     * @param value The value to set.
     */
    private void setValue(androidx.wear.protolayout.proto.LayoutElementProto.FontVariant value) {
      value_ = value.getNumber();

    }
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariant value = 1;</code>
     */
    private void clearValue() {

      value_ = 0;
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp 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.proto.LayoutElementProto.FontVariantProp 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.proto.LayoutElementProto.FontVariantProp 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.proto.LayoutElementProto.FontVariantProp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp 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.proto.LayoutElementProto.FontVariantProp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp 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.proto.LayoutElementProto.FontVariantProp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp 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.proto.LayoutElementProto.FontVariantProp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp 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.proto.LayoutElementProto.FontVariantProp prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * An extensible FontVariant property.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.FontVariantProp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.FontVariantProp)
        androidx.wear.protolayout.proto.LayoutElementProto.FontVariantPropOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontVariant value = 1;</code>
       * @return The enum numeric value on the wire for value.
       */
      @java.lang.Override
      public int getValueValue() {
        return instance.getValueValue();
      }
      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontVariant value = 1;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValueValue(int value) {
        copyOnWrite();
        instance.setValueValue(value);
        return this;
      }
      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontVariant value = 1;</code>
       * @return The value.
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.FontVariant getValue() {
        return instance.getValue();
      }
      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontVariant value = 1;</code>
       * @param value The enum numeric value on the wire for value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(androidx.wear.protolayout.proto.LayoutElementProto.FontVariant value) {
        copyOnWrite();
        instance.setValue(value);
        return this;
      }
      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontVariant value = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        copyOnWrite();
        instance.clearValue();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.FontVariantProp)
    }
    @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.proto.LayoutElementProto.FontVariantProp();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "value_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\f";
            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.proto.LayoutElementProto.FontVariantProp> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp>(
                        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.proto.FontVariantProp)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp DEFAULT_INSTANCE;
    static {
      FontVariantProp defaultInstance = new FontVariantProp();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        FontVariantProp.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignment value = 1;</code>
     * @return The enum numeric value on the wire for value.
     */
    int getValueValue();
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignment value = 1;</code>
     * @return The value.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignment getValue();
  }
  /**
   * <pre>
   * An extensible SpanVerticalAlignment property.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.SpanVerticalAlignmentProp}
   */
  public  static final class SpanVerticalAlignmentProp extends
      com.google.protobuf.GeneratedMessageLite<
          SpanVerticalAlignmentProp, SpanVerticalAlignmentProp.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.SpanVerticalAlignmentProp)
      SpanVerticalAlignmentPropOrBuilder {
    private SpanVerticalAlignmentProp() {
    }
    public static final int VALUE_FIELD_NUMBER = 1;
    private int value_;
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignment value = 1;</code>
     * @return The enum numeric value on the wire for value.
     */
    @java.lang.Override
    public int getValueValue() {
      return value_;
    }
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignment value = 1;</code>
     * @return The value.
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignment getValue() {
      androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignment result = androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignment.forNumber(value_);
      return result == null ? androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignment.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignment value = 1;</code>
     * @param value The enum numeric value on the wire for value to set.
     */
    private void setValueValue(int value) {
        value_ = value;
    }
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignment value = 1;</code>
     * @param value The value to set.
     */
    private void setValue(androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignment value) {
      value_ = value.getNumber();

    }
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignment value = 1;</code>
     */
    private void clearValue() {

      value_ = 0;
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp 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.proto.LayoutElementProto.SpanVerticalAlignmentProp 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.proto.LayoutElementProto.SpanVerticalAlignmentProp 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.proto.LayoutElementProto.SpanVerticalAlignmentProp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp 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.proto.LayoutElementProto.SpanVerticalAlignmentProp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp 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.proto.LayoutElementProto.SpanVerticalAlignmentProp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp 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.proto.LayoutElementProto.SpanVerticalAlignmentProp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp 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.proto.LayoutElementProto.SpanVerticalAlignmentProp prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * An extensible SpanVerticalAlignment property.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.SpanVerticalAlignmentProp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.SpanVerticalAlignmentProp)
        androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentPropOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignment value = 1;</code>
       * @return The enum numeric value on the wire for value.
       */
      @java.lang.Override
      public int getValueValue() {
        return instance.getValueValue();
      }
      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignment value = 1;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValueValue(int value) {
        copyOnWrite();
        instance.setValueValue(value);
        return this;
      }
      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignment value = 1;</code>
       * @return The value.
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignment getValue() {
        return instance.getValue();
      }
      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignment value = 1;</code>
       * @param value The enum numeric value on the wire for value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignment value) {
        copyOnWrite();
        instance.setValue(value);
        return this;
      }
      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignment value = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        copyOnWrite();
        instance.clearValue();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.SpanVerticalAlignmentProp)
    }
    @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.proto.LayoutElementProto.SpanVerticalAlignmentProp();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "value_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\f";
            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.proto.LayoutElementProto.SpanVerticalAlignmentProp> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp>(
                        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.proto.SpanVerticalAlignmentProp)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp DEFAULT_INSTANCE;
    static {
      SpanVerticalAlignmentProp defaultInstance = new SpanVerticalAlignmentProp();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        SpanVerticalAlignmentProp.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The available sizes of the font, in scaled pixels (sp). If not specified,
     * defaults to the size of the system's "body" font.
     *
     * If more than one size is specified and this FontStyle is applied to a Text
     * element with static text, the text size will be automatically picked from
     * the provided sizes to try to perfectly fit within its parent bounds. In
     * other words, the largest size from the specified preset sizes that can fit
     * the most text within the parent bounds will be used.
     *
     * The specified sizes don't have to be sorted. The maximum number of sizes
     * used is limited to 10.
     *
     * Note that, if multiple sizes are set, the parent of the Text element this
     * corresponds to shouldn't have its width and height set to wrapped, as it
     * can lead to unexpected results.
     *
     * If this FontStyle is set to any other element besides Text, or that Text
     * element has dynamic field, only the last added size will be use.
     *
     * Any previously added values with this method or #setSize will be cleared.
     *
     * While this field is accessible from 1.0 as singular, it only accepts
     * multiple values since version 1.3 and renderers supporting version 1.3 will
     * use the multiple values to automatically scale text. Renderers who don't
     * support this version will use the first size among multiple values.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
     */
    java.util.List<androidx.wear.protolayout.proto.DimensionProto.SpProp> 
        getSizeList();
    /**
     * <pre>
     * The available sizes of the font, in scaled pixels (sp). If not specified,
     * defaults to the size of the system's "body" font.
     *
     * If more than one size is specified and this FontStyle is applied to a Text
     * element with static text, the text size will be automatically picked from
     * the provided sizes to try to perfectly fit within its parent bounds. In
     * other words, the largest size from the specified preset sizes that can fit
     * the most text within the parent bounds will be used.
     *
     * The specified sizes don't have to be sorted. The maximum number of sizes
     * used is limited to 10.
     *
     * Note that, if multiple sizes are set, the parent of the Text element this
     * corresponds to shouldn't have its width and height set to wrapped, as it
     * can lead to unexpected results.
     *
     * If this FontStyle is set to any other element besides Text, or that Text
     * element has dynamic field, only the last added size will be use.
     *
     * Any previously added values with this method or #setSize will be cleared.
     *
     * While this field is accessible from 1.0 as singular, it only accepts
     * multiple values since version 1.3 and renderers supporting version 1.3 will
     * use the multiple values to automatically scale text. Renderers who don't
     * support this version will use the first size among multiple values.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
     */
    androidx.wear.protolayout.proto.DimensionProto.SpProp getSize(int index);
    /**
     * <pre>
     * The available sizes of the font, in scaled pixels (sp). If not specified,
     * defaults to the size of the system's "body" font.
     *
     * If more than one size is specified and this FontStyle is applied to a Text
     * element with static text, the text size will be automatically picked from
     * the provided sizes to try to perfectly fit within its parent bounds. In
     * other words, the largest size from the specified preset sizes that can fit
     * the most text within the parent bounds will be used.
     *
     * The specified sizes don't have to be sorted. The maximum number of sizes
     * used is limited to 10.
     *
     * Note that, if multiple sizes are set, the parent of the Text element this
     * corresponds to shouldn't have its width and height set to wrapped, as it
     * can lead to unexpected results.
     *
     * If this FontStyle is set to any other element besides Text, or that Text
     * element has dynamic field, only the last added size will be use.
     *
     * Any previously added values with this method or #setSize will be cleared.
     *
     * While this field is accessible from 1.0 as singular, it only accepts
     * multiple values since version 1.3 and renderers supporting version 1.3 will
     * use the multiple values to automatically scale text. Renderers who don't
     * support this version will use the first size among multiple values.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
     */
    int getSizeCount();

    /**
     * <pre>
     * Whether the text should be rendered in a italic typeface. If not specified,
     * defaults to "false".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp italic = 2;</code>
     * @return Whether the italic field is set.
     */
    boolean hasItalic();
    /**
     * <pre>
     * Whether the text should be rendered in a italic typeface. If not specified,
     * defaults to "false".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp italic = 2;</code>
     * @return The italic.
     */
    androidx.wear.protolayout.proto.TypesProto.BoolProp getItalic();

    /**
     * <pre>
     * Whether the text should be rendered with an underline. If not specified,
     * defaults to "false".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp underline = 3;</code>
     * @return Whether the underline field is set.
     */
    boolean hasUnderline();
    /**
     * <pre>
     * Whether the text should be rendered with an underline. If not specified,
     * defaults to "false".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp underline = 3;</code>
     * @return The underline.
     */
    androidx.wear.protolayout.proto.TypesProto.BoolProp getUnderline();

    /**
     * <pre>
     * The text color. If not defined, defaults to white.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp color = 4;</code>
     * @return Whether the color field is set.
     */
    boolean hasColor();
    /**
     * <pre>
     * The text color. If not defined, defaults to white.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp color = 4;</code>
     * @return The color.
     */
    androidx.wear.protolayout.proto.ColorProto.ColorProp getColor();

    /**
     * <pre>
     * The weight of the font. If the provided value is not supported on a
     * platform, the nearest supported value will be used. If not defined, or
     * when set to an invalid value, defaults to "normal".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontWeightProp weight = 5;</code>
     * @return Whether the weight field is set.
     */
    boolean hasWeight();
    /**
     * <pre>
     * The weight of the font. If the provided value is not supported on a
     * platform, the nearest supported value will be used. If not defined, or
     * when set to an invalid value, defaults to "normal".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontWeightProp weight = 5;</code>
     * @return The weight.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp getWeight();

    /**
     * <pre>
     * The text letter-spacing. Positive numbers increase the space between
     * letters while negative numbers tighten the space. If not specified,
     * defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.EmProp letter_spacing = 6;</code>
     * @return Whether the letterSpacing field is set.
     */
    boolean hasLetterSpacing();
    /**
     * <pre>
     * The text letter-spacing. Positive numbers increase the space between
     * letters while negative numbers tighten the space. If not specified,
     * defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.EmProp letter_spacing = 6;</code>
     * @return The letterSpacing.
     */
    androidx.wear.protolayout.proto.DimensionProto.EmProp getLetterSpacing();

    /**
     * <pre>
     * The variant of a font. Some renderers may use different fonts for title and
     * body text, which can be selected using this field. If not specified,
     * defaults to "body".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariantProp variant = 7;</code>
     * @return Whether the variant field is set.
     */
    boolean hasVariant();
    /**
     * <pre>
     * The variant of a font. Some renderers may use different fonts for title and
     * body text, which can be selected using this field. If not specified,
     * defaults to "body".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariantProp variant = 7;</code>
     * @return The variant.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp getVariant();

    /**
     * <pre>
     * The collection of font settings to be applied.
     *
     * Supported settings depend on the font used and renderer version.
     * &lt;setter&gt;If this is used with the variable fonts on renderers
     * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
     */
    java.util.List<androidx.wear.protolayout.proto.LayoutElementProto.FontSetting> 
        getSettingsList();
    /**
     * <pre>
     * The collection of font settings to be applied.
     *
     * Supported settings depend on the font used and renderer version.
     * &lt;setter&gt;If this is used with the variable fonts on renderers
     * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
     */
    androidx.wear.protolayout.proto.LayoutElementProto.FontSetting getSettings(int index);
    /**
     * <pre>
     * The collection of font settings to be applied.
     *
     * Supported settings depend on the font used and renderer version.
     * &lt;setter&gt;If this is used with the variable fonts on renderers
     * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
     */
    int getSettingsCount();

    /**
     * <pre>
     * The prioritized collection of font family names describing which font
     * should be used for this FontStyle and its fallback values if not available.
     * For example, preferring default system variable font with default non
     * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
     * font.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated string preferred_font_families = 9;</code>
     * @return A list containing the preferredFontFamilies.
     */
    java.util.List<java.lang.String>
        getPreferredFontFamiliesList();
    /**
     * <pre>
     * The prioritized collection of font family names describing which font
     * should be used for this FontStyle and its fallback values if not available.
     * For example, preferring default system variable font with default non
     * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
     * font.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated string preferred_font_families = 9;</code>
     * @return The count of preferredFontFamilies.
     */
    int getPreferredFontFamiliesCount();
    /**
     * <pre>
     * The prioritized collection of font family names describing which font
     * should be used for this FontStyle and its fallback values if not available.
     * For example, preferring default system variable font with default non
     * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
     * font.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated string preferred_font_families = 9;</code>
     * @param index The index of the element to return.
     * @return The preferredFontFamilies at the given index.
     */
    java.lang.String getPreferredFontFamilies(int index);
    /**
     * <pre>
     * The prioritized collection of font family names describing which font
     * should be used for this FontStyle and its fallback values if not available.
     * For example, preferring default system variable font with default non
     * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
     * font.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated string preferred_font_families = 9;</code>
     * @param index The index of the element to return.
     * @return The preferredFontFamilies at the given index.
     */
    com.google.protobuf.ByteString
        getPreferredFontFamiliesBytes(int index);
  }
  /**
   * <pre>
   * The styling of a font (e.g. font size, and metrics).
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.FontStyle}
   */
  public  static final class FontStyle extends
      com.google.protobuf.GeneratedMessageLite<
          FontStyle, FontStyle.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.FontStyle)
      FontStyleOrBuilder {
    private FontStyle() {
      size_ = emptyProtobufList();
      settings_ = emptyProtobufList();
      preferredFontFamilies_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
    }
    public static final int SIZE_FIELD_NUMBER = 1;
    private com.google.protobuf.Internal.ProtobufList<androidx.wear.protolayout.proto.DimensionProto.SpProp> size_;
    /**
     * <pre>
     * The available sizes of the font, in scaled pixels (sp). If not specified,
     * defaults to the size of the system's "body" font.
     *
     * If more than one size is specified and this FontStyle is applied to a Text
     * element with static text, the text size will be automatically picked from
     * the provided sizes to try to perfectly fit within its parent bounds. In
     * other words, the largest size from the specified preset sizes that can fit
     * the most text within the parent bounds will be used.
     *
     * The specified sizes don't have to be sorted. The maximum number of sizes
     * used is limited to 10.
     *
     * Note that, if multiple sizes are set, the parent of the Text element this
     * corresponds to shouldn't have its width and height set to wrapped, as it
     * can lead to unexpected results.
     *
     * If this FontStyle is set to any other element besides Text, or that Text
     * element has dynamic field, only the last added size will be use.
     *
     * Any previously added values with this method or #setSize will be cleared.
     *
     * While this field is accessible from 1.0 as singular, it only accepts
     * multiple values since version 1.3 and renderers supporting version 1.3 will
     * use the multiple values to automatically scale text. Renderers who don't
     * support this version will use the first size among multiple values.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
     */
    @java.lang.Override
    public java.util.List<androidx.wear.protolayout.proto.DimensionProto.SpProp> getSizeList() {
      return size_;
    }
    /**
     * <pre>
     * The available sizes of the font, in scaled pixels (sp). If not specified,
     * defaults to the size of the system's "body" font.
     *
     * If more than one size is specified and this FontStyle is applied to a Text
     * element with static text, the text size will be automatically picked from
     * the provided sizes to try to perfectly fit within its parent bounds. In
     * other words, the largest size from the specified preset sizes that can fit
     * the most text within the parent bounds will be used.
     *
     * The specified sizes don't have to be sorted. The maximum number of sizes
     * used is limited to 10.
     *
     * Note that, if multiple sizes are set, the parent of the Text element this
     * corresponds to shouldn't have its width and height set to wrapped, as it
     * can lead to unexpected results.
     *
     * If this FontStyle is set to any other element besides Text, or that Text
     * element has dynamic field, only the last added size will be use.
     *
     * Any previously added values with this method or #setSize will be cleared.
     *
     * While this field is accessible from 1.0 as singular, it only accepts
     * multiple values since version 1.3 and renderers supporting version 1.3 will
     * use the multiple values to automatically scale text. Renderers who don't
     * support this version will use the first size among multiple values.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
     */
    public java.util.List<? extends androidx.wear.protolayout.proto.DimensionProto.SpPropOrBuilder> 
        getSizeOrBuilderList() {
      return size_;
    }
    /**
     * <pre>
     * The available sizes of the font, in scaled pixels (sp). If not specified,
     * defaults to the size of the system's "body" font.
     *
     * If more than one size is specified and this FontStyle is applied to a Text
     * element with static text, the text size will be automatically picked from
     * the provided sizes to try to perfectly fit within its parent bounds. In
     * other words, the largest size from the specified preset sizes that can fit
     * the most text within the parent bounds will be used.
     *
     * The specified sizes don't have to be sorted. The maximum number of sizes
     * used is limited to 10.
     *
     * Note that, if multiple sizes are set, the parent of the Text element this
     * corresponds to shouldn't have its width and height set to wrapped, as it
     * can lead to unexpected results.
     *
     * If this FontStyle is set to any other element besides Text, or that Text
     * element has dynamic field, only the last added size will be use.
     *
     * Any previously added values with this method or #setSize will be cleared.
     *
     * While this field is accessible from 1.0 as singular, it only accepts
     * multiple values since version 1.3 and renderers supporting version 1.3 will
     * use the multiple values to automatically scale text. Renderers who don't
     * support this version will use the first size among multiple values.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
     */
    @java.lang.Override
    public int getSizeCount() {
      return size_.size();
    }
    /**
     * <pre>
     * The available sizes of the font, in scaled pixels (sp). If not specified,
     * defaults to the size of the system's "body" font.
     *
     * If more than one size is specified and this FontStyle is applied to a Text
     * element with static text, the text size will be automatically picked from
     * the provided sizes to try to perfectly fit within its parent bounds. In
     * other words, the largest size from the specified preset sizes that can fit
     * the most text within the parent bounds will be used.
     *
     * The specified sizes don't have to be sorted. The maximum number of sizes
     * used is limited to 10.
     *
     * Note that, if multiple sizes are set, the parent of the Text element this
     * corresponds to shouldn't have its width and height set to wrapped, as it
     * can lead to unexpected results.
     *
     * If this FontStyle is set to any other element besides Text, or that Text
     * element has dynamic field, only the last added size will be use.
     *
     * Any previously added values with this method or #setSize will be cleared.
     *
     * While this field is accessible from 1.0 as singular, it only accepts
     * multiple values since version 1.3 and renderers supporting version 1.3 will
     * use the multiple values to automatically scale text. Renderers who don't
     * support this version will use the first size among multiple values.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.SpProp getSize(int index) {
      return size_.get(index);
    }
    /**
     * <pre>
     * The available sizes of the font, in scaled pixels (sp). If not specified,
     * defaults to the size of the system's "body" font.
     *
     * If more than one size is specified and this FontStyle is applied to a Text
     * element with static text, the text size will be automatically picked from
     * the provided sizes to try to perfectly fit within its parent bounds. In
     * other words, the largest size from the specified preset sizes that can fit
     * the most text within the parent bounds will be used.
     *
     * The specified sizes don't have to be sorted. The maximum number of sizes
     * used is limited to 10.
     *
     * Note that, if multiple sizes are set, the parent of the Text element this
     * corresponds to shouldn't have its width and height set to wrapped, as it
     * can lead to unexpected results.
     *
     * If this FontStyle is set to any other element besides Text, or that Text
     * element has dynamic field, only the last added size will be use.
     *
     * Any previously added values with this method or #setSize will be cleared.
     *
     * While this field is accessible from 1.0 as singular, it only accepts
     * multiple values since version 1.3 and renderers supporting version 1.3 will
     * use the multiple values to automatically scale text. Renderers who don't
     * support this version will use the first size among multiple values.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
     */
    public androidx.wear.protolayout.proto.DimensionProto.SpPropOrBuilder getSizeOrBuilder(
        int index) {
      return size_.get(index);
    }
    private void ensureSizeIsMutable() {
      com.google.protobuf.Internal.ProtobufList<androidx.wear.protolayout.proto.DimensionProto.SpProp> tmp = size_;
      if (!tmp.isModifiable()) {
        size_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }

    /**
     * <pre>
     * The available sizes of the font, in scaled pixels (sp). If not specified,
     * defaults to the size of the system's "body" font.
     *
     * If more than one size is specified and this FontStyle is applied to a Text
     * element with static text, the text size will be automatically picked from
     * the provided sizes to try to perfectly fit within its parent bounds. In
     * other words, the largest size from the specified preset sizes that can fit
     * the most text within the parent bounds will be used.
     *
     * The specified sizes don't have to be sorted. The maximum number of sizes
     * used is limited to 10.
     *
     * Note that, if multiple sizes are set, the parent of the Text element this
     * corresponds to shouldn't have its width and height set to wrapped, as it
     * can lead to unexpected results.
     *
     * If this FontStyle is set to any other element besides Text, or that Text
     * element has dynamic field, only the last added size will be use.
     *
     * Any previously added values with this method or #setSize will be cleared.
     *
     * While this field is accessible from 1.0 as singular, it only accepts
     * multiple values since version 1.3 and renderers supporting version 1.3 will
     * use the multiple values to automatically scale text. Renderers who don't
     * support this version will use the first size among multiple values.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
     */
    private void setSize(
        int index, androidx.wear.protolayout.proto.DimensionProto.SpProp value) {
      value.getClass();
  ensureSizeIsMutable();
      size_.set(index, value);
    }
    /**
     * <pre>
     * The available sizes of the font, in scaled pixels (sp). If not specified,
     * defaults to the size of the system's "body" font.
     *
     * If more than one size is specified and this FontStyle is applied to a Text
     * element with static text, the text size will be automatically picked from
     * the provided sizes to try to perfectly fit within its parent bounds. In
     * other words, the largest size from the specified preset sizes that can fit
     * the most text within the parent bounds will be used.
     *
     * The specified sizes don't have to be sorted. The maximum number of sizes
     * used is limited to 10.
     *
     * Note that, if multiple sizes are set, the parent of the Text element this
     * corresponds to shouldn't have its width and height set to wrapped, as it
     * can lead to unexpected results.
     *
     * If this FontStyle is set to any other element besides Text, or that Text
     * element has dynamic field, only the last added size will be use.
     *
     * Any previously added values with this method or #setSize will be cleared.
     *
     * While this field is accessible from 1.0 as singular, it only accepts
     * multiple values since version 1.3 and renderers supporting version 1.3 will
     * use the multiple values to automatically scale text. Renderers who don't
     * support this version will use the first size among multiple values.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
     */
    private void addSize(androidx.wear.protolayout.proto.DimensionProto.SpProp value) {
      value.getClass();
  ensureSizeIsMutable();
      size_.add(value);
    }
    /**
     * <pre>
     * The available sizes of the font, in scaled pixels (sp). If not specified,
     * defaults to the size of the system's "body" font.
     *
     * If more than one size is specified and this FontStyle is applied to a Text
     * element with static text, the text size will be automatically picked from
     * the provided sizes to try to perfectly fit within its parent bounds. In
     * other words, the largest size from the specified preset sizes that can fit
     * the most text within the parent bounds will be used.
     *
     * The specified sizes don't have to be sorted. The maximum number of sizes
     * used is limited to 10.
     *
     * Note that, if multiple sizes are set, the parent of the Text element this
     * corresponds to shouldn't have its width and height set to wrapped, as it
     * can lead to unexpected results.
     *
     * If this FontStyle is set to any other element besides Text, or that Text
     * element has dynamic field, only the last added size will be use.
     *
     * Any previously added values with this method or #setSize will be cleared.
     *
     * While this field is accessible from 1.0 as singular, it only accepts
     * multiple values since version 1.3 and renderers supporting version 1.3 will
     * use the multiple values to automatically scale text. Renderers who don't
     * support this version will use the first size among multiple values.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
     */
    private void addSize(
        int index, androidx.wear.protolayout.proto.DimensionProto.SpProp value) {
      value.getClass();
  ensureSizeIsMutable();
      size_.add(index, value);
    }
    /**
     * <pre>
     * The available sizes of the font, in scaled pixels (sp). If not specified,
     * defaults to the size of the system's "body" font.
     *
     * If more than one size is specified and this FontStyle is applied to a Text
     * element with static text, the text size will be automatically picked from
     * the provided sizes to try to perfectly fit within its parent bounds. In
     * other words, the largest size from the specified preset sizes that can fit
     * the most text within the parent bounds will be used.
     *
     * The specified sizes don't have to be sorted. The maximum number of sizes
     * used is limited to 10.
     *
     * Note that, if multiple sizes are set, the parent of the Text element this
     * corresponds to shouldn't have its width and height set to wrapped, as it
     * can lead to unexpected results.
     *
     * If this FontStyle is set to any other element besides Text, or that Text
     * element has dynamic field, only the last added size will be use.
     *
     * Any previously added values with this method or #setSize will be cleared.
     *
     * While this field is accessible from 1.0 as singular, it only accepts
     * multiple values since version 1.3 and renderers supporting version 1.3 will
     * use the multiple values to automatically scale text. Renderers who don't
     * support this version will use the first size among multiple values.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
     */
    private void addAllSize(
        java.lang.Iterable<? extends androidx.wear.protolayout.proto.DimensionProto.SpProp> values) {
      ensureSizeIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, size_);
    }
    /**
     * <pre>
     * The available sizes of the font, in scaled pixels (sp). If not specified,
     * defaults to the size of the system's "body" font.
     *
     * If more than one size is specified and this FontStyle is applied to a Text
     * element with static text, the text size will be automatically picked from
     * the provided sizes to try to perfectly fit within its parent bounds. In
     * other words, the largest size from the specified preset sizes that can fit
     * the most text within the parent bounds will be used.
     *
     * The specified sizes don't have to be sorted. The maximum number of sizes
     * used is limited to 10.
     *
     * Note that, if multiple sizes are set, the parent of the Text element this
     * corresponds to shouldn't have its width and height set to wrapped, as it
     * can lead to unexpected results.
     *
     * If this FontStyle is set to any other element besides Text, or that Text
     * element has dynamic field, only the last added size will be use.
     *
     * Any previously added values with this method or #setSize will be cleared.
     *
     * While this field is accessible from 1.0 as singular, it only accepts
     * multiple values since version 1.3 and renderers supporting version 1.3 will
     * use the multiple values to automatically scale text. Renderers who don't
     * support this version will use the first size among multiple values.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
     */
    private void clearSize() {
      size_ = emptyProtobufList();
    }
    /**
     * <pre>
     * The available sizes of the font, in scaled pixels (sp). If not specified,
     * defaults to the size of the system's "body" font.
     *
     * If more than one size is specified and this FontStyle is applied to a Text
     * element with static text, the text size will be automatically picked from
     * the provided sizes to try to perfectly fit within its parent bounds. In
     * other words, the largest size from the specified preset sizes that can fit
     * the most text within the parent bounds will be used.
     *
     * The specified sizes don't have to be sorted. The maximum number of sizes
     * used is limited to 10.
     *
     * Note that, if multiple sizes are set, the parent of the Text element this
     * corresponds to shouldn't have its width and height set to wrapped, as it
     * can lead to unexpected results.
     *
     * If this FontStyle is set to any other element besides Text, or that Text
     * element has dynamic field, only the last added size will be use.
     *
     * Any previously added values with this method or #setSize will be cleared.
     *
     * While this field is accessible from 1.0 as singular, it only accepts
     * multiple values since version 1.3 and renderers supporting version 1.3 will
     * use the multiple values to automatically scale text. Renderers who don't
     * support this version will use the first size among multiple values.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
     */
    private void removeSize(int index) {
      ensureSizeIsMutable();
      size_.remove(index);
    }

    public static final int ITALIC_FIELD_NUMBER = 2;
    private androidx.wear.protolayout.proto.TypesProto.BoolProp italic_;
    /**
     * <pre>
     * Whether the text should be rendered in a italic typeface. If not specified,
     * defaults to "false".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp italic = 2;</code>
     */
    @java.lang.Override
    public boolean hasItalic() {
      return italic_ != null;
    }
    /**
     * <pre>
     * Whether the text should be rendered in a italic typeface. If not specified,
     * defaults to "false".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp italic = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.TypesProto.BoolProp getItalic() {
      return italic_ == null ? androidx.wear.protolayout.proto.TypesProto.BoolProp.getDefaultInstance() : italic_;
    }
    /**
     * <pre>
     * Whether the text should be rendered in a italic typeface. If not specified,
     * defaults to "false".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp italic = 2;</code>
     */
    private void setItalic(androidx.wear.protolayout.proto.TypesProto.BoolProp value) {
      value.getClass();
  italic_ = value;

      }
    /**
     * <pre>
     * Whether the text should be rendered in a italic typeface. If not specified,
     * defaults to "false".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp italic = 2;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeItalic(androidx.wear.protolayout.proto.TypesProto.BoolProp value) {
      value.getClass();
  if (italic_ != null &&
          italic_ != androidx.wear.protolayout.proto.TypesProto.BoolProp.getDefaultInstance()) {
        italic_ =
          androidx.wear.protolayout.proto.TypesProto.BoolProp.newBuilder(italic_).mergeFrom(value).buildPartial();
      } else {
        italic_ = value;
      }

    }
    /**
     * <pre>
     * Whether the text should be rendered in a italic typeface. If not specified,
     * defaults to "false".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp italic = 2;</code>
     */
    private void clearItalic() {  italic_ = null;

    }

    public static final int UNDERLINE_FIELD_NUMBER = 3;
    private androidx.wear.protolayout.proto.TypesProto.BoolProp underline_;
    /**
     * <pre>
     * Whether the text should be rendered with an underline. If not specified,
     * defaults to "false".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp underline = 3;</code>
     */
    @java.lang.Override
    public boolean hasUnderline() {
      return underline_ != null;
    }
    /**
     * <pre>
     * Whether the text should be rendered with an underline. If not specified,
     * defaults to "false".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp underline = 3;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.TypesProto.BoolProp getUnderline() {
      return underline_ == null ? androidx.wear.protolayout.proto.TypesProto.BoolProp.getDefaultInstance() : underline_;
    }
    /**
     * <pre>
     * Whether the text should be rendered with an underline. If not specified,
     * defaults to "false".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp underline = 3;</code>
     */
    private void setUnderline(androidx.wear.protolayout.proto.TypesProto.BoolProp value) {
      value.getClass();
  underline_ = value;

      }
    /**
     * <pre>
     * Whether the text should be rendered with an underline. If not specified,
     * defaults to "false".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp underline = 3;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeUnderline(androidx.wear.protolayout.proto.TypesProto.BoolProp value) {
      value.getClass();
  if (underline_ != null &&
          underline_ != androidx.wear.protolayout.proto.TypesProto.BoolProp.getDefaultInstance()) {
        underline_ =
          androidx.wear.protolayout.proto.TypesProto.BoolProp.newBuilder(underline_).mergeFrom(value).buildPartial();
      } else {
        underline_ = value;
      }

    }
    /**
     * <pre>
     * Whether the text should be rendered with an underline. If not specified,
     * defaults to "false".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp underline = 3;</code>
     */
    private void clearUnderline() {  underline_ = null;

    }

    public static final int COLOR_FIELD_NUMBER = 4;
    private androidx.wear.protolayout.proto.ColorProto.ColorProp color_;
    /**
     * <pre>
     * The text color. If not defined, defaults to white.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp color = 4;</code>
     */
    @java.lang.Override
    public boolean hasColor() {
      return color_ != null;
    }
    /**
     * <pre>
     * The text color. If not defined, defaults to white.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp color = 4;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.ColorProto.ColorProp getColor() {
      return color_ == null ? androidx.wear.protolayout.proto.ColorProto.ColorProp.getDefaultInstance() : color_;
    }
    /**
     * <pre>
     * The text color. If not defined, defaults to white.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp color = 4;</code>
     */
    private void setColor(androidx.wear.protolayout.proto.ColorProto.ColorProp value) {
      value.getClass();
  color_ = value;

      }
    /**
     * <pre>
     * The text color. If not defined, defaults to white.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp color = 4;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeColor(androidx.wear.protolayout.proto.ColorProto.ColorProp value) {
      value.getClass();
  if (color_ != null &&
          color_ != androidx.wear.protolayout.proto.ColorProto.ColorProp.getDefaultInstance()) {
        color_ =
          androidx.wear.protolayout.proto.ColorProto.ColorProp.newBuilder(color_).mergeFrom(value).buildPartial();
      } else {
        color_ = value;
      }

    }
    /**
     * <pre>
     * The text color. If not defined, defaults to white.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp color = 4;</code>
     */
    private void clearColor() {  color_ = null;

    }

    public static final int WEIGHT_FIELD_NUMBER = 5;
    private androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp weight_;
    /**
     * <pre>
     * The weight of the font. If the provided value is not supported on a
     * platform, the nearest supported value will be used. If not defined, or
     * when set to an invalid value, defaults to "normal".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontWeightProp weight = 5;</code>
     */
    @java.lang.Override
    public boolean hasWeight() {
      return weight_ != null;
    }
    /**
     * <pre>
     * The weight of the font. If the provided value is not supported on a
     * platform, the nearest supported value will be used. If not defined, or
     * when set to an invalid value, defaults to "normal".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontWeightProp weight = 5;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp getWeight() {
      return weight_ == null ? androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp.getDefaultInstance() : weight_;
    }
    /**
     * <pre>
     * The weight of the font. If the provided value is not supported on a
     * platform, the nearest supported value will be used. If not defined, or
     * when set to an invalid value, defaults to "normal".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontWeightProp weight = 5;</code>
     */
    private void setWeight(androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp value) {
      value.getClass();
  weight_ = value;

      }
    /**
     * <pre>
     * The weight of the font. If the provided value is not supported on a
     * platform, the nearest supported value will be used. If not defined, or
     * when set to an invalid value, defaults to "normal".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontWeightProp weight = 5;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeWeight(androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp value) {
      value.getClass();
  if (weight_ != null &&
          weight_ != androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp.getDefaultInstance()) {
        weight_ =
          androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp.newBuilder(weight_).mergeFrom(value).buildPartial();
      } else {
        weight_ = value;
      }

    }
    /**
     * <pre>
     * The weight of the font. If the provided value is not supported on a
     * platform, the nearest supported value will be used. If not defined, or
     * when set to an invalid value, defaults to "normal".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontWeightProp weight = 5;</code>
     */
    private void clearWeight() {  weight_ = null;

    }

    public static final int LETTER_SPACING_FIELD_NUMBER = 6;
    private androidx.wear.protolayout.proto.DimensionProto.EmProp letterSpacing_;
    /**
     * <pre>
     * The text letter-spacing. Positive numbers increase the space between
     * letters while negative numbers tighten the space. If not specified,
     * defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.EmProp letter_spacing = 6;</code>
     */
    @java.lang.Override
    public boolean hasLetterSpacing() {
      return letterSpacing_ != null;
    }
    /**
     * <pre>
     * The text letter-spacing. Positive numbers increase the space between
     * letters while negative numbers tighten the space. If not specified,
     * defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.EmProp letter_spacing = 6;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.EmProp getLetterSpacing() {
      return letterSpacing_ == null ? androidx.wear.protolayout.proto.DimensionProto.EmProp.getDefaultInstance() : letterSpacing_;
    }
    /**
     * <pre>
     * The text letter-spacing. Positive numbers increase the space between
     * letters while negative numbers tighten the space. If not specified,
     * defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.EmProp letter_spacing = 6;</code>
     */
    private void setLetterSpacing(androidx.wear.protolayout.proto.DimensionProto.EmProp value) {
      value.getClass();
  letterSpacing_ = value;

      }
    /**
     * <pre>
     * The text letter-spacing. Positive numbers increase the space between
     * letters while negative numbers tighten the space. If not specified,
     * defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.EmProp letter_spacing = 6;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeLetterSpacing(androidx.wear.protolayout.proto.DimensionProto.EmProp value) {
      value.getClass();
  if (letterSpacing_ != null &&
          letterSpacing_ != androidx.wear.protolayout.proto.DimensionProto.EmProp.getDefaultInstance()) {
        letterSpacing_ =
          androidx.wear.protolayout.proto.DimensionProto.EmProp.newBuilder(letterSpacing_).mergeFrom(value).buildPartial();
      } else {
        letterSpacing_ = value;
      }

    }
    /**
     * <pre>
     * The text letter-spacing. Positive numbers increase the space between
     * letters while negative numbers tighten the space. If not specified,
     * defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.EmProp letter_spacing = 6;</code>
     */
    private void clearLetterSpacing() {  letterSpacing_ = null;

    }

    public static final int VARIANT_FIELD_NUMBER = 7;
    private androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp variant_;
    /**
     * <pre>
     * The variant of a font. Some renderers may use different fonts for title and
     * body text, which can be selected using this field. If not specified,
     * defaults to "body".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariantProp variant = 7;</code>
     */
    @java.lang.Override
    public boolean hasVariant() {
      return variant_ != null;
    }
    /**
     * <pre>
     * The variant of a font. Some renderers may use different fonts for title and
     * body text, which can be selected using this field. If not specified,
     * defaults to "body".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariantProp variant = 7;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp getVariant() {
      return variant_ == null ? androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp.getDefaultInstance() : variant_;
    }
    /**
     * <pre>
     * The variant of a font. Some renderers may use different fonts for title and
     * body text, which can be selected using this field. If not specified,
     * defaults to "body".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariantProp variant = 7;</code>
     */
    private void setVariant(androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp value) {
      value.getClass();
  variant_ = value;

      }
    /**
     * <pre>
     * The variant of a font. Some renderers may use different fonts for title and
     * body text, which can be selected using this field. If not specified,
     * defaults to "body".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariantProp variant = 7;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeVariant(androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp value) {
      value.getClass();
  if (variant_ != null &&
          variant_ != androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp.getDefaultInstance()) {
        variant_ =
          androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp.newBuilder(variant_).mergeFrom(value).buildPartial();
      } else {
        variant_ = value;
      }

    }
    /**
     * <pre>
     * The variant of a font. Some renderers may use different fonts for title and
     * body text, which can be selected using this field. If not specified,
     * defaults to "body".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariantProp variant = 7;</code>
     */
    private void clearVariant() {  variant_ = null;

    }

    public static final int SETTINGS_FIELD_NUMBER = 8;
    private com.google.protobuf.Internal.ProtobufList<androidx.wear.protolayout.proto.LayoutElementProto.FontSetting> settings_;
    /**
     * <pre>
     * The collection of font settings to be applied.
     *
     * Supported settings depend on the font used and renderer version.
     * &lt;setter&gt;If this is used with the variable fonts on renderers
     * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
     */
    @java.lang.Override
    public java.util.List<androidx.wear.protolayout.proto.LayoutElementProto.FontSetting> getSettingsList() {
      return settings_;
    }
    /**
     * <pre>
     * The collection of font settings to be applied.
     *
     * Supported settings depend on the font used and renderer version.
     * &lt;setter&gt;If this is used with the variable fonts on renderers
     * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
     */
    public java.util.List<? extends androidx.wear.protolayout.proto.LayoutElementProto.FontSettingOrBuilder> 
        getSettingsOrBuilderList() {
      return settings_;
    }
    /**
     * <pre>
     * The collection of font settings to be applied.
     *
     * Supported settings depend on the font used and renderer version.
     * &lt;setter&gt;If this is used with the variable fonts on renderers
     * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
     */
    @java.lang.Override
    public int getSettingsCount() {
      return settings_.size();
    }
    /**
     * <pre>
     * The collection of font settings to be applied.
     *
     * Supported settings depend on the font used and renderer version.
     * &lt;setter&gt;If this is used with the variable fonts on renderers
     * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.FontSetting getSettings(int index) {
      return settings_.get(index);
    }
    /**
     * <pre>
     * The collection of font settings to be applied.
     *
     * Supported settings depend on the font used and renderer version.
     * &lt;setter&gt;If this is used with the variable fonts on renderers
     * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
     */
    public androidx.wear.protolayout.proto.LayoutElementProto.FontSettingOrBuilder getSettingsOrBuilder(
        int index) {
      return settings_.get(index);
    }
    private void ensureSettingsIsMutable() {
      com.google.protobuf.Internal.ProtobufList<androidx.wear.protolayout.proto.LayoutElementProto.FontSetting> tmp = settings_;
      if (!tmp.isModifiable()) {
        settings_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }

    /**
     * <pre>
     * The collection of font settings to be applied.
     *
     * Supported settings depend on the font used and renderer version.
     * &lt;setter&gt;If this is used with the variable fonts on renderers
     * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
     */
    private void setSettings(
        int index, androidx.wear.protolayout.proto.LayoutElementProto.FontSetting value) {
      value.getClass();
  ensureSettingsIsMutable();
      settings_.set(index, value);
    }
    /**
     * <pre>
     * The collection of font settings to be applied.
     *
     * Supported settings depend on the font used and renderer version.
     * &lt;setter&gt;If this is used with the variable fonts on renderers
     * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
     */
    private void addSettings(androidx.wear.protolayout.proto.LayoutElementProto.FontSetting value) {
      value.getClass();
  ensureSettingsIsMutable();
      settings_.add(value);
    }
    /**
     * <pre>
     * The collection of font settings to be applied.
     *
     * Supported settings depend on the font used and renderer version.
     * &lt;setter&gt;If this is used with the variable fonts on renderers
     * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
     */
    private void addSettings(
        int index, androidx.wear.protolayout.proto.LayoutElementProto.FontSetting value) {
      value.getClass();
  ensureSettingsIsMutable();
      settings_.add(index, value);
    }
    /**
     * <pre>
     * The collection of font settings to be applied.
     *
     * Supported settings depend on the font used and renderer version.
     * &lt;setter&gt;If this is used with the variable fonts on renderers
     * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
     */
    private void addAllSettings(
        java.lang.Iterable<? extends androidx.wear.protolayout.proto.LayoutElementProto.FontSetting> values) {
      ensureSettingsIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, settings_);
    }
    /**
     * <pre>
     * The collection of font settings to be applied.
     *
     * Supported settings depend on the font used and renderer version.
     * &lt;setter&gt;If this is used with the variable fonts on renderers
     * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
     */
    private void clearSettings() {
      settings_ = emptyProtobufList();
    }
    /**
     * <pre>
     * The collection of font settings to be applied.
     *
     * Supported settings depend on the font used and renderer version.
     * &lt;setter&gt;If this is used with the variable fonts on renderers
     * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
     */
    private void removeSettings(int index) {
      ensureSettingsIsMutable();
      settings_.remove(index);
    }

    public static final int PREFERRED_FONT_FAMILIES_FIELD_NUMBER = 9;
    private com.google.protobuf.Internal.ProtobufList<java.lang.String> preferredFontFamilies_;
    /**
     * <pre>
     * The prioritized collection of font family names describing which font
     * should be used for this FontStyle and its fallback values if not available.
     * For example, preferring default system variable font with default non
     * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
     * font.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated string preferred_font_families = 9;</code>
     * @return A list containing the preferredFontFamilies.
     */
    @java.lang.Override
    public java.util.List<java.lang.String> getPreferredFontFamiliesList() {
      return preferredFontFamilies_;
    }
    /**
     * <pre>
     * The prioritized collection of font family names describing which font
     * should be used for this FontStyle and its fallback values if not available.
     * For example, preferring default system variable font with default non
     * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
     * font.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated string preferred_font_families = 9;</code>
     * @return The count of preferredFontFamilies.
     */
    @java.lang.Override
    public int getPreferredFontFamiliesCount() {
      return preferredFontFamilies_.size();
    }
    /**
     * <pre>
     * The prioritized collection of font family names describing which font
     * should be used for this FontStyle and its fallback values if not available.
     * For example, preferring default system variable font with default non
     * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
     * font.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated string preferred_font_families = 9;</code>
     * @param index The index of the element to return.
     * @return The preferredFontFamilies at the given index.
     */
    @java.lang.Override
    public java.lang.String getPreferredFontFamilies(int index) {
      return preferredFontFamilies_.get(index);
    }
    /**
     * <pre>
     * The prioritized collection of font family names describing which font
     * should be used for this FontStyle and its fallback values if not available.
     * For example, preferring default system variable font with default non
     * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
     * font.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated string preferred_font_families = 9;</code>
     * @param index The index of the value to return.
     * @return The bytes of the preferredFontFamilies at the given index.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPreferredFontFamiliesBytes(int index) {
      return com.google.protobuf.ByteString.copyFromUtf8(
          preferredFontFamilies_.get(index));
    }
    private void ensurePreferredFontFamiliesIsMutable() {
      com.google.protobuf.Internal.ProtobufList<java.lang.String> tmp =
          preferredFontFamilies_;  if (!tmp.isModifiable()) {
        preferredFontFamilies_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }
    /**
     * <pre>
     * The prioritized collection of font family names describing which font
     * should be used for this FontStyle and its fallback values if not available.
     * For example, preferring default system variable font with default non
     * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
     * font.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated string preferred_font_families = 9;</code>
     * @param index The index to set the value at.
     * @param value The preferredFontFamilies to set.
     */
    private void setPreferredFontFamilies(
        int index, java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  ensurePreferredFontFamiliesIsMutable();
      preferredFontFamilies_.set(index, value);
    }
    /**
     * <pre>
     * The prioritized collection of font family names describing which font
     * should be used for this FontStyle and its fallback values if not available.
     * For example, preferring default system variable font with default non
     * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
     * font.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated string preferred_font_families = 9;</code>
     * @param value The preferredFontFamilies to add.
     */
    private void addPreferredFontFamilies(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  ensurePreferredFontFamiliesIsMutable();
      preferredFontFamilies_.add(value);
    }
    /**
     * <pre>
     * The prioritized collection of font family names describing which font
     * should be used for this FontStyle and its fallback values if not available.
     * For example, preferring default system variable font with default non
     * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
     * font.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated string preferred_font_families = 9;</code>
     * @param values The preferredFontFamilies to add.
     */
    private void addAllPreferredFontFamilies(
        java.lang.Iterable<java.lang.String> values) {
      ensurePreferredFontFamiliesIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, preferredFontFamilies_);
    }
    /**
     * <pre>
     * The prioritized collection of font family names describing which font
     * should be used for this FontStyle and its fallback values if not available.
     * For example, preferring default system variable font with default non
     * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
     * font.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated string preferred_font_families = 9;</code>
     */
    private void clearPreferredFontFamilies() {
      preferredFontFamilies_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
    }
    /**
     * <pre>
     * The prioritized collection of font family names describing which font
     * should be used for this FontStyle and its fallback values if not available.
     * For example, preferring default system variable font with default non
     * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
     * font.&lt;/setter&gt;
     * </pre>
     *
     * <code>repeated string preferred_font_families = 9;</code>
     * @param value The bytes of the preferredFontFamilies to add.
     */
    private void addPreferredFontFamiliesBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      ensurePreferredFontFamiliesIsMutable();
      preferredFontFamilies_.add(value.toStringUtf8());
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.FontStyle parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontStyle 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.proto.LayoutElementProto.FontStyle 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.proto.LayoutElementProto.FontStyle 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.proto.LayoutElementProto.FontStyle parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontStyle 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.proto.LayoutElementProto.FontStyle parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontStyle 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.proto.LayoutElementProto.FontStyle parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontStyle 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.proto.LayoutElementProto.FontStyle parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontStyle 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.proto.LayoutElementProto.FontStyle prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * The styling of a font (e.g. font size, and metrics).
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.FontStyle}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.FontStyle, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.FontStyle)
        androidx.wear.protolayout.proto.LayoutElementProto.FontStyleOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.FontStyle.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The available sizes of the font, in scaled pixels (sp). If not specified,
       * defaults to the size of the system's "body" font.
       *
       * If more than one size is specified and this FontStyle is applied to a Text
       * element with static text, the text size will be automatically picked from
       * the provided sizes to try to perfectly fit within its parent bounds. In
       * other words, the largest size from the specified preset sizes that can fit
       * the most text within the parent bounds will be used.
       *
       * The specified sizes don't have to be sorted. The maximum number of sizes
       * used is limited to 10.
       *
       * Note that, if multiple sizes are set, the parent of the Text element this
       * corresponds to shouldn't have its width and height set to wrapped, as it
       * can lead to unexpected results.
       *
       * If this FontStyle is set to any other element besides Text, or that Text
       * element has dynamic field, only the last added size will be use.
       *
       * Any previously added values with this method or #setSize will be cleared.
       *
       * While this field is accessible from 1.0 as singular, it only accepts
       * multiple values since version 1.3 and renderers supporting version 1.3 will
       * use the multiple values to automatically scale text. Renderers who don't
       * support this version will use the first size among multiple values.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
       */
      @java.lang.Override
      public java.util.List<androidx.wear.protolayout.proto.DimensionProto.SpProp> getSizeList() {
        return java.util.Collections.unmodifiableList(
            instance.getSizeList());
      }
      /**
       * <pre>
       * The available sizes of the font, in scaled pixels (sp). If not specified,
       * defaults to the size of the system's "body" font.
       *
       * If more than one size is specified and this FontStyle is applied to a Text
       * element with static text, the text size will be automatically picked from
       * the provided sizes to try to perfectly fit within its parent bounds. In
       * other words, the largest size from the specified preset sizes that can fit
       * the most text within the parent bounds will be used.
       *
       * The specified sizes don't have to be sorted. The maximum number of sizes
       * used is limited to 10.
       *
       * Note that, if multiple sizes are set, the parent of the Text element this
       * corresponds to shouldn't have its width and height set to wrapped, as it
       * can lead to unexpected results.
       *
       * If this FontStyle is set to any other element besides Text, or that Text
       * element has dynamic field, only the last added size will be use.
       *
       * Any previously added values with this method or #setSize will be cleared.
       *
       * While this field is accessible from 1.0 as singular, it only accepts
       * multiple values since version 1.3 and renderers supporting version 1.3 will
       * use the multiple values to automatically scale text. Renderers who don't
       * support this version will use the first size among multiple values.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
       */
      @java.lang.Override
      public int getSizeCount() {
        return instance.getSizeCount();
      }/**
       * <pre>
       * The available sizes of the font, in scaled pixels (sp). If not specified,
       * defaults to the size of the system's "body" font.
       *
       * If more than one size is specified and this FontStyle is applied to a Text
       * element with static text, the text size will be automatically picked from
       * the provided sizes to try to perfectly fit within its parent bounds. In
       * other words, the largest size from the specified preset sizes that can fit
       * the most text within the parent bounds will be used.
       *
       * The specified sizes don't have to be sorted. The maximum number of sizes
       * used is limited to 10.
       *
       * Note that, if multiple sizes are set, the parent of the Text element this
       * corresponds to shouldn't have its width and height set to wrapped, as it
       * can lead to unexpected results.
       *
       * If this FontStyle is set to any other element besides Text, or that Text
       * element has dynamic field, only the last added size will be use.
       *
       * Any previously added values with this method or #setSize will be cleared.
       *
       * While this field is accessible from 1.0 as singular, it only accepts
       * multiple values since version 1.3 and renderers supporting version 1.3 will
       * use the multiple values to automatically scale text. Renderers who don't
       * support this version will use the first size among multiple values.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.SpProp getSize(int index) {
        return instance.getSize(index);
      }
      /**
       * <pre>
       * The available sizes of the font, in scaled pixels (sp). If not specified,
       * defaults to the size of the system's "body" font.
       *
       * If more than one size is specified and this FontStyle is applied to a Text
       * element with static text, the text size will be automatically picked from
       * the provided sizes to try to perfectly fit within its parent bounds. In
       * other words, the largest size from the specified preset sizes that can fit
       * the most text within the parent bounds will be used.
       *
       * The specified sizes don't have to be sorted. The maximum number of sizes
       * used is limited to 10.
       *
       * Note that, if multiple sizes are set, the parent of the Text element this
       * corresponds to shouldn't have its width and height set to wrapped, as it
       * can lead to unexpected results.
       *
       * If this FontStyle is set to any other element besides Text, or that Text
       * element has dynamic field, only the last added size will be use.
       *
       * Any previously added values with this method or #setSize will be cleared.
       *
       * While this field is accessible from 1.0 as singular, it only accepts
       * multiple values since version 1.3 and renderers supporting version 1.3 will
       * use the multiple values to automatically scale text. Renderers who don't
       * support this version will use the first size among multiple values.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
       */
      public Builder setSize(
          int index, androidx.wear.protolayout.proto.DimensionProto.SpProp value) {
        copyOnWrite();
        instance.setSize(index, value);
        return this;
      }
      /**
       * <pre>
       * The available sizes of the font, in scaled pixels (sp). If not specified,
       * defaults to the size of the system's "body" font.
       *
       * If more than one size is specified and this FontStyle is applied to a Text
       * element with static text, the text size will be automatically picked from
       * the provided sizes to try to perfectly fit within its parent bounds. In
       * other words, the largest size from the specified preset sizes that can fit
       * the most text within the parent bounds will be used.
       *
       * The specified sizes don't have to be sorted. The maximum number of sizes
       * used is limited to 10.
       *
       * Note that, if multiple sizes are set, the parent of the Text element this
       * corresponds to shouldn't have its width and height set to wrapped, as it
       * can lead to unexpected results.
       *
       * If this FontStyle is set to any other element besides Text, or that Text
       * element has dynamic field, only the last added size will be use.
       *
       * Any previously added values with this method or #setSize will be cleared.
       *
       * While this field is accessible from 1.0 as singular, it only accepts
       * multiple values since version 1.3 and renderers supporting version 1.3 will
       * use the multiple values to automatically scale text. Renderers who don't
       * support this version will use the first size among multiple values.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
       */
      public Builder setSize(
          int index, androidx.wear.protolayout.proto.DimensionProto.SpProp.Builder builderForValue) {
        copyOnWrite();
        instance.setSize(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The available sizes of the font, in scaled pixels (sp). If not specified,
       * defaults to the size of the system's "body" font.
       *
       * If more than one size is specified and this FontStyle is applied to a Text
       * element with static text, the text size will be automatically picked from
       * the provided sizes to try to perfectly fit within its parent bounds. In
       * other words, the largest size from the specified preset sizes that can fit
       * the most text within the parent bounds will be used.
       *
       * The specified sizes don't have to be sorted. The maximum number of sizes
       * used is limited to 10.
       *
       * Note that, if multiple sizes are set, the parent of the Text element this
       * corresponds to shouldn't have its width and height set to wrapped, as it
       * can lead to unexpected results.
       *
       * If this FontStyle is set to any other element besides Text, or that Text
       * element has dynamic field, only the last added size will be use.
       *
       * Any previously added values with this method or #setSize will be cleared.
       *
       * While this field is accessible from 1.0 as singular, it only accepts
       * multiple values since version 1.3 and renderers supporting version 1.3 will
       * use the multiple values to automatically scale text. Renderers who don't
       * support this version will use the first size among multiple values.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
       */
      public Builder addSize(androidx.wear.protolayout.proto.DimensionProto.SpProp value) {
        copyOnWrite();
        instance.addSize(value);
        return this;
      }
      /**
       * <pre>
       * The available sizes of the font, in scaled pixels (sp). If not specified,
       * defaults to the size of the system's "body" font.
       *
       * If more than one size is specified and this FontStyle is applied to a Text
       * element with static text, the text size will be automatically picked from
       * the provided sizes to try to perfectly fit within its parent bounds. In
       * other words, the largest size from the specified preset sizes that can fit
       * the most text within the parent bounds will be used.
       *
       * The specified sizes don't have to be sorted. The maximum number of sizes
       * used is limited to 10.
       *
       * Note that, if multiple sizes are set, the parent of the Text element this
       * corresponds to shouldn't have its width and height set to wrapped, as it
       * can lead to unexpected results.
       *
       * If this FontStyle is set to any other element besides Text, or that Text
       * element has dynamic field, only the last added size will be use.
       *
       * Any previously added values with this method or #setSize will be cleared.
       *
       * While this field is accessible from 1.0 as singular, it only accepts
       * multiple values since version 1.3 and renderers supporting version 1.3 will
       * use the multiple values to automatically scale text. Renderers who don't
       * support this version will use the first size among multiple values.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
       */
      public Builder addSize(
          int index, androidx.wear.protolayout.proto.DimensionProto.SpProp value) {
        copyOnWrite();
        instance.addSize(index, value);
        return this;
      }
      /**
       * <pre>
       * The available sizes of the font, in scaled pixels (sp). If not specified,
       * defaults to the size of the system's "body" font.
       *
       * If more than one size is specified and this FontStyle is applied to a Text
       * element with static text, the text size will be automatically picked from
       * the provided sizes to try to perfectly fit within its parent bounds. In
       * other words, the largest size from the specified preset sizes that can fit
       * the most text within the parent bounds will be used.
       *
       * The specified sizes don't have to be sorted. The maximum number of sizes
       * used is limited to 10.
       *
       * Note that, if multiple sizes are set, the parent of the Text element this
       * corresponds to shouldn't have its width and height set to wrapped, as it
       * can lead to unexpected results.
       *
       * If this FontStyle is set to any other element besides Text, or that Text
       * element has dynamic field, only the last added size will be use.
       *
       * Any previously added values with this method or #setSize will be cleared.
       *
       * While this field is accessible from 1.0 as singular, it only accepts
       * multiple values since version 1.3 and renderers supporting version 1.3 will
       * use the multiple values to automatically scale text. Renderers who don't
       * support this version will use the first size among multiple values.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
       */
      public Builder addSize(
          androidx.wear.protolayout.proto.DimensionProto.SpProp.Builder builderForValue) {
        copyOnWrite();
        instance.addSize(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The available sizes of the font, in scaled pixels (sp). If not specified,
       * defaults to the size of the system's "body" font.
       *
       * If more than one size is specified and this FontStyle is applied to a Text
       * element with static text, the text size will be automatically picked from
       * the provided sizes to try to perfectly fit within its parent bounds. In
       * other words, the largest size from the specified preset sizes that can fit
       * the most text within the parent bounds will be used.
       *
       * The specified sizes don't have to be sorted. The maximum number of sizes
       * used is limited to 10.
       *
       * Note that, if multiple sizes are set, the parent of the Text element this
       * corresponds to shouldn't have its width and height set to wrapped, as it
       * can lead to unexpected results.
       *
       * If this FontStyle is set to any other element besides Text, or that Text
       * element has dynamic field, only the last added size will be use.
       *
       * Any previously added values with this method or #setSize will be cleared.
       *
       * While this field is accessible from 1.0 as singular, it only accepts
       * multiple values since version 1.3 and renderers supporting version 1.3 will
       * use the multiple values to automatically scale text. Renderers who don't
       * support this version will use the first size among multiple values.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
       */
      public Builder addSize(
          int index, androidx.wear.protolayout.proto.DimensionProto.SpProp.Builder builderForValue) {
        copyOnWrite();
        instance.addSize(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The available sizes of the font, in scaled pixels (sp). If not specified,
       * defaults to the size of the system's "body" font.
       *
       * If more than one size is specified and this FontStyle is applied to a Text
       * element with static text, the text size will be automatically picked from
       * the provided sizes to try to perfectly fit within its parent bounds. In
       * other words, the largest size from the specified preset sizes that can fit
       * the most text within the parent bounds will be used.
       *
       * The specified sizes don't have to be sorted. The maximum number of sizes
       * used is limited to 10.
       *
       * Note that, if multiple sizes are set, the parent of the Text element this
       * corresponds to shouldn't have its width and height set to wrapped, as it
       * can lead to unexpected results.
       *
       * If this FontStyle is set to any other element besides Text, or that Text
       * element has dynamic field, only the last added size will be use.
       *
       * Any previously added values with this method or #setSize will be cleared.
       *
       * While this field is accessible from 1.0 as singular, it only accepts
       * multiple values since version 1.3 and renderers supporting version 1.3 will
       * use the multiple values to automatically scale text. Renderers who don't
       * support this version will use the first size among multiple values.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
       */
      public Builder addAllSize(
          java.lang.Iterable<? extends androidx.wear.protolayout.proto.DimensionProto.SpProp> values) {
        copyOnWrite();
        instance.addAllSize(values);
        return this;
      }
      /**
       * <pre>
       * The available sizes of the font, in scaled pixels (sp). If not specified,
       * defaults to the size of the system's "body" font.
       *
       * If more than one size is specified and this FontStyle is applied to a Text
       * element with static text, the text size will be automatically picked from
       * the provided sizes to try to perfectly fit within its parent bounds. In
       * other words, the largest size from the specified preset sizes that can fit
       * the most text within the parent bounds will be used.
       *
       * The specified sizes don't have to be sorted. The maximum number of sizes
       * used is limited to 10.
       *
       * Note that, if multiple sizes are set, the parent of the Text element this
       * corresponds to shouldn't have its width and height set to wrapped, as it
       * can lead to unexpected results.
       *
       * If this FontStyle is set to any other element besides Text, or that Text
       * element has dynamic field, only the last added size will be use.
       *
       * Any previously added values with this method or #setSize will be cleared.
       *
       * While this field is accessible from 1.0 as singular, it only accepts
       * multiple values since version 1.3 and renderers supporting version 1.3 will
       * use the multiple values to automatically scale text. Renderers who don't
       * support this version will use the first size among multiple values.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
       */
      public Builder clearSize() {
        copyOnWrite();
        instance.clearSize();
        return this;
      }
      /**
       * <pre>
       * The available sizes of the font, in scaled pixels (sp). If not specified,
       * defaults to the size of the system's "body" font.
       *
       * If more than one size is specified and this FontStyle is applied to a Text
       * element with static text, the text size will be automatically picked from
       * the provided sizes to try to perfectly fit within its parent bounds. In
       * other words, the largest size from the specified preset sizes that can fit
       * the most text within the parent bounds will be used.
       *
       * The specified sizes don't have to be sorted. The maximum number of sizes
       * used is limited to 10.
       *
       * Note that, if multiple sizes are set, the parent of the Text element this
       * corresponds to shouldn't have its width and height set to wrapped, as it
       * can lead to unexpected results.
       *
       * If this FontStyle is set to any other element besides Text, or that Text
       * element has dynamic field, only the last added size will be use.
       *
       * Any previously added values with this method or #setSize will be cleared.
       *
       * While this field is accessible from 1.0 as singular, it only accepts
       * multiple values since version 1.3 and renderers supporting version 1.3 will
       * use the multiple values to automatically scale text. Renderers who don't
       * support this version will use the first size among multiple values.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.SpProp size = 1;</code>
       */
      public Builder removeSize(int index) {
        copyOnWrite();
        instance.removeSize(index);
        return this;
      }

      /**
       * <pre>
       * Whether the text should be rendered in a italic typeface. If not specified,
       * defaults to "false".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.BoolProp italic = 2;</code>
       */
      @java.lang.Override
      public boolean hasItalic() {
        return instance.hasItalic();
      }
      /**
       * <pre>
       * Whether the text should be rendered in a italic typeface. If not specified,
       * defaults to "false".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.BoolProp italic = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.TypesProto.BoolProp getItalic() {
        return instance.getItalic();
      }
      /**
       * <pre>
       * Whether the text should be rendered in a italic typeface. If not specified,
       * defaults to "false".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.BoolProp italic = 2;</code>
       */
      public Builder setItalic(androidx.wear.protolayout.proto.TypesProto.BoolProp value) {
        copyOnWrite();
        instance.setItalic(value);
        return this;
        }
      /**
       * <pre>
       * Whether the text should be rendered in a italic typeface. If not specified,
       * defaults to "false".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.BoolProp italic = 2;</code>
       */
      public Builder setItalic(
          androidx.wear.protolayout.proto.TypesProto.BoolProp.Builder builderForValue) {
        copyOnWrite();
        instance.setItalic(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Whether the text should be rendered in a italic typeface. If not specified,
       * defaults to "false".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.BoolProp italic = 2;</code>
       */
      public Builder mergeItalic(androidx.wear.protolayout.proto.TypesProto.BoolProp value) {
        copyOnWrite();
        instance.mergeItalic(value);
        return this;
      }
      /**
       * <pre>
       * Whether the text should be rendered in a italic typeface. If not specified,
       * defaults to "false".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.BoolProp italic = 2;</code>
       */
      public Builder clearItalic() {  copyOnWrite();
        instance.clearItalic();
        return this;
      }

      /**
       * <pre>
       * Whether the text should be rendered with an underline. If not specified,
       * defaults to "false".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.BoolProp underline = 3;</code>
       */
      @java.lang.Override
      public boolean hasUnderline() {
        return instance.hasUnderline();
      }
      /**
       * <pre>
       * Whether the text should be rendered with an underline. If not specified,
       * defaults to "false".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.BoolProp underline = 3;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.TypesProto.BoolProp getUnderline() {
        return instance.getUnderline();
      }
      /**
       * <pre>
       * Whether the text should be rendered with an underline. If not specified,
       * defaults to "false".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.BoolProp underline = 3;</code>
       */
      public Builder setUnderline(androidx.wear.protolayout.proto.TypesProto.BoolProp value) {
        copyOnWrite();
        instance.setUnderline(value);
        return this;
        }
      /**
       * <pre>
       * Whether the text should be rendered with an underline. If not specified,
       * defaults to "false".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.BoolProp underline = 3;</code>
       */
      public Builder setUnderline(
          androidx.wear.protolayout.proto.TypesProto.BoolProp.Builder builderForValue) {
        copyOnWrite();
        instance.setUnderline(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Whether the text should be rendered with an underline. If not specified,
       * defaults to "false".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.BoolProp underline = 3;</code>
       */
      public Builder mergeUnderline(androidx.wear.protolayout.proto.TypesProto.BoolProp value) {
        copyOnWrite();
        instance.mergeUnderline(value);
        return this;
      }
      /**
       * <pre>
       * Whether the text should be rendered with an underline. If not specified,
       * defaults to "false".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.BoolProp underline = 3;</code>
       */
      public Builder clearUnderline() {  copyOnWrite();
        instance.clearUnderline();
        return this;
      }

      /**
       * <pre>
       * The text color. If not defined, defaults to white.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorProp color = 4;</code>
       */
      @java.lang.Override
      public boolean hasColor() {
        return instance.hasColor();
      }
      /**
       * <pre>
       * The text color. If not defined, defaults to white.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorProp color = 4;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.ColorProto.ColorProp getColor() {
        return instance.getColor();
      }
      /**
       * <pre>
       * The text color. If not defined, defaults to white.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorProp color = 4;</code>
       */
      public Builder setColor(androidx.wear.protolayout.proto.ColorProto.ColorProp value) {
        copyOnWrite();
        instance.setColor(value);
        return this;
        }
      /**
       * <pre>
       * The text color. If not defined, defaults to white.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorProp color = 4;</code>
       */
      public Builder setColor(
          androidx.wear.protolayout.proto.ColorProto.ColorProp.Builder builderForValue) {
        copyOnWrite();
        instance.setColor(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The text color. If not defined, defaults to white.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorProp color = 4;</code>
       */
      public Builder mergeColor(androidx.wear.protolayout.proto.ColorProto.ColorProp value) {
        copyOnWrite();
        instance.mergeColor(value);
        return this;
      }
      /**
       * <pre>
       * The text color. If not defined, defaults to white.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorProp color = 4;</code>
       */
      public Builder clearColor() {  copyOnWrite();
        instance.clearColor();
        return this;
      }

      /**
       * <pre>
       * The weight of the font. If the provided value is not supported on a
       * platform, the nearest supported value will be used. If not defined, or
       * when set to an invalid value, defaults to "normal".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontWeightProp weight = 5;</code>
       */
      @java.lang.Override
      public boolean hasWeight() {
        return instance.hasWeight();
      }
      /**
       * <pre>
       * The weight of the font. If the provided value is not supported on a
       * platform, the nearest supported value will be used. If not defined, or
       * when set to an invalid value, defaults to "normal".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontWeightProp weight = 5;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp getWeight() {
        return instance.getWeight();
      }
      /**
       * <pre>
       * The weight of the font. If the provided value is not supported on a
       * platform, the nearest supported value will be used. If not defined, or
       * when set to an invalid value, defaults to "normal".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontWeightProp weight = 5;</code>
       */
      public Builder setWeight(androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp value) {
        copyOnWrite();
        instance.setWeight(value);
        return this;
        }
      /**
       * <pre>
       * The weight of the font. If the provided value is not supported on a
       * platform, the nearest supported value will be used. If not defined, or
       * when set to an invalid value, defaults to "normal".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontWeightProp weight = 5;</code>
       */
      public Builder setWeight(
          androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp.Builder builderForValue) {
        copyOnWrite();
        instance.setWeight(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The weight of the font. If the provided value is not supported on a
       * platform, the nearest supported value will be used. If not defined, or
       * when set to an invalid value, defaults to "normal".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontWeightProp weight = 5;</code>
       */
      public Builder mergeWeight(androidx.wear.protolayout.proto.LayoutElementProto.FontWeightProp value) {
        copyOnWrite();
        instance.mergeWeight(value);
        return this;
      }
      /**
       * <pre>
       * The weight of the font. If the provided value is not supported on a
       * platform, the nearest supported value will be used. If not defined, or
       * when set to an invalid value, defaults to "normal".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontWeightProp weight = 5;</code>
       */
      public Builder clearWeight() {  copyOnWrite();
        instance.clearWeight();
        return this;
      }

      /**
       * <pre>
       * The text letter-spacing. Positive numbers increase the space between
       * letters while negative numbers tighten the space. If not specified,
       * defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.EmProp letter_spacing = 6;</code>
       */
      @java.lang.Override
      public boolean hasLetterSpacing() {
        return instance.hasLetterSpacing();
      }
      /**
       * <pre>
       * The text letter-spacing. Positive numbers increase the space between
       * letters while negative numbers tighten the space. If not specified,
       * defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.EmProp letter_spacing = 6;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.EmProp getLetterSpacing() {
        return instance.getLetterSpacing();
      }
      /**
       * <pre>
       * The text letter-spacing. Positive numbers increase the space between
       * letters while negative numbers tighten the space. If not specified,
       * defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.EmProp letter_spacing = 6;</code>
       */
      public Builder setLetterSpacing(androidx.wear.protolayout.proto.DimensionProto.EmProp value) {
        copyOnWrite();
        instance.setLetterSpacing(value);
        return this;
        }
      /**
       * <pre>
       * The text letter-spacing. Positive numbers increase the space between
       * letters while negative numbers tighten the space. If not specified,
       * defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.EmProp letter_spacing = 6;</code>
       */
      public Builder setLetterSpacing(
          androidx.wear.protolayout.proto.DimensionProto.EmProp.Builder builderForValue) {
        copyOnWrite();
        instance.setLetterSpacing(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The text letter-spacing. Positive numbers increase the space between
       * letters while negative numbers tighten the space. If not specified,
       * defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.EmProp letter_spacing = 6;</code>
       */
      public Builder mergeLetterSpacing(androidx.wear.protolayout.proto.DimensionProto.EmProp value) {
        copyOnWrite();
        instance.mergeLetterSpacing(value);
        return this;
      }
      /**
       * <pre>
       * The text letter-spacing. Positive numbers increase the space between
       * letters while negative numbers tighten the space. If not specified,
       * defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.EmProp letter_spacing = 6;</code>
       */
      public Builder clearLetterSpacing() {  copyOnWrite();
        instance.clearLetterSpacing();
        return this;
      }

      /**
       * <pre>
       * The variant of a font. Some renderers may use different fonts for title and
       * body text, which can be selected using this field. If not specified,
       * defaults to "body".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontVariantProp variant = 7;</code>
       */
      @java.lang.Override
      public boolean hasVariant() {
        return instance.hasVariant();
      }
      /**
       * <pre>
       * The variant of a font. Some renderers may use different fonts for title and
       * body text, which can be selected using this field. If not specified,
       * defaults to "body".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontVariantProp variant = 7;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp getVariant() {
        return instance.getVariant();
      }
      /**
       * <pre>
       * The variant of a font. Some renderers may use different fonts for title and
       * body text, which can be selected using this field. If not specified,
       * defaults to "body".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontVariantProp variant = 7;</code>
       */
      public Builder setVariant(androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp value) {
        copyOnWrite();
        instance.setVariant(value);
        return this;
        }
      /**
       * <pre>
       * The variant of a font. Some renderers may use different fonts for title and
       * body text, which can be selected using this field. If not specified,
       * defaults to "body".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontVariantProp variant = 7;</code>
       */
      public Builder setVariant(
          androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp.Builder builderForValue) {
        copyOnWrite();
        instance.setVariant(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The variant of a font. Some renderers may use different fonts for title and
       * body text, which can be selected using this field. If not specified,
       * defaults to "body".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontVariantProp variant = 7;</code>
       */
      public Builder mergeVariant(androidx.wear.protolayout.proto.LayoutElementProto.FontVariantProp value) {
        copyOnWrite();
        instance.mergeVariant(value);
        return this;
      }
      /**
       * <pre>
       * The variant of a font. Some renderers may use different fonts for title and
       * body text, which can be selected using this field. If not specified,
       * defaults to "body".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontVariantProp variant = 7;</code>
       */
      public Builder clearVariant() {  copyOnWrite();
        instance.clearVariant();
        return this;
      }

      /**
       * <pre>
       * The collection of font settings to be applied.
       *
       * Supported settings depend on the font used and renderer version.
       * &lt;setter&gt;If this is used with the variable fonts on renderers
       * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
       */
      @java.lang.Override
      public java.util.List<androidx.wear.protolayout.proto.LayoutElementProto.FontSetting> getSettingsList() {
        return java.util.Collections.unmodifiableList(
            instance.getSettingsList());
      }
      /**
       * <pre>
       * The collection of font settings to be applied.
       *
       * Supported settings depend on the font used and renderer version.
       * &lt;setter&gt;If this is used with the variable fonts on renderers
       * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
       */
      @java.lang.Override
      public int getSettingsCount() {
        return instance.getSettingsCount();
      }/**
       * <pre>
       * The collection of font settings to be applied.
       *
       * Supported settings depend on the font used and renderer version.
       * &lt;setter&gt;If this is used with the variable fonts on renderers
       * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.FontSetting getSettings(int index) {
        return instance.getSettings(index);
      }
      /**
       * <pre>
       * The collection of font settings to be applied.
       *
       * Supported settings depend on the font used and renderer version.
       * &lt;setter&gt;If this is used with the variable fonts on renderers
       * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
       */
      public Builder setSettings(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.FontSetting value) {
        copyOnWrite();
        instance.setSettings(index, value);
        return this;
      }
      /**
       * <pre>
       * The collection of font settings to be applied.
       *
       * Supported settings depend on the font used and renderer version.
       * &lt;setter&gt;If this is used with the variable fonts on renderers
       * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
       */
      public Builder setSettings(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.FontSetting.Builder builderForValue) {
        copyOnWrite();
        instance.setSettings(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The collection of font settings to be applied.
       *
       * Supported settings depend on the font used and renderer version.
       * &lt;setter&gt;If this is used with the variable fonts on renderers
       * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
       */
      public Builder addSettings(androidx.wear.protolayout.proto.LayoutElementProto.FontSetting value) {
        copyOnWrite();
        instance.addSettings(value);
        return this;
      }
      /**
       * <pre>
       * The collection of font settings to be applied.
       *
       * Supported settings depend on the font used and renderer version.
       * &lt;setter&gt;If this is used with the variable fonts on renderers
       * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
       */
      public Builder addSettings(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.FontSetting value) {
        copyOnWrite();
        instance.addSettings(index, value);
        return this;
      }
      /**
       * <pre>
       * The collection of font settings to be applied.
       *
       * Supported settings depend on the font used and renderer version.
       * &lt;setter&gt;If this is used with the variable fonts on renderers
       * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
       */
      public Builder addSettings(
          androidx.wear.protolayout.proto.LayoutElementProto.FontSetting.Builder builderForValue) {
        copyOnWrite();
        instance.addSettings(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The collection of font settings to be applied.
       *
       * Supported settings depend on the font used and renderer version.
       * &lt;setter&gt;If this is used with the variable fonts on renderers
       * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
       */
      public Builder addSettings(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.FontSetting.Builder builderForValue) {
        copyOnWrite();
        instance.addSettings(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The collection of font settings to be applied.
       *
       * Supported settings depend on the font used and renderer version.
       * &lt;setter&gt;If this is used with the variable fonts on renderers
       * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
       */
      public Builder addAllSettings(
          java.lang.Iterable<? extends androidx.wear.protolayout.proto.LayoutElementProto.FontSetting> values) {
        copyOnWrite();
        instance.addAllSettings(values);
        return this;
      }
      /**
       * <pre>
       * The collection of font settings to be applied.
       *
       * Supported settings depend on the font used and renderer version.
       * &lt;setter&gt;If this is used with the variable fonts on renderers
       * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
       */
      public Builder clearSettings() {
        copyOnWrite();
        instance.clearSettings();
        return this;
      }
      /**
       * <pre>
       * The collection of font settings to be applied.
       *
       * Supported settings depend on the font used and renderer version.
       * &lt;setter&gt;If this is used with the variable fonts on renderers
       * supporting 1.4, weight and width setting will always be available.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.FontSetting settings = 8;</code>
       */
      public Builder removeSettings(int index) {
        copyOnWrite();
        instance.removeSettings(index);
        return this;
      }

      /**
       * <pre>
       * The prioritized collection of font family names describing which font
       * should be used for this FontStyle and its fallback values if not available.
       * For example, preferring default system variable font with default non
       * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
       * font.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated string preferred_font_families = 9;</code>
       * @return A list containing the preferredFontFamilies.
       */
      @java.lang.Override
      public java.util.List<java.lang.String>
          getPreferredFontFamiliesList() {
        return java.util.Collections.unmodifiableList(
            instance.getPreferredFontFamiliesList());
      }
      /**
       * <pre>
       * The prioritized collection of font family names describing which font
       * should be used for this FontStyle and its fallback values if not available.
       * For example, preferring default system variable font with default non
       * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
       * font.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated string preferred_font_families = 9;</code>
       * @return The count of preferredFontFamilies.
       */
      @java.lang.Override
      public int getPreferredFontFamiliesCount() {
        return instance.getPreferredFontFamiliesCount();
      }
      /**
       * <pre>
       * The prioritized collection of font family names describing which font
       * should be used for this FontStyle and its fallback values if not available.
       * For example, preferring default system variable font with default non
       * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
       * font.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated string preferred_font_families = 9;</code>
       * @param index The index of the element to return.
       * @return The preferredFontFamilies at the given index.
       */
      @java.lang.Override
      public java.lang.String getPreferredFontFamilies(int index) {
        return instance.getPreferredFontFamilies(index);
      }
      /**
       * <pre>
       * The prioritized collection of font family names describing which font
       * should be used for this FontStyle and its fallback values if not available.
       * For example, preferring default system variable font with default non
       * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
       * font.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated string preferred_font_families = 9;</code>
       * @param index The index of the value to return.
       * @return The bytes of the preferredFontFamilies at the given index.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getPreferredFontFamiliesBytes(int index) {
        return instance.getPreferredFontFamiliesBytes(index);
      }
      /**
       * <pre>
       * The prioritized collection of font family names describing which font
       * should be used for this FontStyle and its fallback values if not available.
       * For example, preferring default system variable font with default non
       * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
       * font.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated string preferred_font_families = 9;</code>
       * @param index The index to set the value at.
       * @param value The preferredFontFamilies to set.
       * @return This builder for chaining.
       */
      public Builder setPreferredFontFamilies(
          int index, java.lang.String value) {
        copyOnWrite();
        instance.setPreferredFontFamilies(index, value);
        return this;
      }
      /**
       * <pre>
       * The prioritized collection of font family names describing which font
       * should be used for this FontStyle and its fallback values if not available.
       * For example, preferring default system variable font with default non
       * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
       * font.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated string preferred_font_families = 9;</code>
       * @param value The preferredFontFamilies to add.
       * @return This builder for chaining.
       */
      public Builder addPreferredFontFamilies(
          java.lang.String value) {
        copyOnWrite();
        instance.addPreferredFontFamilies(value);
        return this;
      }
      /**
       * <pre>
       * The prioritized collection of font family names describing which font
       * should be used for this FontStyle and its fallback values if not available.
       * For example, preferring default system variable font with default non
       * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
       * font.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated string preferred_font_families = 9;</code>
       * @param values The preferredFontFamilies to add.
       * @return This builder for chaining.
       */
      public Builder addAllPreferredFontFamilies(
          java.lang.Iterable<java.lang.String> values) {
        copyOnWrite();
        instance.addAllPreferredFontFamilies(values);
        return this;
      }
      /**
       * <pre>
       * The prioritized collection of font family names describing which font
       * should be used for this FontStyle and its fallback values if not available.
       * For example, preferring default system variable font with default non
       * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
       * font.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated string preferred_font_families = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearPreferredFontFamilies() {
        copyOnWrite();
        instance.clearPreferredFontFamilies();
        return this;
      }
      /**
       * <pre>
       * The prioritized collection of font family names describing which font
       * should be used for this FontStyle and its fallback values if not available.
       * For example, preferring default system variable font with default non
       * variable system font as a fallback. &lt;setter&gt;If not set, defaults to system
       * font.&lt;/setter&gt;
       * </pre>
       *
       * <code>repeated string preferred_font_families = 9;</code>
       * @param value The bytes of the preferredFontFamilies to add.
       * @return This builder for chaining.
       */
      public Builder addPreferredFontFamiliesBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.addPreferredFontFamiliesBytes(value);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.FontStyle)
    }
    @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.proto.LayoutElementProto.FontStyle();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "size_",
              androidx.wear.protolayout.proto.DimensionProto.SpProp.class,
              "italic_",
              "underline_",
              "color_",
              "weight_",
              "letterSpacing_",
              "variant_",
              "settings_",
              androidx.wear.protolayout.proto.LayoutElementProto.FontSetting.class,
              "preferredFontFamilies_",
            };
            java.lang.String info =
                "\u0000\t\u0000\u0000\u0001\t\t\u0000\u0003\u0000\u0001\u001b\u0002\t\u0003\t\u0004" +
                "\t\u0005\t\u0006\t\u0007\t\b\u001b\t\u021a";
            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.proto.LayoutElementProto.FontStyle> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.FontStyle.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.FontStyle>(
                        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.proto.FontStyle)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.FontStyle DEFAULT_INSTANCE;
    static {
      FontStyle defaultInstance = new FontStyle();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        FontStyle.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.FontStyle getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * A single point of customization in a font variation, with axis tag and a
     * value for it.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariationSetting variation = 1;</code>
     * @return Whether the variation field is set.
     */
    boolean hasVariation();
    /**
     * <pre>
     * A single point of customization in a font variation, with axis tag and a
     * value for it.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariationSetting variation = 1;</code>
     * @return The variation.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting getVariation();

    /**
     * <pre>
     * A single point of customization in a font feature, with specified tag.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontFeatureSetting feature = 2;</code>
     * @return Whether the feature field is set.
     */
    boolean hasFeature();
    /**
     * <pre>
     * A single point of customization in a font feature, with specified tag.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontFeatureSetting feature = 2;</code>
     * @return The feature.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting getFeature();

    public androidx.wear.protolayout.proto.LayoutElementProto.FontSetting.InnerCase getInnerCase();
  }
  /**
   * <pre>
   * A single point of customization in a font.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.FontSetting}
   */
  public  static final class FontSetting extends
      com.google.protobuf.GeneratedMessageLite<
          FontSetting, FontSetting.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.FontSetting)
      FontSettingOrBuilder {
    private FontSetting() {
    }
    private int innerCase_ = 0;
    private java.lang.Object inner_;
    public enum InnerCase {
      VARIATION(1),
      FEATURE(2),
      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 VARIATION;
          case 2: return FEATURE;
          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 VARIATION_FIELD_NUMBER = 1;
    /**
     * <pre>
     * A single point of customization in a font variation, with axis tag and a
     * value for it.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariationSetting variation = 1;</code>
     */
    @java.lang.Override
    public boolean hasVariation() {
      return innerCase_ == 1;
    }
    /**
     * <pre>
     * A single point of customization in a font variation, with axis tag and a
     * value for it.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariationSetting variation = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting getVariation() {
      if (innerCase_ == 1) {
         return (androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting) inner_;
      }
      return androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting.getDefaultInstance();
    }
    /**
     * <pre>
     * A single point of customization in a font variation, with axis tag and a
     * value for it.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariationSetting variation = 1;</code>
     */
    private void setVariation(androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting value) {
      value.getClass();
  inner_ = value;
      innerCase_ = 1;
    }
    /**
     * <pre>
     * A single point of customization in a font variation, with axis tag and a
     * value for it.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariationSetting variation = 1;</code>
     */
    private void mergeVariation(androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting value) {
      value.getClass();
  if (innerCase_ == 1 &&
          inner_ != androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting.getDefaultInstance()) {
        inner_ = androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting.newBuilder((androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting) inner_)
            .mergeFrom(value).buildPartial();
      } else {
        inner_ = value;
      }
      innerCase_ = 1;
    }
    /**
     * <pre>
     * A single point of customization in a font variation, with axis tag and a
     * value for it.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontVariationSetting variation = 1;</code>
     */
    private void clearVariation() {
      if (innerCase_ == 1) {
        innerCase_ = 0;
        inner_ = null;
      }
    }

    public static final int FEATURE_FIELD_NUMBER = 2;
    /**
     * <pre>
     * A single point of customization in a font feature, with specified tag.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontFeatureSetting feature = 2;</code>
     */
    @java.lang.Override
    public boolean hasFeature() {
      return innerCase_ == 2;
    }
    /**
     * <pre>
     * A single point of customization in a font feature, with specified tag.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontFeatureSetting feature = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting getFeature() {
      if (innerCase_ == 2) {
         return (androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting) inner_;
      }
      return androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting.getDefaultInstance();
    }
    /**
     * <pre>
     * A single point of customization in a font feature, with specified tag.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontFeatureSetting feature = 2;</code>
     */
    private void setFeature(androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting value) {
      value.getClass();
  inner_ = value;
      innerCase_ = 2;
    }
    /**
     * <pre>
     * A single point of customization in a font feature, with specified tag.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontFeatureSetting feature = 2;</code>
     */
    private void mergeFeature(androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting value) {
      value.getClass();
  if (innerCase_ == 2 &&
          inner_ != androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting.getDefaultInstance()) {
        inner_ = androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting.newBuilder((androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting) inner_)
            .mergeFrom(value).buildPartial();
      } else {
        inner_ = value;
      }
      innerCase_ = 2;
    }
    /**
     * <pre>
     * A single point of customization in a font feature, with specified tag.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontFeatureSetting feature = 2;</code>
     */
    private void clearFeature() {
      if (innerCase_ == 2) {
        innerCase_ = 0;
        inner_ = null;
      }
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.FontSetting parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontSetting 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.proto.LayoutElementProto.FontSetting 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.proto.LayoutElementProto.FontSetting 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.proto.LayoutElementProto.FontSetting parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontSetting 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.proto.LayoutElementProto.FontSetting parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontSetting 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.proto.LayoutElementProto.FontSetting parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontSetting 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.proto.LayoutElementProto.FontSetting parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontSetting 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.proto.LayoutElementProto.FontSetting prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * A single point of customization in a font.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.FontSetting}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.FontSetting, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.FontSetting)
        androidx.wear.protolayout.proto.LayoutElementProto.FontSettingOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.FontSetting.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

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

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


      /**
       * <pre>
       * A single point of customization in a font variation, with axis tag and a
       * value for it.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontVariationSetting variation = 1;</code>
       */
      @java.lang.Override
      public boolean hasVariation() {
        return instance.hasVariation();
      }
      /**
       * <pre>
       * A single point of customization in a font variation, with axis tag and a
       * value for it.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontVariationSetting variation = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting getVariation() {
        return instance.getVariation();
      }
      /**
       * <pre>
       * A single point of customization in a font variation, with axis tag and a
       * value for it.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontVariationSetting variation = 1;</code>
       */
      public Builder setVariation(androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting value) {
        copyOnWrite();
        instance.setVariation(value);
        return this;
      }
      /**
       * <pre>
       * A single point of customization in a font variation, with axis tag and a
       * value for it.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontVariationSetting variation = 1;</code>
       */
      public Builder setVariation(
          androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting.Builder builderForValue) {
        copyOnWrite();
        instance.setVariation(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * A single point of customization in a font variation, with axis tag and a
       * value for it.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontVariationSetting variation = 1;</code>
       */
      public Builder mergeVariation(androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting value) {
        copyOnWrite();
        instance.mergeVariation(value);
        return this;
      }
      /**
       * <pre>
       * A single point of customization in a font variation, with axis tag and a
       * value for it.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontVariationSetting variation = 1;</code>
       */
      public Builder clearVariation() {
        copyOnWrite();
        instance.clearVariation();
        return this;
      }

      /**
       * <pre>
       * A single point of customization in a font feature, with specified tag.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontFeatureSetting feature = 2;</code>
       */
      @java.lang.Override
      public boolean hasFeature() {
        return instance.hasFeature();
      }
      /**
       * <pre>
       * A single point of customization in a font feature, with specified tag.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontFeatureSetting feature = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting getFeature() {
        return instance.getFeature();
      }
      /**
       * <pre>
       * A single point of customization in a font feature, with specified tag.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontFeatureSetting feature = 2;</code>
       */
      public Builder setFeature(androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting value) {
        copyOnWrite();
        instance.setFeature(value);
        return this;
      }
      /**
       * <pre>
       * A single point of customization in a font feature, with specified tag.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontFeatureSetting feature = 2;</code>
       */
      public Builder setFeature(
          androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting.Builder builderForValue) {
        copyOnWrite();
        instance.setFeature(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * A single point of customization in a font feature, with specified tag.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontFeatureSetting feature = 2;</code>
       */
      public Builder mergeFeature(androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting value) {
        copyOnWrite();
        instance.mergeFeature(value);
        return this;
      }
      /**
       * <pre>
       * A single point of customization in a font feature, with specified tag.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontFeatureSetting feature = 2;</code>
       */
      public Builder clearFeature() {
        copyOnWrite();
        instance.clearFeature();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.FontSetting)
    }
    @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.proto.LayoutElementProto.FontSetting();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "inner_",
              "innerCase_",
              androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting.class,
              androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting.class,
            };
            java.lang.String info =
                "\u0000\u0002\u0001\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001<\u0000\u0002<" +
                "\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.proto.LayoutElementProto.FontSetting> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.FontSetting.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.FontSetting>(
                        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.proto.FontSetting)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.FontSetting DEFAULT_INSTANCE;
    static {
      FontSetting defaultInstance = new FontSetting();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        FontSetting.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.FontSetting getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The axis tag for this setting. This represents a 4 ASCII characters tag.
     * </pre>
     *
     * <code>fixed32 axis_tag = 1;</code>
     * @return The axisTag.
     */
    int getAxisTag();

    /**
     * <pre>
     * The value for this setting.
     * </pre>
     *
     * <code>float value = 2;</code>
     * @return The value.
     */
    float getValue();
  }
  /**
   * <pre>
   * A single point of customization in a font variation, with axis tag and a
   * value for it.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.FontVariationSetting}
   */
  public  static final class FontVariationSetting extends
      com.google.protobuf.GeneratedMessageLite<
          FontVariationSetting, FontVariationSetting.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.FontVariationSetting)
      FontVariationSettingOrBuilder {
    private FontVariationSetting() {
    }
    public static final int AXIS_TAG_FIELD_NUMBER = 1;
    private int axisTag_;
    /**
     * <pre>
     * The axis tag for this setting. This represents a 4 ASCII characters tag.
     * </pre>
     *
     * <code>fixed32 axis_tag = 1;</code>
     * @return The axisTag.
     */
    @java.lang.Override
    public int getAxisTag() {
      return axisTag_;
    }
    /**
     * <pre>
     * The axis tag for this setting. This represents a 4 ASCII characters tag.
     * </pre>
     *
     * <code>fixed32 axis_tag = 1;</code>
     * @param value The axisTag to set.
     */
    private void setAxisTag(int value) {
      
      axisTag_ = value;
    }
    /**
     * <pre>
     * The axis tag for this setting. This represents a 4 ASCII characters tag.
     * </pre>
     *
     * <code>fixed32 axis_tag = 1;</code>
     */
    private void clearAxisTag() {

      axisTag_ = 0;
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private float value_;
    /**
     * <pre>
     * The value for this setting.
     * </pre>
     *
     * <code>float value = 2;</code>
     * @return The value.
     */
    @java.lang.Override
    public float getValue() {
      return value_;
    }
    /**
     * <pre>
     * The value for this setting.
     * </pre>
     *
     * <code>float value = 2;</code>
     * @param value The value to set.
     */
    private void setValue(float value) {
      
      value_ = value;
    }
    /**
     * <pre>
     * The value for this setting.
     * </pre>
     *
     * <code>float value = 2;</code>
     */
    private void clearValue() {

      value_ = 0F;
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting 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.proto.LayoutElementProto.FontVariationSetting 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.proto.LayoutElementProto.FontVariationSetting 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.proto.LayoutElementProto.FontVariationSetting parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting 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.proto.LayoutElementProto.FontVariationSetting parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting 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.proto.LayoutElementProto.FontVariationSetting parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting 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.proto.LayoutElementProto.FontVariationSetting parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting 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.proto.LayoutElementProto.FontVariationSetting prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * A single point of customization in a font variation, with axis tag and a
     * value for it.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.FontVariationSetting}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.FontVariationSetting)
        androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSettingOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The axis tag for this setting. This represents a 4 ASCII characters tag.
       * </pre>
       *
       * <code>fixed32 axis_tag = 1;</code>
       * @return The axisTag.
       */
      @java.lang.Override
      public int getAxisTag() {
        return instance.getAxisTag();
      }
      /**
       * <pre>
       * The axis tag for this setting. This represents a 4 ASCII characters tag.
       * </pre>
       *
       * <code>fixed32 axis_tag = 1;</code>
       * @param value The axisTag to set.
       * @return This builder for chaining.
       */
      public Builder setAxisTag(int value) {
        copyOnWrite();
        instance.setAxisTag(value);
        return this;
      }
      /**
       * <pre>
       * The axis tag for this setting. This represents a 4 ASCII characters tag.
       * </pre>
       *
       * <code>fixed32 axis_tag = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAxisTag() {
        copyOnWrite();
        instance.clearAxisTag();
        return this;
      }

      /**
       * <pre>
       * The value for this setting.
       * </pre>
       *
       * <code>float value = 2;</code>
       * @return The value.
       */
      @java.lang.Override
      public float getValue() {
        return instance.getValue();
      }
      /**
       * <pre>
       * The value for this setting.
       * </pre>
       *
       * <code>float value = 2;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(float value) {
        copyOnWrite();
        instance.setValue(value);
        return this;
      }
      /**
       * <pre>
       * The value for this setting.
       * </pre>
       *
       * <code>float value = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        copyOnWrite();
        instance.clearValue();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.FontVariationSetting)
    }
    @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.proto.LayoutElementProto.FontVariationSetting();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "axisTag_",
              "value_",
            };
            java.lang.String info =
                "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u0006\u0002\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.proto.LayoutElementProto.FontVariationSetting> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting>(
                        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.proto.FontVariationSetting)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting DEFAULT_INSTANCE;
    static {
      FontVariationSetting defaultInstance = new FontVariationSetting();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        FontVariationSetting.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.FontVariationSetting getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The feature tag. This represents a 4 ASCII characters tag.
     * </pre>
     *
     * <code>fixed32 tag = 1;</code>
     * @return The tag.
     */
    int getTag();
  }
  /**
   * <pre>
   * A single point of customization in a font feature, with specified tag.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.FontFeatureSetting}
   */
  public  static final class FontFeatureSetting extends
      com.google.protobuf.GeneratedMessageLite<
          FontFeatureSetting, FontFeatureSetting.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.FontFeatureSetting)
      FontFeatureSettingOrBuilder {
    private FontFeatureSetting() {
    }
    public static final int TAG_FIELD_NUMBER = 1;
    private int tag_;
    /**
     * <pre>
     * The feature tag. This represents a 4 ASCII characters tag.
     * </pre>
     *
     * <code>fixed32 tag = 1;</code>
     * @return The tag.
     */
    @java.lang.Override
    public int getTag() {
      return tag_;
    }
    /**
     * <pre>
     * The feature tag. This represents a 4 ASCII characters tag.
     * </pre>
     *
     * <code>fixed32 tag = 1;</code>
     * @param value The tag to set.
     */
    private void setTag(int value) {
      
      tag_ = value;
    }
    /**
     * <pre>
     * The feature tag. This represents a 4 ASCII characters tag.
     * </pre>
     *
     * <code>fixed32 tag = 1;</code>
     */
    private void clearTag() {

      tag_ = 0;
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting 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.proto.LayoutElementProto.FontFeatureSetting 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.proto.LayoutElementProto.FontFeatureSetting 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.proto.LayoutElementProto.FontFeatureSetting parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting 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.proto.LayoutElementProto.FontFeatureSetting parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting 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.proto.LayoutElementProto.FontFeatureSetting parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting 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.proto.LayoutElementProto.FontFeatureSetting parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting 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.proto.LayoutElementProto.FontFeatureSetting prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * A single point of customization in a font feature, with specified tag.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.FontFeatureSetting}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.FontFeatureSetting)
        androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSettingOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The feature tag. This represents a 4 ASCII characters tag.
       * </pre>
       *
       * <code>fixed32 tag = 1;</code>
       * @return The tag.
       */
      @java.lang.Override
      public int getTag() {
        return instance.getTag();
      }
      /**
       * <pre>
       * The feature tag. This represents a 4 ASCII characters tag.
       * </pre>
       *
       * <code>fixed32 tag = 1;</code>
       * @param value The tag to set.
       * @return This builder for chaining.
       */
      public Builder setTag(int value) {
        copyOnWrite();
        instance.setTag(value);
        return this;
      }
      /**
       * <pre>
       * The feature tag. This represents a 4 ASCII characters tag.
       * </pre>
       *
       * <code>fixed32 tag = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTag() {
        copyOnWrite();
        instance.clearTag();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.FontFeatureSetting)
    }
    @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.proto.LayoutElementProto.FontFeatureSetting();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "tag_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u0006";
            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.proto.LayoutElementProto.FontFeatureSetting> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting>(
                        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.proto.FontFeatureSetting)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting DEFAULT_INSTANCE;
    static {
      FontFeatureSetting defaultInstance = new FontFeatureSetting();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        FontFeatureSetting.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.FontFeatureSetting getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflow value = 1;</code>
     * @return The enum numeric value on the wire for value.
     */
    int getValueValue();
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflow value = 1;</code>
     * @return The value.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.TextOverflow getValue();
  }
  /**
   * <pre>
   * An extensible TextOverflow property.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.TextOverflowProp}
   */
  public  static final class TextOverflowProp extends
      com.google.protobuf.GeneratedMessageLite<
          TextOverflowProp, TextOverflowProp.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.TextOverflowProp)
      TextOverflowPropOrBuilder {
    private TextOverflowProp() {
    }
    public static final int VALUE_FIELD_NUMBER = 1;
    private int value_;
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflow value = 1;</code>
     * @return The enum numeric value on the wire for value.
     */
    @java.lang.Override
    public int getValueValue() {
      return value_;
    }
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflow value = 1;</code>
     * @return The value.
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.TextOverflow getValue() {
      androidx.wear.protolayout.proto.LayoutElementProto.TextOverflow result = androidx.wear.protolayout.proto.LayoutElementProto.TextOverflow.forNumber(value_);
      return result == null ? androidx.wear.protolayout.proto.LayoutElementProto.TextOverflow.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflow value = 1;</code>
     * @param value The enum numeric value on the wire for value to set.
     */
    private void setValueValue(int value) {
        value_ = value;
    }
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflow value = 1;</code>
     * @param value The value to set.
     */
    private void setValue(androidx.wear.protolayout.proto.LayoutElementProto.TextOverflow value) {
      value_ = value.getNumber();

    }
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflow value = 1;</code>
     */
    private void clearValue() {

      value_ = 0;
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp 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.proto.LayoutElementProto.TextOverflowProp 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.proto.LayoutElementProto.TextOverflowProp 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.proto.LayoutElementProto.TextOverflowProp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp 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.proto.LayoutElementProto.TextOverflowProp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp 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.proto.LayoutElementProto.TextOverflowProp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp 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.proto.LayoutElementProto.TextOverflowProp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp 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.proto.LayoutElementProto.TextOverflowProp prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * An extensible TextOverflow property.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.TextOverflowProp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.TextOverflowProp)
        androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowPropOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextOverflow value = 1;</code>
       * @return The enum numeric value on the wire for value.
       */
      @java.lang.Override
      public int getValueValue() {
        return instance.getValueValue();
      }
      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextOverflow value = 1;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValueValue(int value) {
        copyOnWrite();
        instance.setValueValue(value);
        return this;
      }
      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextOverflow value = 1;</code>
       * @return The value.
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.TextOverflow getValue() {
        return instance.getValue();
      }
      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextOverflow value = 1;</code>
       * @param value The enum numeric value on the wire for value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(androidx.wear.protolayout.proto.LayoutElementProto.TextOverflow value) {
        copyOnWrite();
        instance.setValue(value);
        return this;
      }
      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextOverflow value = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        copyOnWrite();
        instance.clearValue();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.TextOverflowProp)
    }
    @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.proto.LayoutElementProto.TextOverflowProp();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "value_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\f";
            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.proto.LayoutElementProto.TextOverflowProp> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp>(
                        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.proto.TextOverflowProp)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp DEFAULT_INSTANCE;
    static {
      TextOverflowProp defaultInstance = new TextOverflowProp();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        TextOverflowProp.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The number of times to repeat the Marquee animation. Set to -1 to repeat
     * indefinitely. Defaults to repeat indefinitely.
     * </pre>
     *
     * <code>int32 iterations = 1;</code>
     * @return Whether the iterations field is set.
     */
    boolean hasIterations();
    /**
     * <pre>
     * The number of times to repeat the Marquee animation. Set to -1 to repeat
     * indefinitely. Defaults to repeat indefinitely.
     * </pre>
     *
     * <code>int32 iterations = 1;</code>
     * @return The iterations.
     */
    int getIterations();

    public androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters.OptionalIterationsCase getOptionalIterationsCase();
  }
  /**
   * <pre>
   * Parameters for Marquee animation. Only applies for TEXT_OVERFLOW_MARQUEE.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.MarqueeParameters}
   */
  public  static final class MarqueeParameters extends
      com.google.protobuf.GeneratedMessageLite<
          MarqueeParameters, MarqueeParameters.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.MarqueeParameters)
      MarqueeParametersOrBuilder {
    private MarqueeParameters() {
    }
    private int optionalIterationsCase_ = 0;
    private java.lang.Object optionalIterations_;
    public enum OptionalIterationsCase {
      ITERATIONS(1),
      OPTIONALITERATIONS_NOT_SET(0);
      private final int value;
      private OptionalIterationsCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static OptionalIterationsCase valueOf(int value) {
        return forNumber(value);
      }

      public static OptionalIterationsCase forNumber(int value) {
        switch (value) {
          case 1: return ITERATIONS;
          case 0: return OPTIONALITERATIONS_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    @java.lang.Override
    public OptionalIterationsCase
    getOptionalIterationsCase() {
      return OptionalIterationsCase.forNumber(
          optionalIterationsCase_);
    }

    private void clearOptionalIterations() {
      optionalIterationsCase_ = 0;
      optionalIterations_ = null;
    }

    public static final int ITERATIONS_FIELD_NUMBER = 1;
    /**
     * <pre>
     * The number of times to repeat the Marquee animation. Set to -1 to repeat
     * indefinitely. Defaults to repeat indefinitely.
     * </pre>
     *
     * <code>int32 iterations = 1;</code>
     * @return Whether the iterations field is set.
     */
    @java.lang.Override
    public boolean hasIterations() {
      return optionalIterationsCase_ == 1;
    }
    /**
     * <pre>
     * The number of times to repeat the Marquee animation. Set to -1 to repeat
     * indefinitely. Defaults to repeat indefinitely.
     * </pre>
     *
     * <code>int32 iterations = 1;</code>
     * @return The iterations.
     */
    @java.lang.Override
    public int getIterations() {
      if (optionalIterationsCase_ == 1) {
        return (java.lang.Integer) optionalIterations_;
      }
      return 0;
    }
    /**
     * <pre>
     * The number of times to repeat the Marquee animation. Set to -1 to repeat
     * indefinitely. Defaults to repeat indefinitely.
     * </pre>
     *
     * <code>int32 iterations = 1;</code>
     * @param value The iterations to set.
     */
    private void setIterations(int value) {
      optionalIterationsCase_ = 1;
      optionalIterations_ = value;
    }
    /**
     * <pre>
     * The number of times to repeat the Marquee animation. Set to -1 to repeat
     * indefinitely. Defaults to repeat indefinitely.
     * </pre>
     *
     * <code>int32 iterations = 1;</code>
     */
    private void clearIterations() {
      if (optionalIterationsCase_ == 1) {
        optionalIterationsCase_ = 0;
        optionalIterations_ = null;
      }
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters 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.proto.LayoutElementProto.MarqueeParameters 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.proto.LayoutElementProto.MarqueeParameters 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.proto.LayoutElementProto.MarqueeParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters 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.proto.LayoutElementProto.MarqueeParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters 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.proto.LayoutElementProto.MarqueeParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters 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.proto.LayoutElementProto.MarqueeParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters 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.proto.LayoutElementProto.MarqueeParameters prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Parameters for Marquee animation. Only applies for TEXT_OVERFLOW_MARQUEE.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.MarqueeParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.MarqueeParameters)
        androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParametersOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public OptionalIterationsCase
          getOptionalIterationsCase() {
        return instance.getOptionalIterationsCase();
      }

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


      /**
       * <pre>
       * The number of times to repeat the Marquee animation. Set to -1 to repeat
       * indefinitely. Defaults to repeat indefinitely.
       * </pre>
       *
       * <code>int32 iterations = 1;</code>
       * @return Whether the iterations field is set.
       */
      @java.lang.Override
      public boolean hasIterations() {
        return instance.hasIterations();
      }
      /**
       * <pre>
       * The number of times to repeat the Marquee animation. Set to -1 to repeat
       * indefinitely. Defaults to repeat indefinitely.
       * </pre>
       *
       * <code>int32 iterations = 1;</code>
       * @return The iterations.
       */
      @java.lang.Override
      public int getIterations() {
        return instance.getIterations();
      }
      /**
       * <pre>
       * The number of times to repeat the Marquee animation. Set to -1 to repeat
       * indefinitely. Defaults to repeat indefinitely.
       * </pre>
       *
       * <code>int32 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 of times to repeat the Marquee animation. Set to -1 to repeat
       * indefinitely. Defaults to repeat indefinitely.
       * </pre>
       *
       * <code>int32 iterations = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearIterations() {
        copyOnWrite();
        instance.clearIterations();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.MarqueeParameters)
    }
    @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.proto.LayoutElementProto.MarqueeParameters();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "optionalIterations_",
              "optionalIterationsCase_",
            };
            java.lang.String info =
                "\u0000\u0001\u0001\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u00017\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.proto.LayoutElementProto.MarqueeParameters> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters>(
                        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.proto.MarqueeParameters)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters DEFAULT_INSTANCE;
    static {
      MarqueeParameters defaultInstance = new MarqueeParameters();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        MarqueeParameters.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * Whether the Text excludes padding specified by the font, i.e. extra top and
     * bottom padding above the normal ascent and descent. The default is false.
     * </pre>
     *
     * <code>bool exclude_font_padding = 1;</code>
     * @return The excludeFontPadding.
     */
    boolean getExcludeFontPadding();
  }
  /**
   * <pre>
   * An Android platform specific text style configuration options for styling and
   * compatibility.
   * Note that from 1.3 version this field is ignored and defaults to excluded
   * font padding.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.AndroidTextStyle}
   */
  public  static final class AndroidTextStyle extends
      com.google.protobuf.GeneratedMessageLite<
          AndroidTextStyle, AndroidTextStyle.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.AndroidTextStyle)
      AndroidTextStyleOrBuilder {
    private AndroidTextStyle() {
    }
    public static final int EXCLUDE_FONT_PADDING_FIELD_NUMBER = 1;
    private boolean excludeFontPadding_;
    /**
     * <pre>
     * Whether the Text excludes padding specified by the font, i.e. extra top and
     * bottom padding above the normal ascent and descent. The default is false.
     * </pre>
     *
     * <code>bool exclude_font_padding = 1;</code>
     * @return The excludeFontPadding.
     */
    @java.lang.Override
    public boolean getExcludeFontPadding() {
      return excludeFontPadding_;
    }
    /**
     * <pre>
     * Whether the Text excludes padding specified by the font, i.e. extra top and
     * bottom padding above the normal ascent and descent. The default is false.
     * </pre>
     *
     * <code>bool exclude_font_padding = 1;</code>
     * @param value The excludeFontPadding to set.
     */
    private void setExcludeFontPadding(boolean value) {
      
      excludeFontPadding_ = value;
    }
    /**
     * <pre>
     * Whether the Text excludes padding specified by the font, i.e. extra top and
     * bottom padding above the normal ascent and descent. The default is false.
     * </pre>
     *
     * <code>bool exclude_font_padding = 1;</code>
     */
    private void clearExcludeFontPadding() {

      excludeFontPadding_ = false;
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle 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.proto.LayoutElementProto.AndroidTextStyle 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.proto.LayoutElementProto.AndroidTextStyle 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.proto.LayoutElementProto.AndroidTextStyle parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle 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.proto.LayoutElementProto.AndroidTextStyle parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle 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.proto.LayoutElementProto.AndroidTextStyle parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle 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.proto.LayoutElementProto.AndroidTextStyle parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle 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.proto.LayoutElementProto.AndroidTextStyle prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * An Android platform specific text style configuration options for styling and
     * compatibility.
     * Note that from 1.3 version this field is ignored and defaults to excluded
     * font padding.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.AndroidTextStyle}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.AndroidTextStyle)
        androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyleOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Whether the Text excludes padding specified by the font, i.e. extra top and
       * bottom padding above the normal ascent and descent. The default is false.
       * </pre>
       *
       * <code>bool exclude_font_padding = 1;</code>
       * @return The excludeFontPadding.
       */
      @java.lang.Override
      public boolean getExcludeFontPadding() {
        return instance.getExcludeFontPadding();
      }
      /**
       * <pre>
       * Whether the Text excludes padding specified by the font, i.e. extra top and
       * bottom padding above the normal ascent and descent. The default is false.
       * </pre>
       *
       * <code>bool exclude_font_padding = 1;</code>
       * @param value The excludeFontPadding to set.
       * @return This builder for chaining.
       */
      public Builder setExcludeFontPadding(boolean value) {
        copyOnWrite();
        instance.setExcludeFontPadding(value);
        return this;
      }
      /**
       * <pre>
       * Whether the Text excludes padding specified by the font, i.e. extra top and
       * bottom padding above the normal ascent and descent. The default is false.
       * </pre>
       *
       * <code>bool exclude_font_padding = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearExcludeFontPadding() {
        copyOnWrite();
        instance.clearExcludeFontPadding();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.AndroidTextStyle)
    }
    @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.proto.LayoutElementProto.AndroidTextStyle();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "excludeFontPadding_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u0007";
            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.proto.LayoutElementProto.AndroidTextStyle> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle>(
                        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.proto.AndroidTextStyle)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle DEFAULT_INSTANCE;
    static {
      AndroidTextStyle defaultInstance = new AndroidTextStyle();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        AndroidTextStyle.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The text to render.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicText(StringLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     * @return Whether the text field is set.
     */
    boolean hasText();
    /**
     * <pre>
     * The text to render.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicText(StringLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     * @return The text.
     */
    androidx.wear.protolayout.proto.TypesProto.StringProp getText();

    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     * @return Whether the fontStyle field is set.
     */
    boolean hasFontStyle();
    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     * @return The fontStyle.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.FontStyle getFontStyle();

    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
     * @return Whether the modifiers field is set.
     */
    boolean hasModifiers();
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
     * @return The modifiers.
     */
    androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers();

    /**
     * <pre>
     * The maximum number of lines that can be represented by the Text element.
     * If not defined, the Text element will be treated as a single-line element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 4;</code>
     * @return Whether the maxLines field is set.
     */
    boolean hasMaxLines();
    /**
     * <pre>
     * The maximum number of lines that can be represented by the Text element.
     * If not defined, the Text element will be treated as a single-line element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 4;</code>
     * @return The maxLines.
     */
    androidx.wear.protolayout.proto.TypesProto.Int32Prop getMaxLines();

    /**
     * <pre>
     * Alignment of the text within its bounds. Note that a Text element will size
     * itself to wrap its contents, so this option is meaningless for single-line
     * text (for that, use alignment of the outer container). For multi-line text,
     * however, this will set the alignment of lines relative to the Text element
     * bounds. If not defined, defaults to TEXT_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextAlignmentProp multiline_alignment = 5;</code>
     * @return Whether the multilineAlignment field is set.
     */
    boolean hasMultilineAlignment();
    /**
     * <pre>
     * Alignment of the text within its bounds. Note that a Text element will size
     * itself to wrap its contents, so this option is meaningless for single-line
     * text (for that, use alignment of the outer container). For multi-line text,
     * however, this will set the alignment of lines relative to the Text element
     * bounds. If not defined, defaults to TEXT_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextAlignmentProp multiline_alignment = 5;</code>
     * @return The multilineAlignment.
     */
    androidx.wear.protolayout.proto.AlignmentProto.TextAlignmentProp getMultilineAlignment();

    /**
     * <pre>
     * How to handle text which overflows the bound of the Text element.
     * A Text element will grow as large as possible inside its parent container
     * (while still respecting max_lines); if it cannot grow large  enough to
     * render all of its text, the text which cannot fit inside its container will
     * be truncated. If not defined, defaults to TEXT_OVERFLOW_TRUNCATE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 6;</code>
     * @return Whether the overflow field is set.
     */
    boolean hasOverflow();
    /**
     * <pre>
     * How to handle text which overflows the bound of the Text element.
     * A Text element will grow as large as possible inside its parent container
     * (while still respecting max_lines); if it cannot grow large  enough to
     * render all of its text, the text which cannot fit inside its container will
     * be truncated. If not defined, defaults to TEXT_OVERFLOW_TRUNCATE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 6;</code>
     * @return The overflow.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp getOverflow();

    /**
     * <pre>
     * Parameters for Marquee animation. Only applies when overflow is
     * TEXT_OVERFLOW_MARQUEE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 9;</code>
     * @return Whether the marqueeParameters field is set.
     */
    boolean hasMarqueeParameters();
    /**
     * <pre>
     * Parameters for Marquee animation. Only applies when overflow is
     * TEXT_OVERFLOW_MARQUEE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 9;</code>
     * @return The marqueeParameters.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters getMarqueeParameters();

    /**
     * <pre>
     * The explicit height between lines of text. This is equivalent to the
     * vertical distance between subsequent baselines. If not specified, defaults
     * the font's recommended interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
     * @return Whether the lineHeight field is set.
     */
    boolean hasLineHeight();
    /**
     * <pre>
     * The explicit height between lines of text. This is equivalent to the
     * vertical distance between subsequent baselines. If not specified, defaults
     * the font's recommended interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
     * @return The lineHeight.
     */
    androidx.wear.protolayout.proto.DimensionProto.SpProp getLineHeight();

    /**
     * <pre>
     * An Android platform specific text style configuration options for styling
     * and compatibility.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 8;</code>
     * @return Whether the androidTextStyle field is set.
     */
    boolean hasAndroidTextStyle();
    /**
     * <pre>
     * An Android platform specific text style configuration options for styling
     * and compatibility.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 8;</code>
     * @return The androidTextStyle.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle getAndroidTextStyle();
  }
  /**
   * <pre>
   * A text string.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.Text}
   */
  public  static final class Text extends
      com.google.protobuf.GeneratedMessageLite<
          Text, Text.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.Text)
      TextOrBuilder {
    private Text() {
    }
    public static final int TEXT_FIELD_NUMBER = 1;
    private androidx.wear.protolayout.proto.TypesProto.StringProp text_;
    /**
     * <pre>
     * The text to render.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicText(StringLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     */
    @java.lang.Override
    public boolean hasText() {
      return text_ != null;
    }
    /**
     * <pre>
     * The text to render.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicText(StringLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.TypesProto.StringProp getText() {
      return text_ == null ? androidx.wear.protolayout.proto.TypesProto.StringProp.getDefaultInstance() : text_;
    }
    /**
     * <pre>
     * The text to render.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicText(StringLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     */
    private void setText(androidx.wear.protolayout.proto.TypesProto.StringProp value) {
      value.getClass();
  text_ = value;

      }
    /**
     * <pre>
     * The text to render.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicText(StringLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeText(androidx.wear.protolayout.proto.TypesProto.StringProp value) {
      value.getClass();
  if (text_ != null &&
          text_ != androidx.wear.protolayout.proto.TypesProto.StringProp.getDefaultInstance()) {
        text_ =
          androidx.wear.protolayout.proto.TypesProto.StringProp.newBuilder(text_).mergeFrom(value).buildPartial();
      } else {
        text_ = value;
      }

    }
    /**
     * <pre>
     * The text to render.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicText(StringLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     */
    private void clearText() {  text_ = null;

    }

    public static final int FONT_STYLE_FIELD_NUMBER = 2;
    private androidx.wear.protolayout.proto.LayoutElementProto.FontStyle fontStyle_;
    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     */
    @java.lang.Override
    public boolean hasFontStyle() {
      return fontStyle_ != null;
    }
    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.FontStyle getFontStyle() {
      return fontStyle_ == null ? androidx.wear.protolayout.proto.LayoutElementProto.FontStyle.getDefaultInstance() : fontStyle_;
    }
    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     */
    private void setFontStyle(androidx.wear.protolayout.proto.LayoutElementProto.FontStyle value) {
      value.getClass();
  fontStyle_ = value;

      }
    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeFontStyle(androidx.wear.protolayout.proto.LayoutElementProto.FontStyle value) {
      value.getClass();
  if (fontStyle_ != null &&
          fontStyle_ != androidx.wear.protolayout.proto.LayoutElementProto.FontStyle.getDefaultInstance()) {
        fontStyle_ =
          androidx.wear.protolayout.proto.LayoutElementProto.FontStyle.newBuilder(fontStyle_).mergeFrom(value).buildPartial();
      } else {
        fontStyle_ = value;
      }

    }
    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     */
    private void clearFontStyle() {  fontStyle_ = null;

    }

    public static final int MODIFIERS_FIELD_NUMBER = 3;
    private androidx.wear.protolayout.proto.ModifiersProto.Modifiers modifiers_;
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
     */
    @java.lang.Override
    public boolean hasModifiers() {
      return modifiers_ != null;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers() {
      return modifiers_ == null ? androidx.wear.protolayout.proto.ModifiersProto.Modifiers.getDefaultInstance() : modifiers_;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
     */
    private void setModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
      value.getClass();
  modifiers_ = value;

      }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
      value.getClass();
  if (modifiers_ != null &&
          modifiers_ != androidx.wear.protolayout.proto.ModifiersProto.Modifiers.getDefaultInstance()) {
        modifiers_ =
          androidx.wear.protolayout.proto.ModifiersProto.Modifiers.newBuilder(modifiers_).mergeFrom(value).buildPartial();
      } else {
        modifiers_ = value;
      }

    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
     */
    private void clearModifiers() {  modifiers_ = null;

    }

    public static final int MAX_LINES_FIELD_NUMBER = 4;
    private androidx.wear.protolayout.proto.TypesProto.Int32Prop maxLines_;
    /**
     * <pre>
     * The maximum number of lines that can be represented by the Text element.
     * If not defined, the Text element will be treated as a single-line element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 4;</code>
     */
    @java.lang.Override
    public boolean hasMaxLines() {
      return maxLines_ != null;
    }
    /**
     * <pre>
     * The maximum number of lines that can be represented by the Text element.
     * If not defined, the Text element will be treated as a single-line element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 4;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.TypesProto.Int32Prop getMaxLines() {
      return maxLines_ == null ? androidx.wear.protolayout.proto.TypesProto.Int32Prop.getDefaultInstance() : maxLines_;
    }
    /**
     * <pre>
     * The maximum number of lines that can be represented by the Text element.
     * If not defined, the Text element will be treated as a single-line element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 4;</code>
     */
    private void setMaxLines(androidx.wear.protolayout.proto.TypesProto.Int32Prop value) {
      value.getClass();
  maxLines_ = value;

      }
    /**
     * <pre>
     * The maximum number of lines that can be represented by the Text element.
     * If not defined, the Text element will be treated as a single-line element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 4;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeMaxLines(androidx.wear.protolayout.proto.TypesProto.Int32Prop value) {
      value.getClass();
  if (maxLines_ != null &&
          maxLines_ != androidx.wear.protolayout.proto.TypesProto.Int32Prop.getDefaultInstance()) {
        maxLines_ =
          androidx.wear.protolayout.proto.TypesProto.Int32Prop.newBuilder(maxLines_).mergeFrom(value).buildPartial();
      } else {
        maxLines_ = value;
      }

    }
    /**
     * <pre>
     * The maximum number of lines that can be represented by the Text element.
     * If not defined, the Text element will be treated as a single-line element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 4;</code>
     */
    private void clearMaxLines() {  maxLines_ = null;

    }

    public static final int MULTILINE_ALIGNMENT_FIELD_NUMBER = 5;
    private androidx.wear.protolayout.proto.AlignmentProto.TextAlignmentProp multilineAlignment_;
    /**
     * <pre>
     * Alignment of the text within its bounds. Note that a Text element will size
     * itself to wrap its contents, so this option is meaningless for single-line
     * text (for that, use alignment of the outer container). For multi-line text,
     * however, this will set the alignment of lines relative to the Text element
     * bounds. If not defined, defaults to TEXT_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextAlignmentProp multiline_alignment = 5;</code>
     */
    @java.lang.Override
    public boolean hasMultilineAlignment() {
      return multilineAlignment_ != null;
    }
    /**
     * <pre>
     * Alignment of the text within its bounds. Note that a Text element will size
     * itself to wrap its contents, so this option is meaningless for single-line
     * text (for that, use alignment of the outer container). For multi-line text,
     * however, this will set the alignment of lines relative to the Text element
     * bounds. If not defined, defaults to TEXT_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextAlignmentProp multiline_alignment = 5;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.AlignmentProto.TextAlignmentProp getMultilineAlignment() {
      return multilineAlignment_ == null ? androidx.wear.protolayout.proto.AlignmentProto.TextAlignmentProp.getDefaultInstance() : multilineAlignment_;
    }
    /**
     * <pre>
     * Alignment of the text within its bounds. Note that a Text element will size
     * itself to wrap its contents, so this option is meaningless for single-line
     * text (for that, use alignment of the outer container). For multi-line text,
     * however, this will set the alignment of lines relative to the Text element
     * bounds. If not defined, defaults to TEXT_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextAlignmentProp multiline_alignment = 5;</code>
     */
    private void setMultilineAlignment(androidx.wear.protolayout.proto.AlignmentProto.TextAlignmentProp value) {
      value.getClass();
  multilineAlignment_ = value;

      }
    /**
     * <pre>
     * Alignment of the text within its bounds. Note that a Text element will size
     * itself to wrap its contents, so this option is meaningless for single-line
     * text (for that, use alignment of the outer container). For multi-line text,
     * however, this will set the alignment of lines relative to the Text element
     * bounds. If not defined, defaults to TEXT_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextAlignmentProp multiline_alignment = 5;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeMultilineAlignment(androidx.wear.protolayout.proto.AlignmentProto.TextAlignmentProp value) {
      value.getClass();
  if (multilineAlignment_ != null &&
          multilineAlignment_ != androidx.wear.protolayout.proto.AlignmentProto.TextAlignmentProp.getDefaultInstance()) {
        multilineAlignment_ =
          androidx.wear.protolayout.proto.AlignmentProto.TextAlignmentProp.newBuilder(multilineAlignment_).mergeFrom(value).buildPartial();
      } else {
        multilineAlignment_ = value;
      }

    }
    /**
     * <pre>
     * Alignment of the text within its bounds. Note that a Text element will size
     * itself to wrap its contents, so this option is meaningless for single-line
     * text (for that, use alignment of the outer container). For multi-line text,
     * however, this will set the alignment of lines relative to the Text element
     * bounds. If not defined, defaults to TEXT_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextAlignmentProp multiline_alignment = 5;</code>
     */
    private void clearMultilineAlignment() {  multilineAlignment_ = null;

    }

    public static final int OVERFLOW_FIELD_NUMBER = 6;
    private androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp overflow_;
    /**
     * <pre>
     * How to handle text which overflows the bound of the Text element.
     * A Text element will grow as large as possible inside its parent container
     * (while still respecting max_lines); if it cannot grow large  enough to
     * render all of its text, the text which cannot fit inside its container will
     * be truncated. If not defined, defaults to TEXT_OVERFLOW_TRUNCATE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 6;</code>
     */
    @java.lang.Override
    public boolean hasOverflow() {
      return overflow_ != null;
    }
    /**
     * <pre>
     * How to handle text which overflows the bound of the Text element.
     * A Text element will grow as large as possible inside its parent container
     * (while still respecting max_lines); if it cannot grow large  enough to
     * render all of its text, the text which cannot fit inside its container will
     * be truncated. If not defined, defaults to TEXT_OVERFLOW_TRUNCATE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 6;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp getOverflow() {
      return overflow_ == null ? androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp.getDefaultInstance() : overflow_;
    }
    /**
     * <pre>
     * How to handle text which overflows the bound of the Text element.
     * A Text element will grow as large as possible inside its parent container
     * (while still respecting max_lines); if it cannot grow large  enough to
     * render all of its text, the text which cannot fit inside its container will
     * be truncated. If not defined, defaults to TEXT_OVERFLOW_TRUNCATE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 6;</code>
     */
    private void setOverflow(androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp value) {
      value.getClass();
  overflow_ = value;

      }
    /**
     * <pre>
     * How to handle text which overflows the bound of the Text element.
     * A Text element will grow as large as possible inside its parent container
     * (while still respecting max_lines); if it cannot grow large  enough to
     * render all of its text, the text which cannot fit inside its container will
     * be truncated. If not defined, defaults to TEXT_OVERFLOW_TRUNCATE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 6;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeOverflow(androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp value) {
      value.getClass();
  if (overflow_ != null &&
          overflow_ != androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp.getDefaultInstance()) {
        overflow_ =
          androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp.newBuilder(overflow_).mergeFrom(value).buildPartial();
      } else {
        overflow_ = value;
      }

    }
    /**
     * <pre>
     * How to handle text which overflows the bound of the Text element.
     * A Text element will grow as large as possible inside its parent container
     * (while still respecting max_lines); if it cannot grow large  enough to
     * render all of its text, the text which cannot fit inside its container will
     * be truncated. If not defined, defaults to TEXT_OVERFLOW_TRUNCATE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 6;</code>
     */
    private void clearOverflow() {  overflow_ = null;

    }

    public static final int MARQUEE_PARAMETERS_FIELD_NUMBER = 9;
    private androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters marqueeParameters_;
    /**
     * <pre>
     * Parameters for Marquee animation. Only applies when overflow is
     * TEXT_OVERFLOW_MARQUEE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 9;</code>
     */
    @java.lang.Override
    public boolean hasMarqueeParameters() {
      return marqueeParameters_ != null;
    }
    /**
     * <pre>
     * Parameters for Marquee animation. Only applies when overflow is
     * TEXT_OVERFLOW_MARQUEE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 9;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters getMarqueeParameters() {
      return marqueeParameters_ == null ? androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters.getDefaultInstance() : marqueeParameters_;
    }
    /**
     * <pre>
     * Parameters for Marquee animation. Only applies when overflow is
     * TEXT_OVERFLOW_MARQUEE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 9;</code>
     */
    private void setMarqueeParameters(androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters value) {
      value.getClass();
  marqueeParameters_ = value;

      }
    /**
     * <pre>
     * Parameters for Marquee animation. Only applies when overflow is
     * TEXT_OVERFLOW_MARQUEE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 9;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeMarqueeParameters(androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters value) {
      value.getClass();
  if (marqueeParameters_ != null &&
          marqueeParameters_ != androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters.getDefaultInstance()) {
        marqueeParameters_ =
          androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters.newBuilder(marqueeParameters_).mergeFrom(value).buildPartial();
      } else {
        marqueeParameters_ = value;
      }

    }
    /**
     * <pre>
     * Parameters for Marquee animation. Only applies when overflow is
     * TEXT_OVERFLOW_MARQUEE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 9;</code>
     */
    private void clearMarqueeParameters() {  marqueeParameters_ = null;

    }

    public static final int LINE_HEIGHT_FIELD_NUMBER = 7;
    private androidx.wear.protolayout.proto.DimensionProto.SpProp lineHeight_;
    /**
     * <pre>
     * The explicit height between lines of text. This is equivalent to the
     * vertical distance between subsequent baselines. If not specified, defaults
     * the font's recommended interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
     */
    @java.lang.Override
    public boolean hasLineHeight() {
      return lineHeight_ != null;
    }
    /**
     * <pre>
     * The explicit height between lines of text. This is equivalent to the
     * vertical distance between subsequent baselines. If not specified, defaults
     * the font's recommended interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.SpProp getLineHeight() {
      return lineHeight_ == null ? androidx.wear.protolayout.proto.DimensionProto.SpProp.getDefaultInstance() : lineHeight_;
    }
    /**
     * <pre>
     * The explicit height between lines of text. This is equivalent to the
     * vertical distance between subsequent baselines. If not specified, defaults
     * the font's recommended interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
     */
    private void setLineHeight(androidx.wear.protolayout.proto.DimensionProto.SpProp value) {
      value.getClass();
  lineHeight_ = value;

      }
    /**
     * <pre>
     * The explicit height between lines of text. This is equivalent to the
     * vertical distance between subsequent baselines. If not specified, defaults
     * the font's recommended interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeLineHeight(androidx.wear.protolayout.proto.DimensionProto.SpProp value) {
      value.getClass();
  if (lineHeight_ != null &&
          lineHeight_ != androidx.wear.protolayout.proto.DimensionProto.SpProp.getDefaultInstance()) {
        lineHeight_ =
          androidx.wear.protolayout.proto.DimensionProto.SpProp.newBuilder(lineHeight_).mergeFrom(value).buildPartial();
      } else {
        lineHeight_ = value;
      }

    }
    /**
     * <pre>
     * The explicit height between lines of text. This is equivalent to the
     * vertical distance between subsequent baselines. If not specified, defaults
     * the font's recommended interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
     */
    private void clearLineHeight() {  lineHeight_ = null;

    }

    public static final int ANDROID_TEXT_STYLE_FIELD_NUMBER = 8;
    private androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle androidTextStyle_;
    /**
     * <pre>
     * An Android platform specific text style configuration options for styling
     * and compatibility.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 8;</code>
     */
    @java.lang.Override
    public boolean hasAndroidTextStyle() {
      return androidTextStyle_ != null;
    }
    /**
     * <pre>
     * An Android platform specific text style configuration options for styling
     * and compatibility.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 8;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle getAndroidTextStyle() {
      return androidTextStyle_ == null ? androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle.getDefaultInstance() : androidTextStyle_;
    }
    /**
     * <pre>
     * An Android platform specific text style configuration options for styling
     * and compatibility.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 8;</code>
     */
    private void setAndroidTextStyle(androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle value) {
      value.getClass();
  androidTextStyle_ = value;

      }
    /**
     * <pre>
     * An Android platform specific text style configuration options for styling
     * and compatibility.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 8;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeAndroidTextStyle(androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle value) {
      value.getClass();
  if (androidTextStyle_ != null &&
          androidTextStyle_ != androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle.getDefaultInstance()) {
        androidTextStyle_ =
          androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle.newBuilder(androidTextStyle_).mergeFrom(value).buildPartial();
      } else {
        androidTextStyle_ = value;
      }

    }
    /**
     * <pre>
     * An Android platform specific text style configuration options for styling
     * and compatibility.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 8;</code>
     */
    private void clearAndroidTextStyle() {  androidTextStyle_ = null;

    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.Text parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Text 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.proto.LayoutElementProto.Text 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.proto.LayoutElementProto.Text 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.proto.LayoutElementProto.Text parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Text 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.proto.LayoutElementProto.Text parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Text 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.proto.LayoutElementProto.Text parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Text 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.proto.LayoutElementProto.Text parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Text 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.proto.LayoutElementProto.Text prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * A text string.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.Text}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.Text, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.Text)
        androidx.wear.protolayout.proto.LayoutElementProto.TextOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.Text.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The text to render.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicText(StringLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
       */
      @java.lang.Override
      public boolean hasText() {
        return instance.hasText();
      }
      /**
       * <pre>
       * The text to render.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicText(StringLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.TypesProto.StringProp getText() {
        return instance.getText();
      }
      /**
       * <pre>
       * The text to render.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicText(StringLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
       */
      public Builder setText(androidx.wear.protolayout.proto.TypesProto.StringProp value) {
        copyOnWrite();
        instance.setText(value);
        return this;
        }
      /**
       * <pre>
       * The text to render.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicText(StringLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
       */
      public Builder setText(
          androidx.wear.protolayout.proto.TypesProto.StringProp.Builder builderForValue) {
        copyOnWrite();
        instance.setText(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The text to render.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicText(StringLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
       */
      public Builder mergeText(androidx.wear.protolayout.proto.TypesProto.StringProp value) {
        copyOnWrite();
        instance.mergeText(value);
        return this;
      }
      /**
       * <pre>
       * The text to render.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicText(StringLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
       */
      public Builder clearText() {  copyOnWrite();
        instance.clearText();
        return this;
      }

      /**
       * <pre>
       * The style of font to use (size, bold etc). If not specified, defaults to
       * the platform's default body font.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
       */
      @java.lang.Override
      public boolean hasFontStyle() {
        return instance.hasFontStyle();
      }
      /**
       * <pre>
       * The style of font to use (size, bold etc). If not specified, defaults to
       * the platform's default body font.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.FontStyle getFontStyle() {
        return instance.getFontStyle();
      }
      /**
       * <pre>
       * The style of font to use (size, bold etc). If not specified, defaults to
       * the platform's default body font.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
       */
      public Builder setFontStyle(androidx.wear.protolayout.proto.LayoutElementProto.FontStyle value) {
        copyOnWrite();
        instance.setFontStyle(value);
        return this;
        }
      /**
       * <pre>
       * The style of font to use (size, bold etc). If not specified, defaults to
       * the platform's default body font.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
       */
      public Builder setFontStyle(
          androidx.wear.protolayout.proto.LayoutElementProto.FontStyle.Builder builderForValue) {
        copyOnWrite();
        instance.setFontStyle(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The style of font to use (size, bold etc). If not specified, defaults to
       * the platform's default body font.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
       */
      public Builder mergeFontStyle(androidx.wear.protolayout.proto.LayoutElementProto.FontStyle value) {
        copyOnWrite();
        instance.mergeFontStyle(value);
        return this;
      }
      /**
       * <pre>
       * The style of font to use (size, bold etc). If not specified, defaults to
       * the platform's default body font.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
       */
      public Builder clearFontStyle() {  copyOnWrite();
        instance.clearFontStyle();
        return this;
      }

      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
       */
      @java.lang.Override
      public boolean hasModifiers() {
        return instance.hasModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers() {
        return instance.getModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
       */
      public Builder setModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
        copyOnWrite();
        instance.setModifiers(value);
        return this;
        }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
       */
      public Builder setModifiers(
          androidx.wear.protolayout.proto.ModifiersProto.Modifiers.Builder builderForValue) {
        copyOnWrite();
        instance.setModifiers(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
       */
      public Builder mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
        copyOnWrite();
        instance.mergeModifiers(value);
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
       */
      public Builder clearModifiers() {  copyOnWrite();
        instance.clearModifiers();
        return this;
      }

      /**
       * <pre>
       * The maximum number of lines that can be represented by the Text element.
       * If not defined, the Text element will be treated as a single-line element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 4;</code>
       */
      @java.lang.Override
      public boolean hasMaxLines() {
        return instance.hasMaxLines();
      }
      /**
       * <pre>
       * The maximum number of lines that can be represented by the Text element.
       * If not defined, the Text element will be treated as a single-line element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 4;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.TypesProto.Int32Prop getMaxLines() {
        return instance.getMaxLines();
      }
      /**
       * <pre>
       * The maximum number of lines that can be represented by the Text element.
       * If not defined, the Text element will be treated as a single-line element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 4;</code>
       */
      public Builder setMaxLines(androidx.wear.protolayout.proto.TypesProto.Int32Prop value) {
        copyOnWrite();
        instance.setMaxLines(value);
        return this;
        }
      /**
       * <pre>
       * The maximum number of lines that can be represented by the Text element.
       * If not defined, the Text element will be treated as a single-line element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 4;</code>
       */
      public Builder setMaxLines(
          androidx.wear.protolayout.proto.TypesProto.Int32Prop.Builder builderForValue) {
        copyOnWrite();
        instance.setMaxLines(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The maximum number of lines that can be represented by the Text element.
       * If not defined, the Text element will be treated as a single-line element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 4;</code>
       */
      public Builder mergeMaxLines(androidx.wear.protolayout.proto.TypesProto.Int32Prop value) {
        copyOnWrite();
        instance.mergeMaxLines(value);
        return this;
      }
      /**
       * <pre>
       * The maximum number of lines that can be represented by the Text element.
       * If not defined, the Text element will be treated as a single-line element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 4;</code>
       */
      public Builder clearMaxLines() {  copyOnWrite();
        instance.clearMaxLines();
        return this;
      }

      /**
       * <pre>
       * Alignment of the text within its bounds. Note that a Text element will size
       * itself to wrap its contents, so this option is meaningless for single-line
       * text (for that, use alignment of the outer container). For multi-line text,
       * however, this will set the alignment of lines relative to the Text element
       * bounds. If not defined, defaults to TEXT_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextAlignmentProp multiline_alignment = 5;</code>
       */
      @java.lang.Override
      public boolean hasMultilineAlignment() {
        return instance.hasMultilineAlignment();
      }
      /**
       * <pre>
       * Alignment of the text within its bounds. Note that a Text element will size
       * itself to wrap its contents, so this option is meaningless for single-line
       * text (for that, use alignment of the outer container). For multi-line text,
       * however, this will set the alignment of lines relative to the Text element
       * bounds. If not defined, defaults to TEXT_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextAlignmentProp multiline_alignment = 5;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.AlignmentProto.TextAlignmentProp getMultilineAlignment() {
        return instance.getMultilineAlignment();
      }
      /**
       * <pre>
       * Alignment of the text within its bounds. Note that a Text element will size
       * itself to wrap its contents, so this option is meaningless for single-line
       * text (for that, use alignment of the outer container). For multi-line text,
       * however, this will set the alignment of lines relative to the Text element
       * bounds. If not defined, defaults to TEXT_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextAlignmentProp multiline_alignment = 5;</code>
       */
      public Builder setMultilineAlignment(androidx.wear.protolayout.proto.AlignmentProto.TextAlignmentProp value) {
        copyOnWrite();
        instance.setMultilineAlignment(value);
        return this;
        }
      /**
       * <pre>
       * Alignment of the text within its bounds. Note that a Text element will size
       * itself to wrap its contents, so this option is meaningless for single-line
       * text (for that, use alignment of the outer container). For multi-line text,
       * however, this will set the alignment of lines relative to the Text element
       * bounds. If not defined, defaults to TEXT_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextAlignmentProp multiline_alignment = 5;</code>
       */
      public Builder setMultilineAlignment(
          androidx.wear.protolayout.proto.AlignmentProto.TextAlignmentProp.Builder builderForValue) {
        copyOnWrite();
        instance.setMultilineAlignment(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Alignment of the text within its bounds. Note that a Text element will size
       * itself to wrap its contents, so this option is meaningless for single-line
       * text (for that, use alignment of the outer container). For multi-line text,
       * however, this will set the alignment of lines relative to the Text element
       * bounds. If not defined, defaults to TEXT_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextAlignmentProp multiline_alignment = 5;</code>
       */
      public Builder mergeMultilineAlignment(androidx.wear.protolayout.proto.AlignmentProto.TextAlignmentProp value) {
        copyOnWrite();
        instance.mergeMultilineAlignment(value);
        return this;
      }
      /**
       * <pre>
       * Alignment of the text within its bounds. Note that a Text element will size
       * itself to wrap its contents, so this option is meaningless for single-line
       * text (for that, use alignment of the outer container). For multi-line text,
       * however, this will set the alignment of lines relative to the Text element
       * bounds. If not defined, defaults to TEXT_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextAlignmentProp multiline_alignment = 5;</code>
       */
      public Builder clearMultilineAlignment() {  copyOnWrite();
        instance.clearMultilineAlignment();
        return this;
      }

      /**
       * <pre>
       * How to handle text which overflows the bound of the Text element.
       * A Text element will grow as large as possible inside its parent container
       * (while still respecting max_lines); if it cannot grow large  enough to
       * render all of its text, the text which cannot fit inside its container will
       * be truncated. If not defined, defaults to TEXT_OVERFLOW_TRUNCATE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 6;</code>
       */
      @java.lang.Override
      public boolean hasOverflow() {
        return instance.hasOverflow();
      }
      /**
       * <pre>
       * How to handle text which overflows the bound of the Text element.
       * A Text element will grow as large as possible inside its parent container
       * (while still respecting max_lines); if it cannot grow large  enough to
       * render all of its text, the text which cannot fit inside its container will
       * be truncated. If not defined, defaults to TEXT_OVERFLOW_TRUNCATE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 6;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp getOverflow() {
        return instance.getOverflow();
      }
      /**
       * <pre>
       * How to handle text which overflows the bound of the Text element.
       * A Text element will grow as large as possible inside its parent container
       * (while still respecting max_lines); if it cannot grow large  enough to
       * render all of its text, the text which cannot fit inside its container will
       * be truncated. If not defined, defaults to TEXT_OVERFLOW_TRUNCATE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 6;</code>
       */
      public Builder setOverflow(androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp value) {
        copyOnWrite();
        instance.setOverflow(value);
        return this;
        }
      /**
       * <pre>
       * How to handle text which overflows the bound of the Text element.
       * A Text element will grow as large as possible inside its parent container
       * (while still respecting max_lines); if it cannot grow large  enough to
       * render all of its text, the text which cannot fit inside its container will
       * be truncated. If not defined, defaults to TEXT_OVERFLOW_TRUNCATE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 6;</code>
       */
      public Builder setOverflow(
          androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp.Builder builderForValue) {
        copyOnWrite();
        instance.setOverflow(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * How to handle text which overflows the bound of the Text element.
       * A Text element will grow as large as possible inside its parent container
       * (while still respecting max_lines); if it cannot grow large  enough to
       * render all of its text, the text which cannot fit inside its container will
       * be truncated. If not defined, defaults to TEXT_OVERFLOW_TRUNCATE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 6;</code>
       */
      public Builder mergeOverflow(androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp value) {
        copyOnWrite();
        instance.mergeOverflow(value);
        return this;
      }
      /**
       * <pre>
       * How to handle text which overflows the bound of the Text element.
       * A Text element will grow as large as possible inside its parent container
       * (while still respecting max_lines); if it cannot grow large  enough to
       * render all of its text, the text which cannot fit inside its container will
       * be truncated. If not defined, defaults to TEXT_OVERFLOW_TRUNCATE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 6;</code>
       */
      public Builder clearOverflow() {  copyOnWrite();
        instance.clearOverflow();
        return this;
      }

      /**
       * <pre>
       * Parameters for Marquee animation. Only applies when overflow is
       * TEXT_OVERFLOW_MARQUEE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 9;</code>
       */
      @java.lang.Override
      public boolean hasMarqueeParameters() {
        return instance.hasMarqueeParameters();
      }
      /**
       * <pre>
       * Parameters for Marquee animation. Only applies when overflow is
       * TEXT_OVERFLOW_MARQUEE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 9;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters getMarqueeParameters() {
        return instance.getMarqueeParameters();
      }
      /**
       * <pre>
       * Parameters for Marquee animation. Only applies when overflow is
       * TEXT_OVERFLOW_MARQUEE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 9;</code>
       */
      public Builder setMarqueeParameters(androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters value) {
        copyOnWrite();
        instance.setMarqueeParameters(value);
        return this;
        }
      /**
       * <pre>
       * Parameters for Marquee animation. Only applies when overflow is
       * TEXT_OVERFLOW_MARQUEE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 9;</code>
       */
      public Builder setMarqueeParameters(
          androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters.Builder builderForValue) {
        copyOnWrite();
        instance.setMarqueeParameters(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Parameters for Marquee animation. Only applies when overflow is
       * TEXT_OVERFLOW_MARQUEE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 9;</code>
       */
      public Builder mergeMarqueeParameters(androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters value) {
        copyOnWrite();
        instance.mergeMarqueeParameters(value);
        return this;
      }
      /**
       * <pre>
       * Parameters for Marquee animation. Only applies when overflow is
       * TEXT_OVERFLOW_MARQUEE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 9;</code>
       */
      public Builder clearMarqueeParameters() {  copyOnWrite();
        instance.clearMarqueeParameters();
        return this;
      }

      /**
       * <pre>
       * The explicit height between lines of text. This is equivalent to the
       * vertical distance between subsequent baselines. If not specified, defaults
       * the font's recommended interline spacing.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
       */
      @java.lang.Override
      public boolean hasLineHeight() {
        return instance.hasLineHeight();
      }
      /**
       * <pre>
       * The explicit height between lines of text. This is equivalent to the
       * vertical distance between subsequent baselines. If not specified, defaults
       * the font's recommended interline spacing.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.SpProp getLineHeight() {
        return instance.getLineHeight();
      }
      /**
       * <pre>
       * The explicit height between lines of text. This is equivalent to the
       * vertical distance between subsequent baselines. If not specified, defaults
       * the font's recommended interline spacing.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
       */
      public Builder setLineHeight(androidx.wear.protolayout.proto.DimensionProto.SpProp value) {
        copyOnWrite();
        instance.setLineHeight(value);
        return this;
        }
      /**
       * <pre>
       * The explicit height between lines of text. This is equivalent to the
       * vertical distance between subsequent baselines. If not specified, defaults
       * the font's recommended interline spacing.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
       */
      public Builder setLineHeight(
          androidx.wear.protolayout.proto.DimensionProto.SpProp.Builder builderForValue) {
        copyOnWrite();
        instance.setLineHeight(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The explicit height between lines of text. This is equivalent to the
       * vertical distance between subsequent baselines. If not specified, defaults
       * the font's recommended interline spacing.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
       */
      public Builder mergeLineHeight(androidx.wear.protolayout.proto.DimensionProto.SpProp value) {
        copyOnWrite();
        instance.mergeLineHeight(value);
        return this;
      }
      /**
       * <pre>
       * The explicit height between lines of text. This is equivalent to the
       * vertical distance between subsequent baselines. If not specified, defaults
       * the font's recommended interline spacing.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
       */
      public Builder clearLineHeight() {  copyOnWrite();
        instance.clearLineHeight();
        return this;
      }

      /**
       * <pre>
       * An Android platform specific text style configuration options for styling
       * and compatibility.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 8;</code>
       */
      @java.lang.Override
      public boolean hasAndroidTextStyle() {
        return instance.hasAndroidTextStyle();
      }
      /**
       * <pre>
       * An Android platform specific text style configuration options for styling
       * and compatibility.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 8;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle getAndroidTextStyle() {
        return instance.getAndroidTextStyle();
      }
      /**
       * <pre>
       * An Android platform specific text style configuration options for styling
       * and compatibility.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 8;</code>
       */
      public Builder setAndroidTextStyle(androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle value) {
        copyOnWrite();
        instance.setAndroidTextStyle(value);
        return this;
        }
      /**
       * <pre>
       * An Android platform specific text style configuration options for styling
       * and compatibility.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 8;</code>
       */
      public Builder setAndroidTextStyle(
          androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle.Builder builderForValue) {
        copyOnWrite();
        instance.setAndroidTextStyle(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * An Android platform specific text style configuration options for styling
       * and compatibility.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 8;</code>
       */
      public Builder mergeAndroidTextStyle(androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle value) {
        copyOnWrite();
        instance.mergeAndroidTextStyle(value);
        return this;
      }
      /**
       * <pre>
       * An Android platform specific text style configuration options for styling
       * and compatibility.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 8;</code>
       */
      public Builder clearAndroidTextStyle() {  copyOnWrite();
        instance.clearAndroidTextStyle();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.Text)
    }
    @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.proto.LayoutElementProto.Text();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "text_",
              "fontStyle_",
              "modifiers_",
              "maxLines_",
              "multilineAlignment_",
              "overflow_",
              "lineHeight_",
              "androidTextStyle_",
              "marqueeParameters_",
            };
            java.lang.String info =
                "\u0000\t\u0000\u0000\u0001\t\t\u0000\u0000\u0000\u0001\t\u0002\t\u0003\t\u0004\t" +
                "\u0005\t\u0006\t\u0007\t\b\t\t\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.proto.LayoutElementProto.Text> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.Text.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.Text>(
                        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.proto.Text)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.Text DEFAULT_INSTANCE;
    static {
      Text defaultInstance = new Text();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        Text.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.Text getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The value
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContentScaleMode value = 1;</code>
     * @return The enum numeric value on the wire for value.
     */
    int getValueValue();
    /**
     * <pre>
     * The value
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContentScaleMode value = 1;</code>
     * @return The value.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleMode getValue();
  }
  /**
   * <pre>
   * An extensible ContentScaleMode property.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.ContentScaleModeProp}
   */
  public  static final class ContentScaleModeProp extends
      com.google.protobuf.GeneratedMessageLite<
          ContentScaleModeProp, ContentScaleModeProp.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.ContentScaleModeProp)
      ContentScaleModePropOrBuilder {
    private ContentScaleModeProp() {
    }
    public static final int VALUE_FIELD_NUMBER = 1;
    private int value_;
    /**
     * <pre>
     * The value
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContentScaleMode value = 1;</code>
     * @return The enum numeric value on the wire for value.
     */
    @java.lang.Override
    public int getValueValue() {
      return value_;
    }
    /**
     * <pre>
     * The value
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContentScaleMode value = 1;</code>
     * @return The value.
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleMode getValue() {
      androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleMode result = androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleMode.forNumber(value_);
      return result == null ? androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleMode.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * The value
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContentScaleMode value = 1;</code>
     * @param value The enum numeric value on the wire for value to set.
     */
    private void setValueValue(int value) {
        value_ = value;
    }
    /**
     * <pre>
     * The value
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContentScaleMode value = 1;</code>
     * @param value The value to set.
     */
    private void setValue(androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleMode value) {
      value_ = value.getNumber();

    }
    /**
     * <pre>
     * The value
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContentScaleMode value = 1;</code>
     */
    private void clearValue() {

      value_ = 0;
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp 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.proto.LayoutElementProto.ContentScaleModeProp 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.proto.LayoutElementProto.ContentScaleModeProp 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.proto.LayoutElementProto.ContentScaleModeProp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp 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.proto.LayoutElementProto.ContentScaleModeProp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp 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.proto.LayoutElementProto.ContentScaleModeProp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp 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.proto.LayoutElementProto.ContentScaleModeProp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp 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.proto.LayoutElementProto.ContentScaleModeProp prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * An extensible ContentScaleMode property.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.ContentScaleModeProp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.ContentScaleModeProp)
        androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModePropOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The value
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContentScaleMode value = 1;</code>
       * @return The enum numeric value on the wire for value.
       */
      @java.lang.Override
      public int getValueValue() {
        return instance.getValueValue();
      }
      /**
       * <pre>
       * The value
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContentScaleMode value = 1;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValueValue(int value) {
        copyOnWrite();
        instance.setValueValue(value);
        return this;
      }
      /**
       * <pre>
       * The value
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContentScaleMode value = 1;</code>
       * @return The value.
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleMode getValue() {
        return instance.getValue();
      }
      /**
       * <pre>
       * The value
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContentScaleMode value = 1;</code>
       * @param value The enum numeric value on the wire for value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleMode value) {
        copyOnWrite();
        instance.setValue(value);
        return this;
      }
      /**
       * <pre>
       * The value
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContentScaleMode value = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        copyOnWrite();
        instance.clearValue();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.ContentScaleModeProp)
    }
    @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.proto.LayoutElementProto.ContentScaleModeProp();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "value_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\f";
            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.proto.LayoutElementProto.ContentScaleModeProp> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp>(
                        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.proto.ContentScaleModeProp)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp DEFAULT_INSTANCE;
    static {
      ContentScaleModeProp defaultInstance = new ContentScaleModeProp();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        ContentScaleModeProp.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The tint color to use. If specified, the image will be tinted, using
     * SRC_IN blending (that is, all color information will be stripped from the
     * target image, and only the alpha channel will be blended with the requested
     * color).
     *
     * Note that only Android image resources can be tinted; Inline images will
     * not be tinted, and this property will have no effect.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp tint = 1;</code>
     * @return Whether the tint field is set.
     */
    boolean hasTint();
    /**
     * <pre>
     * The tint color to use. If specified, the image will be tinted, using
     * SRC_IN blending (that is, all color information will be stripped from the
     * target image, and only the alpha channel will be blended with the requested
     * color).
     *
     * Note that only Android image resources can be tinted; Inline images will
     * not be tinted, and this property will have no effect.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp tint = 1;</code>
     * @return The tint.
     */
    androidx.wear.protolayout.proto.ColorProto.ColorProp getTint();
  }
  /**
   * <pre>
   * Filtering parameters used for images. This can be used to apply a color tint
   * to images.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.ColorFilter}
   */
  public  static final class ColorFilter extends
      com.google.protobuf.GeneratedMessageLite<
          ColorFilter, ColorFilter.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.ColorFilter)
      ColorFilterOrBuilder {
    private ColorFilter() {
    }
    public static final int TINT_FIELD_NUMBER = 1;
    private androidx.wear.protolayout.proto.ColorProto.ColorProp tint_;
    /**
     * <pre>
     * The tint color to use. If specified, the image will be tinted, using
     * SRC_IN blending (that is, all color information will be stripped from the
     * target image, and only the alpha channel will be blended with the requested
     * color).
     *
     * Note that only Android image resources can be tinted; Inline images will
     * not be tinted, and this property will have no effect.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp tint = 1;</code>
     */
    @java.lang.Override
    public boolean hasTint() {
      return tint_ != null;
    }
    /**
     * <pre>
     * The tint color to use. If specified, the image will be tinted, using
     * SRC_IN blending (that is, all color information will be stripped from the
     * target image, and only the alpha channel will be blended with the requested
     * color).
     *
     * Note that only Android image resources can be tinted; Inline images will
     * not be tinted, and this property will have no effect.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp tint = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.ColorProto.ColorProp getTint() {
      return tint_ == null ? androidx.wear.protolayout.proto.ColorProto.ColorProp.getDefaultInstance() : tint_;
    }
    /**
     * <pre>
     * The tint color to use. If specified, the image will be tinted, using
     * SRC_IN blending (that is, all color information will be stripped from the
     * target image, and only the alpha channel will be blended with the requested
     * color).
     *
     * Note that only Android image resources can be tinted; Inline images will
     * not be tinted, and this property will have no effect.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp tint = 1;</code>
     */
    private void setTint(androidx.wear.protolayout.proto.ColorProto.ColorProp value) {
      value.getClass();
  tint_ = value;

      }
    /**
     * <pre>
     * The tint color to use. If specified, the image will be tinted, using
     * SRC_IN blending (that is, all color information will be stripped from the
     * target image, and only the alpha channel will be blended with the requested
     * color).
     *
     * Note that only Android image resources can be tinted; Inline images will
     * not be tinted, and this property will have no effect.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp tint = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeTint(androidx.wear.protolayout.proto.ColorProto.ColorProp value) {
      value.getClass();
  if (tint_ != null &&
          tint_ != androidx.wear.protolayout.proto.ColorProto.ColorProp.getDefaultInstance()) {
        tint_ =
          androidx.wear.protolayout.proto.ColorProto.ColorProp.newBuilder(tint_).mergeFrom(value).buildPartial();
      } else {
        tint_ = value;
      }

    }
    /**
     * <pre>
     * The tint color to use. If specified, the image will be tinted, using
     * SRC_IN blending (that is, all color information will be stripped from the
     * target image, and only the alpha channel will be blended with the requested
     * color).
     *
     * Note that only Android image resources can be tinted; Inline images will
     * not be tinted, and this property will have no effect.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp tint = 1;</code>
     */
    private void clearTint() {  tint_ = null;

    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter 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.proto.LayoutElementProto.ColorFilter 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.proto.LayoutElementProto.ColorFilter 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.proto.LayoutElementProto.ColorFilter parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter 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.proto.LayoutElementProto.ColorFilter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter 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.proto.LayoutElementProto.ColorFilter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter 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.proto.LayoutElementProto.ColorFilter parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter 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.proto.LayoutElementProto.ColorFilter prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Filtering parameters used for images. This can be used to apply a color tint
     * to images.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.ColorFilter}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.ColorFilter)
        androidx.wear.protolayout.proto.LayoutElementProto.ColorFilterOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The tint color to use. If specified, the image will be tinted, using
       * SRC_IN blending (that is, all color information will be stripped from the
       * target image, and only the alpha channel will be blended with the requested
       * color).
       *
       * Note that only Android image resources can be tinted; Inline images will
       * not be tinted, and this property will have no effect.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorProp tint = 1;</code>
       */
      @java.lang.Override
      public boolean hasTint() {
        return instance.hasTint();
      }
      /**
       * <pre>
       * The tint color to use. If specified, the image will be tinted, using
       * SRC_IN blending (that is, all color information will be stripped from the
       * target image, and only the alpha channel will be blended with the requested
       * color).
       *
       * Note that only Android image resources can be tinted; Inline images will
       * not be tinted, and this property will have no effect.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorProp tint = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.ColorProto.ColorProp getTint() {
        return instance.getTint();
      }
      /**
       * <pre>
       * The tint color to use. If specified, the image will be tinted, using
       * SRC_IN blending (that is, all color information will be stripped from the
       * target image, and only the alpha channel will be blended with the requested
       * color).
       *
       * Note that only Android image resources can be tinted; Inline images will
       * not be tinted, and this property will have no effect.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorProp tint = 1;</code>
       */
      public Builder setTint(androidx.wear.protolayout.proto.ColorProto.ColorProp value) {
        copyOnWrite();
        instance.setTint(value);
        return this;
        }
      /**
       * <pre>
       * The tint color to use. If specified, the image will be tinted, using
       * SRC_IN blending (that is, all color information will be stripped from the
       * target image, and only the alpha channel will be blended with the requested
       * color).
       *
       * Note that only Android image resources can be tinted; Inline images will
       * not be tinted, and this property will have no effect.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorProp tint = 1;</code>
       */
      public Builder setTint(
          androidx.wear.protolayout.proto.ColorProto.ColorProp.Builder builderForValue) {
        copyOnWrite();
        instance.setTint(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The tint color to use. If specified, the image will be tinted, using
       * SRC_IN blending (that is, all color information will be stripped from the
       * target image, and only the alpha channel will be blended with the requested
       * color).
       *
       * Note that only Android image resources can be tinted; Inline images will
       * not be tinted, and this property will have no effect.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorProp tint = 1;</code>
       */
      public Builder mergeTint(androidx.wear.protolayout.proto.ColorProto.ColorProp value) {
        copyOnWrite();
        instance.mergeTint(value);
        return this;
      }
      /**
       * <pre>
       * The tint color to use. If specified, the image will be tinted, using
       * SRC_IN blending (that is, all color information will be stripped from the
       * target image, and only the alpha channel will be blended with the requested
       * color).
       *
       * Note that only Android image resources can be tinted; Inline images will
       * not be tinted, and this property will have no effect.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorProp tint = 1;</code>
       */
      public Builder clearTint() {  copyOnWrite();
        instance.clearTint();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.ColorFilter)
    }
    @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.proto.LayoutElementProto.ColorFilter();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "tint_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\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.proto.LayoutElementProto.ColorFilter> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter>(
                        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.proto.ColorFilter)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter DEFAULT_INSTANCE;
    static {
      ColorFilter defaultInstance = new ColorFilter();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        ColorFilter.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The resource_id of the image to render. This must exist in the supplied
     * resource bundle.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
     * @return Whether the resourceId field is set.
     */
    boolean hasResourceId();
    /**
     * <pre>
     * The resource_id of the image to render. This must exist in the supplied
     * resource bundle.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
     * @return The resourceId.
     */
    androidx.wear.protolayout.proto.TypesProto.StringProp getResourceId();

    /**
     * <pre>
     * The width of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ImageDimension width = 2;</code>
     * @return Whether the width field is set.
     */
    boolean hasWidth();
    /**
     * <pre>
     * The width of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ImageDimension width = 2;</code>
     * @return The width.
     */
    androidx.wear.protolayout.proto.DimensionProto.ImageDimension getWidth();

    /**
     * <pre>
     * The height of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ImageDimension height = 3;</code>
     * @return Whether the height field is set.
     */
    boolean hasHeight();
    /**
     * <pre>
     * The height of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ImageDimension height = 3;</code>
     * @return The height.
     */
    androidx.wear.protolayout.proto.DimensionProto.ImageDimension getHeight();

    /**
     * <pre>
     * How to scale the image resource inside the bounds specified by width/height
     * if its size does not match those bounds. Defaults to
     * CONTENT_SCALE_MODE_FIT.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContentScaleModeProp content_scale_mode = 4;</code>
     * @return Whether the contentScaleMode field is set.
     */
    boolean hasContentScaleMode();
    /**
     * <pre>
     * How to scale the image resource inside the bounds specified by width/height
     * if its size does not match those bounds. Defaults to
     * CONTENT_SCALE_MODE_FIT.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContentScaleModeProp content_scale_mode = 4;</code>
     * @return The contentScaleMode.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp getContentScaleMode();

    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     * @return Whether the modifiers field is set.
     */
    boolean hasModifiers();
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     * @return The modifiers.
     */
    androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers();

    /**
     * <pre>
     * Filtering parameters for this image. If not specified, defaults to no
     * filtering.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorFilter color_filter = 6;</code>
     * @return Whether the colorFilter field is set.
     */
    boolean hasColorFilter();
    /**
     * <pre>
     * Filtering parameters for this image. If not specified, defaults to no
     * filtering.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorFilter color_filter = 6;</code>
     * @return The colorFilter.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter getColorFilter();
  }
  /**
   * <pre>
   * An image.
   *
   * Images used in this element must exist in the resource bundle that
   * corresponds to this layout. Images must have their dimension specified, and
   * will be rendered at this width and height, regardless of their native
   * dimension.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.Image}
   */
  public  static final class Image extends
      com.google.protobuf.GeneratedMessageLite<
          Image, Image.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.Image)
      ImageOrBuilder {
    private Image() {
    }
    public static final int RESOURCE_ID_FIELD_NUMBER = 1;
    private androidx.wear.protolayout.proto.TypesProto.StringProp resourceId_;
    /**
     * <pre>
     * The resource_id of the image to render. This must exist in the supplied
     * resource bundle.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
     */
    @java.lang.Override
    public boolean hasResourceId() {
      return resourceId_ != null;
    }
    /**
     * <pre>
     * The resource_id of the image to render. This must exist in the supplied
     * resource bundle.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.TypesProto.StringProp getResourceId() {
      return resourceId_ == null ? androidx.wear.protolayout.proto.TypesProto.StringProp.getDefaultInstance() : resourceId_;
    }
    /**
     * <pre>
     * The resource_id of the image to render. This must exist in the supplied
     * resource bundle.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
     */
    private void setResourceId(androidx.wear.protolayout.proto.TypesProto.StringProp value) {
      value.getClass();
  resourceId_ = value;

      }
    /**
     * <pre>
     * The resource_id of the image to render. This must exist in the supplied
     * resource bundle.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeResourceId(androidx.wear.protolayout.proto.TypesProto.StringProp value) {
      value.getClass();
  if (resourceId_ != null &&
          resourceId_ != androidx.wear.protolayout.proto.TypesProto.StringProp.getDefaultInstance()) {
        resourceId_ =
          androidx.wear.protolayout.proto.TypesProto.StringProp.newBuilder(resourceId_).mergeFrom(value).buildPartial();
      } else {
        resourceId_ = value;
      }

    }
    /**
     * <pre>
     * The resource_id of the image to render. This must exist in the supplied
     * resource bundle.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
     */
    private void clearResourceId() {  resourceId_ = null;

    }

    public static final int WIDTH_FIELD_NUMBER = 2;
    private androidx.wear.protolayout.proto.DimensionProto.ImageDimension width_;
    /**
     * <pre>
     * The width of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ImageDimension width = 2;</code>
     */
    @java.lang.Override
    public boolean hasWidth() {
      return width_ != null;
    }
    /**
     * <pre>
     * The width of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ImageDimension width = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.ImageDimension getWidth() {
      return width_ == null ? androidx.wear.protolayout.proto.DimensionProto.ImageDimension.getDefaultInstance() : width_;
    }
    /**
     * <pre>
     * The width of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ImageDimension width = 2;</code>
     */
    private void setWidth(androidx.wear.protolayout.proto.DimensionProto.ImageDimension value) {
      value.getClass();
  width_ = value;

      }
    /**
     * <pre>
     * The width of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ImageDimension width = 2;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeWidth(androidx.wear.protolayout.proto.DimensionProto.ImageDimension value) {
      value.getClass();
  if (width_ != null &&
          width_ != androidx.wear.protolayout.proto.DimensionProto.ImageDimension.getDefaultInstance()) {
        width_ =
          androidx.wear.protolayout.proto.DimensionProto.ImageDimension.newBuilder(width_).mergeFrom(value).buildPartial();
      } else {
        width_ = value;
      }

    }
    /**
     * <pre>
     * The width of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ImageDimension width = 2;</code>
     */
    private void clearWidth() {  width_ = null;

    }

    public static final int HEIGHT_FIELD_NUMBER = 3;
    private androidx.wear.protolayout.proto.DimensionProto.ImageDimension height_;
    /**
     * <pre>
     * The height of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ImageDimension height = 3;</code>
     */
    @java.lang.Override
    public boolean hasHeight() {
      return height_ != null;
    }
    /**
     * <pre>
     * The height of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ImageDimension height = 3;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.ImageDimension getHeight() {
      return height_ == null ? androidx.wear.protolayout.proto.DimensionProto.ImageDimension.getDefaultInstance() : height_;
    }
    /**
     * <pre>
     * The height of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ImageDimension height = 3;</code>
     */
    private void setHeight(androidx.wear.protolayout.proto.DimensionProto.ImageDimension value) {
      value.getClass();
  height_ = value;

      }
    /**
     * <pre>
     * The height of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ImageDimension height = 3;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeHeight(androidx.wear.protolayout.proto.DimensionProto.ImageDimension value) {
      value.getClass();
  if (height_ != null &&
          height_ != androidx.wear.protolayout.proto.DimensionProto.ImageDimension.getDefaultInstance()) {
        height_ =
          androidx.wear.protolayout.proto.DimensionProto.ImageDimension.newBuilder(height_).mergeFrom(value).buildPartial();
      } else {
        height_ = value;
      }

    }
    /**
     * <pre>
     * The height of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ImageDimension height = 3;</code>
     */
    private void clearHeight() {  height_ = null;

    }

    public static final int CONTENT_SCALE_MODE_FIELD_NUMBER = 4;
    private androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp contentScaleMode_;
    /**
     * <pre>
     * How to scale the image resource inside the bounds specified by width/height
     * if its size does not match those bounds. Defaults to
     * CONTENT_SCALE_MODE_FIT.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContentScaleModeProp content_scale_mode = 4;</code>
     */
    @java.lang.Override
    public boolean hasContentScaleMode() {
      return contentScaleMode_ != null;
    }
    /**
     * <pre>
     * How to scale the image resource inside the bounds specified by width/height
     * if its size does not match those bounds. Defaults to
     * CONTENT_SCALE_MODE_FIT.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContentScaleModeProp content_scale_mode = 4;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp getContentScaleMode() {
      return contentScaleMode_ == null ? androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp.getDefaultInstance() : contentScaleMode_;
    }
    /**
     * <pre>
     * How to scale the image resource inside the bounds specified by width/height
     * if its size does not match those bounds. Defaults to
     * CONTENT_SCALE_MODE_FIT.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContentScaleModeProp content_scale_mode = 4;</code>
     */
    private void setContentScaleMode(androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp value) {
      value.getClass();
  contentScaleMode_ = value;

      }
    /**
     * <pre>
     * How to scale the image resource inside the bounds specified by width/height
     * if its size does not match those bounds. Defaults to
     * CONTENT_SCALE_MODE_FIT.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContentScaleModeProp content_scale_mode = 4;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeContentScaleMode(androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp value) {
      value.getClass();
  if (contentScaleMode_ != null &&
          contentScaleMode_ != androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp.getDefaultInstance()) {
        contentScaleMode_ =
          androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp.newBuilder(contentScaleMode_).mergeFrom(value).buildPartial();
      } else {
        contentScaleMode_ = value;
      }

    }
    /**
     * <pre>
     * How to scale the image resource inside the bounds specified by width/height
     * if its size does not match those bounds. Defaults to
     * CONTENT_SCALE_MODE_FIT.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContentScaleModeProp content_scale_mode = 4;</code>
     */
    private void clearContentScaleMode() {  contentScaleMode_ = null;

    }

    public static final int MODIFIERS_FIELD_NUMBER = 5;
    private androidx.wear.protolayout.proto.ModifiersProto.Modifiers modifiers_;
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     */
    @java.lang.Override
    public boolean hasModifiers() {
      return modifiers_ != null;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers() {
      return modifiers_ == null ? androidx.wear.protolayout.proto.ModifiersProto.Modifiers.getDefaultInstance() : modifiers_;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     */
    private void setModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
      value.getClass();
  modifiers_ = value;

      }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
      value.getClass();
  if (modifiers_ != null &&
          modifiers_ != androidx.wear.protolayout.proto.ModifiersProto.Modifiers.getDefaultInstance()) {
        modifiers_ =
          androidx.wear.protolayout.proto.ModifiersProto.Modifiers.newBuilder(modifiers_).mergeFrom(value).buildPartial();
      } else {
        modifiers_ = value;
      }

    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     */
    private void clearModifiers() {  modifiers_ = null;

    }

    public static final int COLOR_FILTER_FIELD_NUMBER = 6;
    private androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter colorFilter_;
    /**
     * <pre>
     * Filtering parameters for this image. If not specified, defaults to no
     * filtering.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorFilter color_filter = 6;</code>
     */
    @java.lang.Override
    public boolean hasColorFilter() {
      return colorFilter_ != null;
    }
    /**
     * <pre>
     * Filtering parameters for this image. If not specified, defaults to no
     * filtering.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorFilter color_filter = 6;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter getColorFilter() {
      return colorFilter_ == null ? androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter.getDefaultInstance() : colorFilter_;
    }
    /**
     * <pre>
     * Filtering parameters for this image. If not specified, defaults to no
     * filtering.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorFilter color_filter = 6;</code>
     */
    private void setColorFilter(androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter value) {
      value.getClass();
  colorFilter_ = value;

      }
    /**
     * <pre>
     * Filtering parameters for this image. If not specified, defaults to no
     * filtering.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorFilter color_filter = 6;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeColorFilter(androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter value) {
      value.getClass();
  if (colorFilter_ != null &&
          colorFilter_ != androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter.getDefaultInstance()) {
        colorFilter_ =
          androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter.newBuilder(colorFilter_).mergeFrom(value).buildPartial();
      } else {
        colorFilter_ = value;
      }

    }
    /**
     * <pre>
     * Filtering parameters for this image. If not specified, defaults to no
     * filtering.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorFilter color_filter = 6;</code>
     */
    private void clearColorFilter() {  colorFilter_ = null;

    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.Image parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Image 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.proto.LayoutElementProto.Image 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.proto.LayoutElementProto.Image 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.proto.LayoutElementProto.Image parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Image 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.proto.LayoutElementProto.Image parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Image 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.proto.LayoutElementProto.Image parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Image 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.proto.LayoutElementProto.Image parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Image 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.proto.LayoutElementProto.Image prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * An image.
     *
     * Images used in this element must exist in the resource bundle that
     * corresponds to this layout. Images must have their dimension specified, and
     * will be rendered at this width and height, regardless of their native
     * dimension.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.Image}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.Image, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.Image)
        androidx.wear.protolayout.proto.LayoutElementProto.ImageOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.Image.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The resource_id of the image to render. This must exist in the supplied
       * resource bundle.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
       */
      @java.lang.Override
      public boolean hasResourceId() {
        return instance.hasResourceId();
      }
      /**
       * <pre>
       * The resource_id of the image to render. This must exist in the supplied
       * resource bundle.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.TypesProto.StringProp getResourceId() {
        return instance.getResourceId();
      }
      /**
       * <pre>
       * The resource_id of the image to render. This must exist in the supplied
       * resource bundle.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
       */
      public Builder setResourceId(androidx.wear.protolayout.proto.TypesProto.StringProp value) {
        copyOnWrite();
        instance.setResourceId(value);
        return this;
        }
      /**
       * <pre>
       * The resource_id of the image to render. This must exist in the supplied
       * resource bundle.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
       */
      public Builder setResourceId(
          androidx.wear.protolayout.proto.TypesProto.StringProp.Builder builderForValue) {
        copyOnWrite();
        instance.setResourceId(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The resource_id of the image to render. This must exist in the supplied
       * resource bundle.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
       */
      public Builder mergeResourceId(androidx.wear.protolayout.proto.TypesProto.StringProp value) {
        copyOnWrite();
        instance.mergeResourceId(value);
        return this;
      }
      /**
       * <pre>
       * The resource_id of the image to render. This must exist in the supplied
       * resource bundle.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
       */
      public Builder clearResourceId() {  copyOnWrite();
        instance.clearResourceId();
        return this;
      }

      /**
       * <pre>
       * The width of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ImageDimension width = 2;</code>
       */
      @java.lang.Override
      public boolean hasWidth() {
        return instance.hasWidth();
      }
      /**
       * <pre>
       * The width of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ImageDimension width = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.ImageDimension getWidth() {
        return instance.getWidth();
      }
      /**
       * <pre>
       * The width of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ImageDimension width = 2;</code>
       */
      public Builder setWidth(androidx.wear.protolayout.proto.DimensionProto.ImageDimension value) {
        copyOnWrite();
        instance.setWidth(value);
        return this;
        }
      /**
       * <pre>
       * The width of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ImageDimension width = 2;</code>
       */
      public Builder setWidth(
          androidx.wear.protolayout.proto.DimensionProto.ImageDimension.Builder builderForValue) {
        copyOnWrite();
        instance.setWidth(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The width of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ImageDimension width = 2;</code>
       */
      public Builder mergeWidth(androidx.wear.protolayout.proto.DimensionProto.ImageDimension value) {
        copyOnWrite();
        instance.mergeWidth(value);
        return this;
      }
      /**
       * <pre>
       * The width of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ImageDimension width = 2;</code>
       */
      public Builder clearWidth() {  copyOnWrite();
        instance.clearWidth();
        return this;
      }

      /**
       * <pre>
       * The height of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ImageDimension height = 3;</code>
       */
      @java.lang.Override
      public boolean hasHeight() {
        return instance.hasHeight();
      }
      /**
       * <pre>
       * The height of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ImageDimension height = 3;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.ImageDimension getHeight() {
        return instance.getHeight();
      }
      /**
       * <pre>
       * The height of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ImageDimension height = 3;</code>
       */
      public Builder setHeight(androidx.wear.protolayout.proto.DimensionProto.ImageDimension value) {
        copyOnWrite();
        instance.setHeight(value);
        return this;
        }
      /**
       * <pre>
       * The height of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ImageDimension height = 3;</code>
       */
      public Builder setHeight(
          androidx.wear.protolayout.proto.DimensionProto.ImageDimension.Builder builderForValue) {
        copyOnWrite();
        instance.setHeight(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The height of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ImageDimension height = 3;</code>
       */
      public Builder mergeHeight(androidx.wear.protolayout.proto.DimensionProto.ImageDimension value) {
        copyOnWrite();
        instance.mergeHeight(value);
        return this;
      }
      /**
       * <pre>
       * The height of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ImageDimension height = 3;</code>
       */
      public Builder clearHeight() {  copyOnWrite();
        instance.clearHeight();
        return this;
      }

      /**
       * <pre>
       * How to scale the image resource inside the bounds specified by width/height
       * if its size does not match those bounds. Defaults to
       * CONTENT_SCALE_MODE_FIT.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContentScaleModeProp content_scale_mode = 4;</code>
       */
      @java.lang.Override
      public boolean hasContentScaleMode() {
        return instance.hasContentScaleMode();
      }
      /**
       * <pre>
       * How to scale the image resource inside the bounds specified by width/height
       * if its size does not match those bounds. Defaults to
       * CONTENT_SCALE_MODE_FIT.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContentScaleModeProp content_scale_mode = 4;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp getContentScaleMode() {
        return instance.getContentScaleMode();
      }
      /**
       * <pre>
       * How to scale the image resource inside the bounds specified by width/height
       * if its size does not match those bounds. Defaults to
       * CONTENT_SCALE_MODE_FIT.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContentScaleModeProp content_scale_mode = 4;</code>
       */
      public Builder setContentScaleMode(androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp value) {
        copyOnWrite();
        instance.setContentScaleMode(value);
        return this;
        }
      /**
       * <pre>
       * How to scale the image resource inside the bounds specified by width/height
       * if its size does not match those bounds. Defaults to
       * CONTENT_SCALE_MODE_FIT.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContentScaleModeProp content_scale_mode = 4;</code>
       */
      public Builder setContentScaleMode(
          androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp.Builder builderForValue) {
        copyOnWrite();
        instance.setContentScaleMode(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * How to scale the image resource inside the bounds specified by width/height
       * if its size does not match those bounds. Defaults to
       * CONTENT_SCALE_MODE_FIT.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContentScaleModeProp content_scale_mode = 4;</code>
       */
      public Builder mergeContentScaleMode(androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleModeProp value) {
        copyOnWrite();
        instance.mergeContentScaleMode(value);
        return this;
      }
      /**
       * <pre>
       * How to scale the image resource inside the bounds specified by width/height
       * if its size does not match those bounds. Defaults to
       * CONTENT_SCALE_MODE_FIT.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContentScaleModeProp content_scale_mode = 4;</code>
       */
      public Builder clearContentScaleMode() {  copyOnWrite();
        instance.clearContentScaleMode();
        return this;
      }

      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      @java.lang.Override
      public boolean hasModifiers() {
        return instance.hasModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers() {
        return instance.getModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      public Builder setModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
        copyOnWrite();
        instance.setModifiers(value);
        return this;
        }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      public Builder setModifiers(
          androidx.wear.protolayout.proto.ModifiersProto.Modifiers.Builder builderForValue) {
        copyOnWrite();
        instance.setModifiers(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      public Builder mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
        copyOnWrite();
        instance.mergeModifiers(value);
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      public Builder clearModifiers() {  copyOnWrite();
        instance.clearModifiers();
        return this;
      }

      /**
       * <pre>
       * Filtering parameters for this image. If not specified, defaults to no
       * filtering.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorFilter color_filter = 6;</code>
       */
      @java.lang.Override
      public boolean hasColorFilter() {
        return instance.hasColorFilter();
      }
      /**
       * <pre>
       * Filtering parameters for this image. If not specified, defaults to no
       * filtering.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorFilter color_filter = 6;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter getColorFilter() {
        return instance.getColorFilter();
      }
      /**
       * <pre>
       * Filtering parameters for this image. If not specified, defaults to no
       * filtering.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorFilter color_filter = 6;</code>
       */
      public Builder setColorFilter(androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter value) {
        copyOnWrite();
        instance.setColorFilter(value);
        return this;
        }
      /**
       * <pre>
       * Filtering parameters for this image. If not specified, defaults to no
       * filtering.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorFilter color_filter = 6;</code>
       */
      public Builder setColorFilter(
          androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter.Builder builderForValue) {
        copyOnWrite();
        instance.setColorFilter(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Filtering parameters for this image. If not specified, defaults to no
       * filtering.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorFilter color_filter = 6;</code>
       */
      public Builder mergeColorFilter(androidx.wear.protolayout.proto.LayoutElementProto.ColorFilter value) {
        copyOnWrite();
        instance.mergeColorFilter(value);
        return this;
      }
      /**
       * <pre>
       * Filtering parameters for this image. If not specified, defaults to no
       * filtering.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorFilter color_filter = 6;</code>
       */
      public Builder clearColorFilter() {  copyOnWrite();
        instance.clearColorFilter();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.Image)
    }
    @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.proto.LayoutElementProto.Image();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "resourceId_",
              "width_",
              "height_",
              "contentScaleMode_",
              "modifiers_",
              "colorFilter_",
            };
            java.lang.String info =
                "\u0000\u0006\u0000\u0000\u0001\u0006\u0006\u0000\u0000\u0000\u0001\t\u0002\t\u0003" +
                "\t\u0004\t\u0005\t\u0006\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.proto.LayoutElementProto.Image> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.Image.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.Image>(
                        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.proto.Image)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.Image DEFAULT_INSTANCE;
    static {
      Image defaultInstance = new Image();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        Image.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.Image getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The width of this Spacer. When this is added as the direct child of an Arc,
     * this must be specified as an angular dimension, otherwise a linear
     * dimension must be used. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpacerDimension width = 1;</code>
     * @return Whether the width field is set.
     */
    boolean hasWidth();
    /**
     * <pre>
     * The width of this Spacer. When this is added as the direct child of an Arc,
     * this must be specified as an angular dimension, otherwise a linear
     * dimension must be used. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpacerDimension width = 1;</code>
     * @return The width.
     */
    androidx.wear.protolayout.proto.DimensionProto.SpacerDimension getWidth();

    /**
     * <pre>
     * The height of this spacer. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpacerDimension height = 2;</code>
     * @return Whether the height field is set.
     */
    boolean hasHeight();
    /**
     * <pre>
     * The height of this spacer. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpacerDimension height = 2;</code>
     * @return The height.
     */
    androidx.wear.protolayout.proto.DimensionProto.SpacerDimension getHeight();

    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
     * @return Whether the modifiers field is set.
     */
    boolean hasModifiers();
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
     * @return The modifiers.
     */
    androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers();
  }
  /**
   * <pre>
   * A simple spacer, typically used to provide padding between adjacent elements.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.Spacer}
   */
  public  static final class Spacer extends
      com.google.protobuf.GeneratedMessageLite<
          Spacer, Spacer.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.Spacer)
      SpacerOrBuilder {
    private Spacer() {
    }
    public static final int WIDTH_FIELD_NUMBER = 1;
    private androidx.wear.protolayout.proto.DimensionProto.SpacerDimension width_;
    /**
     * <pre>
     * The width of this Spacer. When this is added as the direct child of an Arc,
     * this must be specified as an angular dimension, otherwise a linear
     * dimension must be used. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpacerDimension width = 1;</code>
     */
    @java.lang.Override
    public boolean hasWidth() {
      return width_ != null;
    }
    /**
     * <pre>
     * The width of this Spacer. When this is added as the direct child of an Arc,
     * this must be specified as an angular dimension, otherwise a linear
     * dimension must be used. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpacerDimension width = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.SpacerDimension getWidth() {
      return width_ == null ? androidx.wear.protolayout.proto.DimensionProto.SpacerDimension.getDefaultInstance() : width_;
    }
    /**
     * <pre>
     * The width of this Spacer. When this is added as the direct child of an Arc,
     * this must be specified as an angular dimension, otherwise a linear
     * dimension must be used. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpacerDimension width = 1;</code>
     */
    private void setWidth(androidx.wear.protolayout.proto.DimensionProto.SpacerDimension value) {
      value.getClass();
  width_ = value;

      }
    /**
     * <pre>
     * The width of this Spacer. When this is added as the direct child of an Arc,
     * this must be specified as an angular dimension, otherwise a linear
     * dimension must be used. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpacerDimension width = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeWidth(androidx.wear.protolayout.proto.DimensionProto.SpacerDimension value) {
      value.getClass();
  if (width_ != null &&
          width_ != androidx.wear.protolayout.proto.DimensionProto.SpacerDimension.getDefaultInstance()) {
        width_ =
          androidx.wear.protolayout.proto.DimensionProto.SpacerDimension.newBuilder(width_).mergeFrom(value).buildPartial();
      } else {
        width_ = value;
      }

    }
    /**
     * <pre>
     * The width of this Spacer. When this is added as the direct child of an Arc,
     * this must be specified as an angular dimension, otherwise a linear
     * dimension must be used. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpacerDimension width = 1;</code>
     */
    private void clearWidth() {  width_ = null;

    }

    public static final int HEIGHT_FIELD_NUMBER = 2;
    private androidx.wear.protolayout.proto.DimensionProto.SpacerDimension height_;
    /**
     * <pre>
     * The height of this spacer. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpacerDimension height = 2;</code>
     */
    @java.lang.Override
    public boolean hasHeight() {
      return height_ != null;
    }
    /**
     * <pre>
     * The height of this spacer. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpacerDimension height = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.SpacerDimension getHeight() {
      return height_ == null ? androidx.wear.protolayout.proto.DimensionProto.SpacerDimension.getDefaultInstance() : height_;
    }
    /**
     * <pre>
     * The height of this spacer. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpacerDimension height = 2;</code>
     */
    private void setHeight(androidx.wear.protolayout.proto.DimensionProto.SpacerDimension value) {
      value.getClass();
  height_ = value;

      }
    /**
     * <pre>
     * The height of this spacer. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpacerDimension height = 2;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeHeight(androidx.wear.protolayout.proto.DimensionProto.SpacerDimension value) {
      value.getClass();
  if (height_ != null &&
          height_ != androidx.wear.protolayout.proto.DimensionProto.SpacerDimension.getDefaultInstance()) {
        height_ =
          androidx.wear.protolayout.proto.DimensionProto.SpacerDimension.newBuilder(height_).mergeFrom(value).buildPartial();
      } else {
        height_ = value;
      }

    }
    /**
     * <pre>
     * The height of this spacer. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpacerDimension height = 2;</code>
     */
    private void clearHeight() {  height_ = null;

    }

    public static final int MODIFIERS_FIELD_NUMBER = 3;
    private androidx.wear.protolayout.proto.ModifiersProto.Modifiers modifiers_;
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
     */
    @java.lang.Override
    public boolean hasModifiers() {
      return modifiers_ != null;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers() {
      return modifiers_ == null ? androidx.wear.protolayout.proto.ModifiersProto.Modifiers.getDefaultInstance() : modifiers_;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
     */
    private void setModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
      value.getClass();
  modifiers_ = value;

      }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
      value.getClass();
  if (modifiers_ != null &&
          modifiers_ != androidx.wear.protolayout.proto.ModifiersProto.Modifiers.getDefaultInstance()) {
        modifiers_ =
          androidx.wear.protolayout.proto.ModifiersProto.Modifiers.newBuilder(modifiers_).mergeFrom(value).buildPartial();
      } else {
        modifiers_ = value;
      }

    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
     */
    private void clearModifiers() {  modifiers_ = null;

    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.Spacer parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Spacer 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.proto.LayoutElementProto.Spacer 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.proto.LayoutElementProto.Spacer 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.proto.LayoutElementProto.Spacer parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Spacer 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.proto.LayoutElementProto.Spacer parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Spacer 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.proto.LayoutElementProto.Spacer parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Spacer 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.proto.LayoutElementProto.Spacer parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Spacer 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.proto.LayoutElementProto.Spacer prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * A simple spacer, typically used to provide padding between adjacent elements.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.Spacer}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.Spacer, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.Spacer)
        androidx.wear.protolayout.proto.LayoutElementProto.SpacerOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.Spacer.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The width of this Spacer. When this is added as the direct child of an Arc,
       * this must be specified as an angular dimension, otherwise a linear
       * dimension must be used. If not defined, defaults to 0.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpacerDimension width = 1;</code>
       */
      @java.lang.Override
      public boolean hasWidth() {
        return instance.hasWidth();
      }
      /**
       * <pre>
       * The width of this Spacer. When this is added as the direct child of an Arc,
       * this must be specified as an angular dimension, otherwise a linear
       * dimension must be used. If not defined, defaults to 0.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpacerDimension width = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.SpacerDimension getWidth() {
        return instance.getWidth();
      }
      /**
       * <pre>
       * The width of this Spacer. When this is added as the direct child of an Arc,
       * this must be specified as an angular dimension, otherwise a linear
       * dimension must be used. If not defined, defaults to 0.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpacerDimension width = 1;</code>
       */
      public Builder setWidth(androidx.wear.protolayout.proto.DimensionProto.SpacerDimension value) {
        copyOnWrite();
        instance.setWidth(value);
        return this;
        }
      /**
       * <pre>
       * The width of this Spacer. When this is added as the direct child of an Arc,
       * this must be specified as an angular dimension, otherwise a linear
       * dimension must be used. If not defined, defaults to 0.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpacerDimension width = 1;</code>
       */
      public Builder setWidth(
          androidx.wear.protolayout.proto.DimensionProto.SpacerDimension.Builder builderForValue) {
        copyOnWrite();
        instance.setWidth(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The width of this Spacer. When this is added as the direct child of an Arc,
       * this must be specified as an angular dimension, otherwise a linear
       * dimension must be used. If not defined, defaults to 0.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpacerDimension width = 1;</code>
       */
      public Builder mergeWidth(androidx.wear.protolayout.proto.DimensionProto.SpacerDimension value) {
        copyOnWrite();
        instance.mergeWidth(value);
        return this;
      }
      /**
       * <pre>
       * The width of this Spacer. When this is added as the direct child of an Arc,
       * this must be specified as an angular dimension, otherwise a linear
       * dimension must be used. If not defined, defaults to 0.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpacerDimension width = 1;</code>
       */
      public Builder clearWidth() {  copyOnWrite();
        instance.clearWidth();
        return this;
      }

      /**
       * <pre>
       * The height of this spacer. If not defined, defaults to 0.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpacerDimension height = 2;</code>
       */
      @java.lang.Override
      public boolean hasHeight() {
        return instance.hasHeight();
      }
      /**
       * <pre>
       * The height of this spacer. If not defined, defaults to 0.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpacerDimension height = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.SpacerDimension getHeight() {
        return instance.getHeight();
      }
      /**
       * <pre>
       * The height of this spacer. If not defined, defaults to 0.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpacerDimension height = 2;</code>
       */
      public Builder setHeight(androidx.wear.protolayout.proto.DimensionProto.SpacerDimension value) {
        copyOnWrite();
        instance.setHeight(value);
        return this;
        }
      /**
       * <pre>
       * The height of this spacer. If not defined, defaults to 0.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpacerDimension height = 2;</code>
       */
      public Builder setHeight(
          androidx.wear.protolayout.proto.DimensionProto.SpacerDimension.Builder builderForValue) {
        copyOnWrite();
        instance.setHeight(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The height of this spacer. If not defined, defaults to 0.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpacerDimension height = 2;</code>
       */
      public Builder mergeHeight(androidx.wear.protolayout.proto.DimensionProto.SpacerDimension value) {
        copyOnWrite();
        instance.mergeHeight(value);
        return this;
      }
      /**
       * <pre>
       * The height of this spacer. If not defined, defaults to 0.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicWidth(HorizontalLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpacerDimension height = 2;</code>
       */
      public Builder clearHeight() {  copyOnWrite();
        instance.clearHeight();
        return this;
      }

      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
       */
      @java.lang.Override
      public boolean hasModifiers() {
        return instance.hasModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers() {
        return instance.getModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
       */
      public Builder setModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
        copyOnWrite();
        instance.setModifiers(value);
        return this;
        }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
       */
      public Builder setModifiers(
          androidx.wear.protolayout.proto.ModifiersProto.Modifiers.Builder builderForValue) {
        copyOnWrite();
        instance.setModifiers(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
       */
      public Builder mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
        copyOnWrite();
        instance.mergeModifiers(value);
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 3;</code>
       */
      public Builder clearModifiers() {  copyOnWrite();
        instance.clearModifiers();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.Spacer)
    }
    @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.proto.LayoutElementProto.Spacer();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "width_",
              "height_",
              "modifiers_",
            };
            java.lang.String info =
                "\u0000\u0003\u0000\u0000\u0001\u0003\u0003\u0000\u0000\u0000\u0001\t\u0002\t\u0003" +
                "\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.proto.LayoutElementProto.Spacer> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.Spacer.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.Spacer>(
                        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.proto.Spacer)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.Spacer DEFAULT_INSTANCE;
    static {
      Spacer defaultInstance = new Spacer();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        Spacer.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.Spacer getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The child element(s) to wrap.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    java.util.List<androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> 
        getContentsList();
    /**
     * <pre>
     * The child element(s) to wrap.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement getContents(int index);
    /**
     * <pre>
     * The child element(s) to wrap.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    int getContentsCount();

    /**
     * <pre>
     * The height of this Box. If not defined, this will size itself to fit all of
     * its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 2;</code>
     * @return Whether the height field is set.
     */
    boolean hasHeight();
    /**
     * <pre>
     * The height of this Box. If not defined, this will size itself to fit all of
     * its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 2;</code>
     * @return The height.
     */
    androidx.wear.protolayout.proto.DimensionProto.ContainerDimension getHeight();

    /**
     * <pre>
     * The width of this Box. If not defined, this will size itself to fit all of
     * its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     * @return Whether the width field is set.
     */
    boolean hasWidth();
    /**
     * <pre>
     * The width of this Box. If not defined, this will size itself to fit all of
     * its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     * @return The width.
     */
    androidx.wear.protolayout.proto.DimensionProto.ContainerDimension getWidth();

    /**
     * <pre>
     * The horizontal alignment of the element inside this Box. If not defined,
     * defaults to HORIZONTAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 4;</code>
     * @return Whether the horizontalAlignment field is set.
     */
    boolean hasHorizontalAlignment();
    /**
     * <pre>
     * The horizontal alignment of the element inside this Box. If not defined,
     * defaults to HORIZONTAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 4;</code>
     * @return The horizontalAlignment.
     */
    androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp getHorizontalAlignment();

    /**
     * <pre>
     * The vertical alignment of the element inside this Box. If not defined,
     * defaults to VERTICAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 5;</code>
     * @return Whether the verticalAlignment field is set.
     */
    boolean hasVerticalAlignment();
    /**
     * <pre>
     * The vertical alignment of the element inside this Box. If not defined,
     * defaults to VERTICAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 5;</code>
     * @return The verticalAlignment.
     */
    androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp getVerticalAlignment();

    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 6;</code>
     * @return Whether the modifiers field is set.
     */
    boolean hasModifiers();
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 6;</code>
     * @return The modifiers.
     */
    androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers();
  }
  /**
   * <pre>
   * A container which stacks all of its children on top of one another. This also
   * allows to add a background color, or to have a border around them with some
   * padding.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.Box}
   */
  public  static final class Box extends
      com.google.protobuf.GeneratedMessageLite<
          Box, Box.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.Box)
      BoxOrBuilder {
    private Box() {
      contents_ = emptyProtobufList();
    }
    public static final int CONTENTS_FIELD_NUMBER = 1;
    private com.google.protobuf.Internal.ProtobufList<androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> contents_;
    /**
     * <pre>
     * The child element(s) to wrap.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    @java.lang.Override
    public java.util.List<androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> getContentsList() {
      return contents_;
    }
    /**
     * <pre>
     * The child element(s) to wrap.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    public java.util.List<? extends androidx.wear.protolayout.proto.LayoutElementProto.LayoutElementOrBuilder> 
        getContentsOrBuilderList() {
      return contents_;
    }
    /**
     * <pre>
     * The child element(s) to wrap.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    @java.lang.Override
    public int getContentsCount() {
      return contents_.size();
    }
    /**
     * <pre>
     * The child element(s) to wrap.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement getContents(int index) {
      return contents_.get(index);
    }
    /**
     * <pre>
     * The child element(s) to wrap.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    public androidx.wear.protolayout.proto.LayoutElementProto.LayoutElementOrBuilder getContentsOrBuilder(
        int index) {
      return contents_.get(index);
    }
    private void ensureContentsIsMutable() {
      com.google.protobuf.Internal.ProtobufList<androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> tmp = contents_;
      if (!tmp.isModifiable()) {
        contents_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }

    /**
     * <pre>
     * The child element(s) to wrap.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    private void setContents(
        int index, androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
      value.getClass();
  ensureContentsIsMutable();
      contents_.set(index, value);
    }
    /**
     * <pre>
     * The child element(s) to wrap.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    private void addContents(androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
      value.getClass();
  ensureContentsIsMutable();
      contents_.add(value);
    }
    /**
     * <pre>
     * The child element(s) to wrap.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    private void addContents(
        int index, androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
      value.getClass();
  ensureContentsIsMutable();
      contents_.add(index, value);
    }
    /**
     * <pre>
     * The child element(s) to wrap.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    private void addAllContents(
        java.lang.Iterable<? extends androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> values) {
      ensureContentsIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, contents_);
    }
    /**
     * <pre>
     * The child element(s) to wrap.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    private void clearContents() {
      contents_ = emptyProtobufList();
    }
    /**
     * <pre>
     * The child element(s) to wrap.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    private void removeContents(int index) {
      ensureContentsIsMutable();
      contents_.remove(index);
    }

    public static final int HEIGHT_FIELD_NUMBER = 2;
    private androidx.wear.protolayout.proto.DimensionProto.ContainerDimension height_;
    /**
     * <pre>
     * The height of this Box. If not defined, this will size itself to fit all of
     * its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 2;</code>
     */
    @java.lang.Override
    public boolean hasHeight() {
      return height_ != null;
    }
    /**
     * <pre>
     * The height of this Box. If not defined, this will size itself to fit all of
     * its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.ContainerDimension getHeight() {
      return height_ == null ? androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.getDefaultInstance() : height_;
    }
    /**
     * <pre>
     * The height of this Box. If not defined, this will size itself to fit all of
     * its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 2;</code>
     */
    private void setHeight(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
      value.getClass();
  height_ = value;

      }
    /**
     * <pre>
     * The height of this Box. If not defined, this will size itself to fit all of
     * its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 2;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeHeight(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
      value.getClass();
  if (height_ != null &&
          height_ != androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.getDefaultInstance()) {
        height_ =
          androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.newBuilder(height_).mergeFrom(value).buildPartial();
      } else {
        height_ = value;
      }

    }
    /**
     * <pre>
     * The height of this Box. If not defined, this will size itself to fit all of
     * its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 2;</code>
     */
    private void clearHeight() {  height_ = null;

    }

    public static final int WIDTH_FIELD_NUMBER = 3;
    private androidx.wear.protolayout.proto.DimensionProto.ContainerDimension width_;
    /**
     * <pre>
     * The width of this Box. If not defined, this will size itself to fit all of
     * its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     */
    @java.lang.Override
    public boolean hasWidth() {
      return width_ != null;
    }
    /**
     * <pre>
     * The width of this Box. If not defined, this will size itself to fit all of
     * its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.ContainerDimension getWidth() {
      return width_ == null ? androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.getDefaultInstance() : width_;
    }
    /**
     * <pre>
     * The width of this Box. If not defined, this will size itself to fit all of
     * its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     */
    private void setWidth(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
      value.getClass();
  width_ = value;

      }
    /**
     * <pre>
     * The width of this Box. If not defined, this will size itself to fit all of
     * its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeWidth(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
      value.getClass();
  if (width_ != null &&
          width_ != androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.getDefaultInstance()) {
        width_ =
          androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.newBuilder(width_).mergeFrom(value).buildPartial();
      } else {
        width_ = value;
      }

    }
    /**
     * <pre>
     * The width of this Box. If not defined, this will size itself to fit all of
     * its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     */
    private void clearWidth() {  width_ = null;

    }

    public static final int HORIZONTAL_ALIGNMENT_FIELD_NUMBER = 4;
    private androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp horizontalAlignment_;
    /**
     * <pre>
     * The horizontal alignment of the element inside this Box. If not defined,
     * defaults to HORIZONTAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 4;</code>
     */
    @java.lang.Override
    public boolean hasHorizontalAlignment() {
      return horizontalAlignment_ != null;
    }
    /**
     * <pre>
     * The horizontal alignment of the element inside this Box. If not defined,
     * defaults to HORIZONTAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 4;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp getHorizontalAlignment() {
      return horizontalAlignment_ == null ? androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp.getDefaultInstance() : horizontalAlignment_;
    }
    /**
     * <pre>
     * The horizontal alignment of the element inside this Box. If not defined,
     * defaults to HORIZONTAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 4;</code>
     */
    private void setHorizontalAlignment(androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp value) {
      value.getClass();
  horizontalAlignment_ = value;

      }
    /**
     * <pre>
     * The horizontal alignment of the element inside this Box. If not defined,
     * defaults to HORIZONTAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 4;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeHorizontalAlignment(androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp value) {
      value.getClass();
  if (horizontalAlignment_ != null &&
          horizontalAlignment_ != androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp.getDefaultInstance()) {
        horizontalAlignment_ =
          androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp.newBuilder(horizontalAlignment_).mergeFrom(value).buildPartial();
      } else {
        horizontalAlignment_ = value;
      }

    }
    /**
     * <pre>
     * The horizontal alignment of the element inside this Box. If not defined,
     * defaults to HORIZONTAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 4;</code>
     */
    private void clearHorizontalAlignment() {  horizontalAlignment_ = null;

    }

    public static final int VERTICAL_ALIGNMENT_FIELD_NUMBER = 5;
    private androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp verticalAlignment_;
    /**
     * <pre>
     * The vertical alignment of the element inside this Box. If not defined,
     * defaults to VERTICAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 5;</code>
     */
    @java.lang.Override
    public boolean hasVerticalAlignment() {
      return verticalAlignment_ != null;
    }
    /**
     * <pre>
     * The vertical alignment of the element inside this Box. If not defined,
     * defaults to VERTICAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 5;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp getVerticalAlignment() {
      return verticalAlignment_ == null ? androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp.getDefaultInstance() : verticalAlignment_;
    }
    /**
     * <pre>
     * The vertical alignment of the element inside this Box. If not defined,
     * defaults to VERTICAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 5;</code>
     */
    private void setVerticalAlignment(androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp value) {
      value.getClass();
  verticalAlignment_ = value;

      }
    /**
     * <pre>
     * The vertical alignment of the element inside this Box. If not defined,
     * defaults to VERTICAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 5;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeVerticalAlignment(androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp value) {
      value.getClass();
  if (verticalAlignment_ != null &&
          verticalAlignment_ != androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp.getDefaultInstance()) {
        verticalAlignment_ =
          androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp.newBuilder(verticalAlignment_).mergeFrom(value).buildPartial();
      } else {
        verticalAlignment_ = value;
      }

    }
    /**
     * <pre>
     * The vertical alignment of the element inside this Box. If not defined,
     * defaults to VERTICAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 5;</code>
     */
    private void clearVerticalAlignment() {  verticalAlignment_ = null;

    }

    public static final int MODIFIERS_FIELD_NUMBER = 6;
    private androidx.wear.protolayout.proto.ModifiersProto.Modifiers modifiers_;
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 6;</code>
     */
    @java.lang.Override
    public boolean hasModifiers() {
      return modifiers_ != null;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 6;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers() {
      return modifiers_ == null ? androidx.wear.protolayout.proto.ModifiersProto.Modifiers.getDefaultInstance() : modifiers_;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 6;</code>
     */
    private void setModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
      value.getClass();
  modifiers_ = value;

      }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 6;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
      value.getClass();
  if (modifiers_ != null &&
          modifiers_ != androidx.wear.protolayout.proto.ModifiersProto.Modifiers.getDefaultInstance()) {
        modifiers_ =
          androidx.wear.protolayout.proto.ModifiersProto.Modifiers.newBuilder(modifiers_).mergeFrom(value).buildPartial();
      } else {
        modifiers_ = value;
      }

    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 6;</code>
     */
    private void clearModifiers() {  modifiers_ = null;

    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.Box parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Box 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.proto.LayoutElementProto.Box 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.proto.LayoutElementProto.Box 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.proto.LayoutElementProto.Box parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Box 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.proto.LayoutElementProto.Box parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Box 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.proto.LayoutElementProto.Box parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Box 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.proto.LayoutElementProto.Box parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Box 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.proto.LayoutElementProto.Box prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * A container which stacks all of its children on top of one another. This also
     * allows to add a background color, or to have a border around them with some
     * padding.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.Box}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.Box, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.Box)
        androidx.wear.protolayout.proto.LayoutElementProto.BoxOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.Box.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The child element(s) to wrap.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      @java.lang.Override
      public java.util.List<androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> getContentsList() {
        return java.util.Collections.unmodifiableList(
            instance.getContentsList());
      }
      /**
       * <pre>
       * The child element(s) to wrap.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      @java.lang.Override
      public int getContentsCount() {
        return instance.getContentsCount();
      }/**
       * <pre>
       * The child element(s) to wrap.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement getContents(int index) {
        return instance.getContents(index);
      }
      /**
       * <pre>
       * The child element(s) to wrap.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder setContents(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
        copyOnWrite();
        instance.setContents(index, value);
        return this;
      }
      /**
       * <pre>
       * The child element(s) to wrap.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder setContents(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.Builder builderForValue) {
        copyOnWrite();
        instance.setContents(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The child element(s) to wrap.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder addContents(androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
        copyOnWrite();
        instance.addContents(value);
        return this;
      }
      /**
       * <pre>
       * The child element(s) to wrap.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder addContents(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
        copyOnWrite();
        instance.addContents(index, value);
        return this;
      }
      /**
       * <pre>
       * The child element(s) to wrap.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder addContents(
          androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.Builder builderForValue) {
        copyOnWrite();
        instance.addContents(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The child element(s) to wrap.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder addContents(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.Builder builderForValue) {
        copyOnWrite();
        instance.addContents(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The child element(s) to wrap.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder addAllContents(
          java.lang.Iterable<? extends androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> values) {
        copyOnWrite();
        instance.addAllContents(values);
        return this;
      }
      /**
       * <pre>
       * The child element(s) to wrap.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder clearContents() {
        copyOnWrite();
        instance.clearContents();
        return this;
      }
      /**
       * <pre>
       * The child element(s) to wrap.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder removeContents(int index) {
        copyOnWrite();
        instance.removeContents(index);
        return this;
      }

      /**
       * <pre>
       * The height of this Box. If not defined, this will size itself to fit all of
       * its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 2;</code>
       */
      @java.lang.Override
      public boolean hasHeight() {
        return instance.hasHeight();
      }
      /**
       * <pre>
       * The height of this Box. If not defined, this will size itself to fit all of
       * its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.ContainerDimension getHeight() {
        return instance.getHeight();
      }
      /**
       * <pre>
       * The height of this Box. If not defined, this will size itself to fit all of
       * its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 2;</code>
       */
      public Builder setHeight(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
        copyOnWrite();
        instance.setHeight(value);
        return this;
        }
      /**
       * <pre>
       * The height of this Box. If not defined, this will size itself to fit all of
       * its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 2;</code>
       */
      public Builder setHeight(
          androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.Builder builderForValue) {
        copyOnWrite();
        instance.setHeight(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The height of this Box. If not defined, this will size itself to fit all of
       * its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 2;</code>
       */
      public Builder mergeHeight(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
        copyOnWrite();
        instance.mergeHeight(value);
        return this;
      }
      /**
       * <pre>
       * The height of this Box. If not defined, this will size itself to fit all of
       * its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 2;</code>
       */
      public Builder clearHeight() {  copyOnWrite();
        instance.clearHeight();
        return this;
      }

      /**
       * <pre>
       * The width of this Box. If not defined, this will size itself to fit all of
       * its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
       */
      @java.lang.Override
      public boolean hasWidth() {
        return instance.hasWidth();
      }
      /**
       * <pre>
       * The width of this Box. If not defined, this will size itself to fit all of
       * its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.ContainerDimension getWidth() {
        return instance.getWidth();
      }
      /**
       * <pre>
       * The width of this Box. If not defined, this will size itself to fit all of
       * its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
       */
      public Builder setWidth(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
        copyOnWrite();
        instance.setWidth(value);
        return this;
        }
      /**
       * <pre>
       * The width of this Box. If not defined, this will size itself to fit all of
       * its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
       */
      public Builder setWidth(
          androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.Builder builderForValue) {
        copyOnWrite();
        instance.setWidth(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The width of this Box. If not defined, this will size itself to fit all of
       * its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
       */
      public Builder mergeWidth(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
        copyOnWrite();
        instance.mergeWidth(value);
        return this;
      }
      /**
       * <pre>
       * The width of this Box. If not defined, this will size itself to fit all of
       * its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
       */
      public Builder clearWidth() {  copyOnWrite();
        instance.clearWidth();
        return this;
      }

      /**
       * <pre>
       * The horizontal alignment of the element inside this Box. If not defined,
       * defaults to HORIZONTAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 4;</code>
       */
      @java.lang.Override
      public boolean hasHorizontalAlignment() {
        return instance.hasHorizontalAlignment();
      }
      /**
       * <pre>
       * The horizontal alignment of the element inside this Box. If not defined,
       * defaults to HORIZONTAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 4;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp getHorizontalAlignment() {
        return instance.getHorizontalAlignment();
      }
      /**
       * <pre>
       * The horizontal alignment of the element inside this Box. If not defined,
       * defaults to HORIZONTAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 4;</code>
       */
      public Builder setHorizontalAlignment(androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp value) {
        copyOnWrite();
        instance.setHorizontalAlignment(value);
        return this;
        }
      /**
       * <pre>
       * The horizontal alignment of the element inside this Box. If not defined,
       * defaults to HORIZONTAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 4;</code>
       */
      public Builder setHorizontalAlignment(
          androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp.Builder builderForValue) {
        copyOnWrite();
        instance.setHorizontalAlignment(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The horizontal alignment of the element inside this Box. If not defined,
       * defaults to HORIZONTAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 4;</code>
       */
      public Builder mergeHorizontalAlignment(androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp value) {
        copyOnWrite();
        instance.mergeHorizontalAlignment(value);
        return this;
      }
      /**
       * <pre>
       * The horizontal alignment of the element inside this Box. If not defined,
       * defaults to HORIZONTAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 4;</code>
       */
      public Builder clearHorizontalAlignment() {  copyOnWrite();
        instance.clearHorizontalAlignment();
        return this;
      }

      /**
       * <pre>
       * The vertical alignment of the element inside this Box. If not defined,
       * defaults to VERTICAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 5;</code>
       */
      @java.lang.Override
      public boolean hasVerticalAlignment() {
        return instance.hasVerticalAlignment();
      }
      /**
       * <pre>
       * The vertical alignment of the element inside this Box. If not defined,
       * defaults to VERTICAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 5;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp getVerticalAlignment() {
        return instance.getVerticalAlignment();
      }
      /**
       * <pre>
       * The vertical alignment of the element inside this Box. If not defined,
       * defaults to VERTICAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 5;</code>
       */
      public Builder setVerticalAlignment(androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp value) {
        copyOnWrite();
        instance.setVerticalAlignment(value);
        return this;
        }
      /**
       * <pre>
       * The vertical alignment of the element inside this Box. If not defined,
       * defaults to VERTICAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 5;</code>
       */
      public Builder setVerticalAlignment(
          androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp.Builder builderForValue) {
        copyOnWrite();
        instance.setVerticalAlignment(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The vertical alignment of the element inside this Box. If not defined,
       * defaults to VERTICAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 5;</code>
       */
      public Builder mergeVerticalAlignment(androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp value) {
        copyOnWrite();
        instance.mergeVerticalAlignment(value);
        return this;
      }
      /**
       * <pre>
       * The vertical alignment of the element inside this Box. If not defined,
       * defaults to VERTICAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 5;</code>
       */
      public Builder clearVerticalAlignment() {  copyOnWrite();
        instance.clearVerticalAlignment();
        return this;
      }

      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 6;</code>
       */
      @java.lang.Override
      public boolean hasModifiers() {
        return instance.hasModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 6;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers() {
        return instance.getModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 6;</code>
       */
      public Builder setModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
        copyOnWrite();
        instance.setModifiers(value);
        return this;
        }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 6;</code>
       */
      public Builder setModifiers(
          androidx.wear.protolayout.proto.ModifiersProto.Modifiers.Builder builderForValue) {
        copyOnWrite();
        instance.setModifiers(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 6;</code>
       */
      public Builder mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
        copyOnWrite();
        instance.mergeModifiers(value);
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 6;</code>
       */
      public Builder clearModifiers() {  copyOnWrite();
        instance.clearModifiers();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.Box)
    }
    @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.proto.LayoutElementProto.Box();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "contents_",
              androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.class,
              "height_",
              "width_",
              "horizontalAlignment_",
              "verticalAlignment_",
              "modifiers_",
            };
            java.lang.String info =
                "\u0000\u0006\u0000\u0000\u0001\u0006\u0006\u0000\u0001\u0000\u0001\u001b\u0002\t" +
                "\u0003\t\u0004\t\u0005\t\u0006\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.proto.LayoutElementProto.Box> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.Box.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.Box>(
                        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.proto.Box)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.Box DEFAULT_INSTANCE;
    static {
      Box defaultInstance = new Box();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        Box.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.Box getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The text to render.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     * @return Whether the text field is set.
     */
    boolean hasText();
    /**
     * <pre>
     * The text to render.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     * @return The text.
     */
    androidx.wear.protolayout.proto.TypesProto.StringProp getText();

    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     * @return Whether the fontStyle field is set.
     */
    boolean hasFontStyle();
    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     * @return The fontStyle.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.FontStyle getFontStyle();

    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 3;</code>
     * @return Whether the modifiers field is set.
     */
    boolean hasModifiers();
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 3;</code>
     * @return The modifiers.
     */
    androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers getModifiers();

    /**
     * <pre>
     * An Android platform specific text style configuration options for styling
     * and compatibility.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 4;</code>
     * @return Whether the androidTextStyle field is set.
     */
    boolean hasAndroidTextStyle();
    /**
     * <pre>
     * An Android platform specific text style configuration options for styling
     * and compatibility.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 4;</code>
     * @return The androidTextStyle.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle getAndroidTextStyle();
  }
  /**
   * <pre>
   * A portion of text which can be added to a Span. Two different SpanText
   * elements on the same line will be aligned to the same baseline, regardless of
   * the size of each SpanText.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.SpanText}
   */
  public  static final class SpanText extends
      com.google.protobuf.GeneratedMessageLite<
          SpanText, SpanText.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.SpanText)
      SpanTextOrBuilder {
    private SpanText() {
    }
    public static final int TEXT_FIELD_NUMBER = 1;
    private androidx.wear.protolayout.proto.TypesProto.StringProp text_;
    /**
     * <pre>
     * The text to render.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     */
    @java.lang.Override
    public boolean hasText() {
      return text_ != null;
    }
    /**
     * <pre>
     * The text to render.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.TypesProto.StringProp getText() {
      return text_ == null ? androidx.wear.protolayout.proto.TypesProto.StringProp.getDefaultInstance() : text_;
    }
    /**
     * <pre>
     * The text to render.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     */
    private void setText(androidx.wear.protolayout.proto.TypesProto.StringProp value) {
      value.getClass();
  text_ = value;

      }
    /**
     * <pre>
     * The text to render.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeText(androidx.wear.protolayout.proto.TypesProto.StringProp value) {
      value.getClass();
  if (text_ != null &&
          text_ != androidx.wear.protolayout.proto.TypesProto.StringProp.getDefaultInstance()) {
        text_ =
          androidx.wear.protolayout.proto.TypesProto.StringProp.newBuilder(text_).mergeFrom(value).buildPartial();
      } else {
        text_ = value;
      }

    }
    /**
     * <pre>
     * The text to render.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     */
    private void clearText() {  text_ = null;

    }

    public static final int FONT_STYLE_FIELD_NUMBER = 2;
    private androidx.wear.protolayout.proto.LayoutElementProto.FontStyle fontStyle_;
    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     */
    @java.lang.Override
    public boolean hasFontStyle() {
      return fontStyle_ != null;
    }
    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.FontStyle getFontStyle() {
      return fontStyle_ == null ? androidx.wear.protolayout.proto.LayoutElementProto.FontStyle.getDefaultInstance() : fontStyle_;
    }
    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     */
    private void setFontStyle(androidx.wear.protolayout.proto.LayoutElementProto.FontStyle value) {
      value.getClass();
  fontStyle_ = value;

      }
    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeFontStyle(androidx.wear.protolayout.proto.LayoutElementProto.FontStyle value) {
      value.getClass();
  if (fontStyle_ != null &&
          fontStyle_ != androidx.wear.protolayout.proto.LayoutElementProto.FontStyle.getDefaultInstance()) {
        fontStyle_ =
          androidx.wear.protolayout.proto.LayoutElementProto.FontStyle.newBuilder(fontStyle_).mergeFrom(value).buildPartial();
      } else {
        fontStyle_ = value;
      }

    }
    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     */
    private void clearFontStyle() {  fontStyle_ = null;

    }

    public static final int MODIFIERS_FIELD_NUMBER = 3;
    private androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers modifiers_;
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 3;</code>
     */
    @java.lang.Override
    public boolean hasModifiers() {
      return modifiers_ != null;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 3;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers getModifiers() {
      return modifiers_ == null ? androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers.getDefaultInstance() : modifiers_;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 3;</code>
     */
    private void setModifiers(androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers value) {
      value.getClass();
  modifiers_ = value;

      }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 3;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers value) {
      value.getClass();
  if (modifiers_ != null &&
          modifiers_ != androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers.getDefaultInstance()) {
        modifiers_ =
          androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers.newBuilder(modifiers_).mergeFrom(value).buildPartial();
      } else {
        modifiers_ = value;
      }

    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 3;</code>
     */
    private void clearModifiers() {  modifiers_ = null;

    }

    public static final int ANDROID_TEXT_STYLE_FIELD_NUMBER = 4;
    private androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle androidTextStyle_;
    /**
     * <pre>
     * An Android platform specific text style configuration options for styling
     * and compatibility.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 4;</code>
     */
    @java.lang.Override
    public boolean hasAndroidTextStyle() {
      return androidTextStyle_ != null;
    }
    /**
     * <pre>
     * An Android platform specific text style configuration options for styling
     * and compatibility.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 4;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle getAndroidTextStyle() {
      return androidTextStyle_ == null ? androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle.getDefaultInstance() : androidTextStyle_;
    }
    /**
     * <pre>
     * An Android platform specific text style configuration options for styling
     * and compatibility.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 4;</code>
     */
    private void setAndroidTextStyle(androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle value) {
      value.getClass();
  androidTextStyle_ = value;

      }
    /**
     * <pre>
     * An Android platform specific text style configuration options for styling
     * and compatibility.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 4;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeAndroidTextStyle(androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle value) {
      value.getClass();
  if (androidTextStyle_ != null &&
          androidTextStyle_ != androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle.getDefaultInstance()) {
        androidTextStyle_ =
          androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle.newBuilder(androidTextStyle_).mergeFrom(value).buildPartial();
      } else {
        androidTextStyle_ = value;
      }

    }
    /**
     * <pre>
     * An Android platform specific text style configuration options for styling
     * and compatibility.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 4;</code>
     */
    private void clearAndroidTextStyle() {  androidTextStyle_ = null;

    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanText parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanText 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.proto.LayoutElementProto.SpanText 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.proto.LayoutElementProto.SpanText 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.proto.LayoutElementProto.SpanText parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanText 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.proto.LayoutElementProto.SpanText parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanText 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.proto.LayoutElementProto.SpanText parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanText 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.proto.LayoutElementProto.SpanText parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanText 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.proto.LayoutElementProto.SpanText prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * A portion of text which can be added to a Span. Two different SpanText
     * elements on the same line will be aligned to the same baseline, regardless of
     * the size of each SpanText.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.SpanText}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.SpanText, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.SpanText)
        androidx.wear.protolayout.proto.LayoutElementProto.SpanTextOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.SpanText.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The text to render.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
       */
      @java.lang.Override
      public boolean hasText() {
        return instance.hasText();
      }
      /**
       * <pre>
       * The text to render.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.TypesProto.StringProp getText() {
        return instance.getText();
      }
      /**
       * <pre>
       * The text to render.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
       */
      public Builder setText(androidx.wear.protolayout.proto.TypesProto.StringProp value) {
        copyOnWrite();
        instance.setText(value);
        return this;
        }
      /**
       * <pre>
       * The text to render.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
       */
      public Builder setText(
          androidx.wear.protolayout.proto.TypesProto.StringProp.Builder builderForValue) {
        copyOnWrite();
        instance.setText(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The text to render.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
       */
      public Builder mergeText(androidx.wear.protolayout.proto.TypesProto.StringProp value) {
        copyOnWrite();
        instance.mergeText(value);
        return this;
      }
      /**
       * <pre>
       * The text to render.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
       */
      public Builder clearText() {  copyOnWrite();
        instance.clearText();
        return this;
      }

      /**
       * <pre>
       * The style of font to use (size, bold etc). If not specified, defaults to
       * the platform's default body font.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
       */
      @java.lang.Override
      public boolean hasFontStyle() {
        return instance.hasFontStyle();
      }
      /**
       * <pre>
       * The style of font to use (size, bold etc). If not specified, defaults to
       * the platform's default body font.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.FontStyle getFontStyle() {
        return instance.getFontStyle();
      }
      /**
       * <pre>
       * The style of font to use (size, bold etc). If not specified, defaults to
       * the platform's default body font.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
       */
      public Builder setFontStyle(androidx.wear.protolayout.proto.LayoutElementProto.FontStyle value) {
        copyOnWrite();
        instance.setFontStyle(value);
        return this;
        }
      /**
       * <pre>
       * The style of font to use (size, bold etc). If not specified, defaults to
       * the platform's default body font.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
       */
      public Builder setFontStyle(
          androidx.wear.protolayout.proto.LayoutElementProto.FontStyle.Builder builderForValue) {
        copyOnWrite();
        instance.setFontStyle(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The style of font to use (size, bold etc). If not specified, defaults to
       * the platform's default body font.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
       */
      public Builder mergeFontStyle(androidx.wear.protolayout.proto.LayoutElementProto.FontStyle value) {
        copyOnWrite();
        instance.mergeFontStyle(value);
        return this;
      }
      /**
       * <pre>
       * The style of font to use (size, bold etc). If not specified, defaults to
       * the platform's default body font.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
       */
      public Builder clearFontStyle() {  copyOnWrite();
        instance.clearFontStyle();
        return this;
      }

      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 3;</code>
       */
      @java.lang.Override
      public boolean hasModifiers() {
        return instance.hasModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 3;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers getModifiers() {
        return instance.getModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 3;</code>
       */
      public Builder setModifiers(androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers value) {
        copyOnWrite();
        instance.setModifiers(value);
        return this;
        }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 3;</code>
       */
      public Builder setModifiers(
          androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers.Builder builderForValue) {
        copyOnWrite();
        instance.setModifiers(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 3;</code>
       */
      public Builder mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers value) {
        copyOnWrite();
        instance.mergeModifiers(value);
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 3;</code>
       */
      public Builder clearModifiers() {  copyOnWrite();
        instance.clearModifiers();
        return this;
      }

      /**
       * <pre>
       * An Android platform specific text style configuration options for styling
       * and compatibility.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 4;</code>
       */
      @java.lang.Override
      public boolean hasAndroidTextStyle() {
        return instance.hasAndroidTextStyle();
      }
      /**
       * <pre>
       * An Android platform specific text style configuration options for styling
       * and compatibility.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 4;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle getAndroidTextStyle() {
        return instance.getAndroidTextStyle();
      }
      /**
       * <pre>
       * An Android platform specific text style configuration options for styling
       * and compatibility.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 4;</code>
       */
      public Builder setAndroidTextStyle(androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle value) {
        copyOnWrite();
        instance.setAndroidTextStyle(value);
        return this;
        }
      /**
       * <pre>
       * An Android platform specific text style configuration options for styling
       * and compatibility.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 4;</code>
       */
      public Builder setAndroidTextStyle(
          androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle.Builder builderForValue) {
        copyOnWrite();
        instance.setAndroidTextStyle(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * An Android platform specific text style configuration options for styling
       * and compatibility.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 4;</code>
       */
      public Builder mergeAndroidTextStyle(androidx.wear.protolayout.proto.LayoutElementProto.AndroidTextStyle value) {
        copyOnWrite();
        instance.mergeAndroidTextStyle(value);
        return this;
      }
      /**
       * <pre>
       * An Android platform specific text style configuration options for styling
       * and compatibility.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.AndroidTextStyle android_text_style = 4;</code>
       */
      public Builder clearAndroidTextStyle() {  copyOnWrite();
        instance.clearAndroidTextStyle();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.SpanText)
    }
    @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.proto.LayoutElementProto.SpanText();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "text_",
              "fontStyle_",
              "modifiers_",
              "androidTextStyle_",
            };
            java.lang.String info =
                "\u0000\u0004\u0000\u0000\u0001\u0004\u0004\u0000\u0000\u0000\u0001\t\u0002\t\u0003" +
                "\t\u0004\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.proto.LayoutElementProto.SpanText> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.SpanText.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.SpanText>(
                        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.proto.SpanText)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.SpanText DEFAULT_INSTANCE;
    static {
      SpanText defaultInstance = new SpanText();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        SpanText.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanText getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The resource_id of the image to render. This must exist in the supplied
     * resource bundle.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
     * @return Whether the resourceId field is set.
     */
    boolean hasResourceId();
    /**
     * <pre>
     * The resource_id of the image to render. This must exist in the supplied
     * resource bundle.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
     * @return The resourceId.
     */
    androidx.wear.protolayout.proto.TypesProto.StringProp getResourceId();

    /**
     * <pre>
     * The width of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp width = 2;</code>
     * @return Whether the width field is set.
     */
    boolean hasWidth();
    /**
     * <pre>
     * The width of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp width = 2;</code>
     * @return The width.
     */
    androidx.wear.protolayout.proto.DimensionProto.DpProp getWidth();

    /**
     * <pre>
     * The height of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp height = 3;</code>
     * @return Whether the height field is set.
     */
    boolean hasHeight();
    /**
     * <pre>
     * The height of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp height = 3;</code>
     * @return The height.
     */
    androidx.wear.protolayout.proto.DimensionProto.DpProp getHeight();

    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 4;</code>
     * @return Whether the modifiers field is set.
     */
    boolean hasModifiers();
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 4;</code>
     * @return The modifiers.
     */
    androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers getModifiers();

    /**
     * <pre>
     * Alignment of this image within the line height of the surrounding
     * Spannable. If undefined, defaults to SPAN_VERTICAL_ALIGN_BOTTOM.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignmentProp alignment = 5;</code>
     * @return Whether the alignment field is set.
     */
    boolean hasAlignment();
    /**
     * <pre>
     * Alignment of this image within the line height of the surrounding
     * Spannable. If undefined, defaults to SPAN_VERTICAL_ALIGN_BOTTOM.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignmentProp alignment = 5;</code>
     * @return The alignment.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp getAlignment();
  }
  /**
   * <pre>
   * An image which can be added to a Span.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.SpanImage}
   */
  public  static final class SpanImage extends
      com.google.protobuf.GeneratedMessageLite<
          SpanImage, SpanImage.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.SpanImage)
      SpanImageOrBuilder {
    private SpanImage() {
    }
    public static final int RESOURCE_ID_FIELD_NUMBER = 1;
    private androidx.wear.protolayout.proto.TypesProto.StringProp resourceId_;
    /**
     * <pre>
     * The resource_id of the image to render. This must exist in the supplied
     * resource bundle.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
     */
    @java.lang.Override
    public boolean hasResourceId() {
      return resourceId_ != null;
    }
    /**
     * <pre>
     * The resource_id of the image to render. This must exist in the supplied
     * resource bundle.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.TypesProto.StringProp getResourceId() {
      return resourceId_ == null ? androidx.wear.protolayout.proto.TypesProto.StringProp.getDefaultInstance() : resourceId_;
    }
    /**
     * <pre>
     * The resource_id of the image to render. This must exist in the supplied
     * resource bundle.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
     */
    private void setResourceId(androidx.wear.protolayout.proto.TypesProto.StringProp value) {
      value.getClass();
  resourceId_ = value;

      }
    /**
     * <pre>
     * The resource_id of the image to render. This must exist in the supplied
     * resource bundle.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeResourceId(androidx.wear.protolayout.proto.TypesProto.StringProp value) {
      value.getClass();
  if (resourceId_ != null &&
          resourceId_ != androidx.wear.protolayout.proto.TypesProto.StringProp.getDefaultInstance()) {
        resourceId_ =
          androidx.wear.protolayout.proto.TypesProto.StringProp.newBuilder(resourceId_).mergeFrom(value).buildPartial();
      } else {
        resourceId_ = value;
      }

    }
    /**
     * <pre>
     * The resource_id of the image to render. This must exist in the supplied
     * resource bundle.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
     */
    private void clearResourceId() {  resourceId_ = null;

    }

    public static final int WIDTH_FIELD_NUMBER = 2;
    private androidx.wear.protolayout.proto.DimensionProto.DpProp width_;
    /**
     * <pre>
     * The width of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp width = 2;</code>
     */
    @java.lang.Override
    public boolean hasWidth() {
      return width_ != null;
    }
    /**
     * <pre>
     * The width of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp width = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.DpProp getWidth() {
      return width_ == null ? androidx.wear.protolayout.proto.DimensionProto.DpProp.getDefaultInstance() : width_;
    }
    /**
     * <pre>
     * The width of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp width = 2;</code>
     */
    private void setWidth(androidx.wear.protolayout.proto.DimensionProto.DpProp value) {
      value.getClass();
  width_ = value;

      }
    /**
     * <pre>
     * The width of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp width = 2;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeWidth(androidx.wear.protolayout.proto.DimensionProto.DpProp value) {
      value.getClass();
  if (width_ != null &&
          width_ != androidx.wear.protolayout.proto.DimensionProto.DpProp.getDefaultInstance()) {
        width_ =
          androidx.wear.protolayout.proto.DimensionProto.DpProp.newBuilder(width_).mergeFrom(value).buildPartial();
      } else {
        width_ = value;
      }

    }
    /**
     * <pre>
     * The width of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp width = 2;</code>
     */
    private void clearWidth() {  width_ = null;

    }

    public static final int HEIGHT_FIELD_NUMBER = 3;
    private androidx.wear.protolayout.proto.DimensionProto.DpProp height_;
    /**
     * <pre>
     * The height of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp height = 3;</code>
     */
    @java.lang.Override
    public boolean hasHeight() {
      return height_ != null;
    }
    /**
     * <pre>
     * The height of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp height = 3;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.DpProp getHeight() {
      return height_ == null ? androidx.wear.protolayout.proto.DimensionProto.DpProp.getDefaultInstance() : height_;
    }
    /**
     * <pre>
     * The height of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp height = 3;</code>
     */
    private void setHeight(androidx.wear.protolayout.proto.DimensionProto.DpProp value) {
      value.getClass();
  height_ = value;

      }
    /**
     * <pre>
     * The height of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp height = 3;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeHeight(androidx.wear.protolayout.proto.DimensionProto.DpProp value) {
      value.getClass();
  if (height_ != null &&
          height_ != androidx.wear.protolayout.proto.DimensionProto.DpProp.getDefaultInstance()) {
        height_ =
          androidx.wear.protolayout.proto.DimensionProto.DpProp.newBuilder(height_).mergeFrom(value).buildPartial();
      } else {
        height_ = value;
      }

    }
    /**
     * <pre>
     * The height of this image. If not defined, the image will not be rendered.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp height = 3;</code>
     */
    private void clearHeight() {  height_ = null;

    }

    public static final int MODIFIERS_FIELD_NUMBER = 4;
    private androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers modifiers_;
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 4;</code>
     */
    @java.lang.Override
    public boolean hasModifiers() {
      return modifiers_ != null;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 4;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers getModifiers() {
      return modifiers_ == null ? androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers.getDefaultInstance() : modifiers_;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 4;</code>
     */
    private void setModifiers(androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers value) {
      value.getClass();
  modifiers_ = value;

      }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 4;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers value) {
      value.getClass();
  if (modifiers_ != null &&
          modifiers_ != androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers.getDefaultInstance()) {
        modifiers_ =
          androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers.newBuilder(modifiers_).mergeFrom(value).buildPartial();
      } else {
        modifiers_ = value;
      }

    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 4;</code>
     */
    private void clearModifiers() {  modifiers_ = null;

    }

    public static final int ALIGNMENT_FIELD_NUMBER = 5;
    private androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp alignment_;
    /**
     * <pre>
     * Alignment of this image within the line height of the surrounding
     * Spannable. If undefined, defaults to SPAN_VERTICAL_ALIGN_BOTTOM.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignmentProp alignment = 5;</code>
     */
    @java.lang.Override
    public boolean hasAlignment() {
      return alignment_ != null;
    }
    /**
     * <pre>
     * Alignment of this image within the line height of the surrounding
     * Spannable. If undefined, defaults to SPAN_VERTICAL_ALIGN_BOTTOM.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignmentProp alignment = 5;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp getAlignment() {
      return alignment_ == null ? androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp.getDefaultInstance() : alignment_;
    }
    /**
     * <pre>
     * Alignment of this image within the line height of the surrounding
     * Spannable. If undefined, defaults to SPAN_VERTICAL_ALIGN_BOTTOM.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignmentProp alignment = 5;</code>
     */
    private void setAlignment(androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp value) {
      value.getClass();
  alignment_ = value;

      }
    /**
     * <pre>
     * Alignment of this image within the line height of the surrounding
     * Spannable. If undefined, defaults to SPAN_VERTICAL_ALIGN_BOTTOM.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignmentProp alignment = 5;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeAlignment(androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp value) {
      value.getClass();
  if (alignment_ != null &&
          alignment_ != androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp.getDefaultInstance()) {
        alignment_ =
          androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp.newBuilder(alignment_).mergeFrom(value).buildPartial();
      } else {
        alignment_ = value;
      }

    }
    /**
     * <pre>
     * Alignment of this image within the line height of the surrounding
     * Spannable. If undefined, defaults to SPAN_VERTICAL_ALIGN_BOTTOM.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignmentProp alignment = 5;</code>
     */
    private void clearAlignment() {  alignment_ = null;

    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanImage parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanImage 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.proto.LayoutElementProto.SpanImage 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.proto.LayoutElementProto.SpanImage 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.proto.LayoutElementProto.SpanImage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanImage 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.proto.LayoutElementProto.SpanImage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanImage 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.proto.LayoutElementProto.SpanImage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanImage 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.proto.LayoutElementProto.SpanImage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanImage 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.proto.LayoutElementProto.SpanImage prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * An image which can be added to a Span.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.SpanImage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.SpanImage, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.SpanImage)
        androidx.wear.protolayout.proto.LayoutElementProto.SpanImageOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.SpanImage.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The resource_id of the image to render. This must exist in the supplied
       * resource bundle.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
       */
      @java.lang.Override
      public boolean hasResourceId() {
        return instance.hasResourceId();
      }
      /**
       * <pre>
       * The resource_id of the image to render. This must exist in the supplied
       * resource bundle.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.TypesProto.StringProp getResourceId() {
        return instance.getResourceId();
      }
      /**
       * <pre>
       * The resource_id of the image to render. This must exist in the supplied
       * resource bundle.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
       */
      public Builder setResourceId(androidx.wear.protolayout.proto.TypesProto.StringProp value) {
        copyOnWrite();
        instance.setResourceId(value);
        return this;
        }
      /**
       * <pre>
       * The resource_id of the image to render. This must exist in the supplied
       * resource bundle.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
       */
      public Builder setResourceId(
          androidx.wear.protolayout.proto.TypesProto.StringProp.Builder builderForValue) {
        copyOnWrite();
        instance.setResourceId(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The resource_id of the image to render. This must exist in the supplied
       * resource bundle.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
       */
      public Builder mergeResourceId(androidx.wear.protolayout.proto.TypesProto.StringProp value) {
        copyOnWrite();
        instance.mergeResourceId(value);
        return this;
      }
      /**
       * <pre>
       * The resource_id of the image to render. This must exist in the supplied
       * resource bundle.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp resource_id = 1;</code>
       */
      public Builder clearResourceId() {  copyOnWrite();
        instance.clearResourceId();
        return this;
      }

      /**
       * <pre>
       * The width of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp width = 2;</code>
       */
      @java.lang.Override
      public boolean hasWidth() {
        return instance.hasWidth();
      }
      /**
       * <pre>
       * The width of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp width = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.DpProp getWidth() {
        return instance.getWidth();
      }
      /**
       * <pre>
       * The width of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp width = 2;</code>
       */
      public Builder setWidth(androidx.wear.protolayout.proto.DimensionProto.DpProp value) {
        copyOnWrite();
        instance.setWidth(value);
        return this;
        }
      /**
       * <pre>
       * The width of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp width = 2;</code>
       */
      public Builder setWidth(
          androidx.wear.protolayout.proto.DimensionProto.DpProp.Builder builderForValue) {
        copyOnWrite();
        instance.setWidth(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The width of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp width = 2;</code>
       */
      public Builder mergeWidth(androidx.wear.protolayout.proto.DimensionProto.DpProp value) {
        copyOnWrite();
        instance.mergeWidth(value);
        return this;
      }
      /**
       * <pre>
       * The width of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp width = 2;</code>
       */
      public Builder clearWidth() {  copyOnWrite();
        instance.clearWidth();
        return this;
      }

      /**
       * <pre>
       * The height of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp height = 3;</code>
       */
      @java.lang.Override
      public boolean hasHeight() {
        return instance.hasHeight();
      }
      /**
       * <pre>
       * The height of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp height = 3;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.DpProp getHeight() {
        return instance.getHeight();
      }
      /**
       * <pre>
       * The height of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp height = 3;</code>
       */
      public Builder setHeight(androidx.wear.protolayout.proto.DimensionProto.DpProp value) {
        copyOnWrite();
        instance.setHeight(value);
        return this;
        }
      /**
       * <pre>
       * The height of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp height = 3;</code>
       */
      public Builder setHeight(
          androidx.wear.protolayout.proto.DimensionProto.DpProp.Builder builderForValue) {
        copyOnWrite();
        instance.setHeight(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The height of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp height = 3;</code>
       */
      public Builder mergeHeight(androidx.wear.protolayout.proto.DimensionProto.DpProp value) {
        copyOnWrite();
        instance.mergeHeight(value);
        return this;
      }
      /**
       * <pre>
       * The height of this image. If not defined, the image will not be rendered.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp height = 3;</code>
       */
      public Builder clearHeight() {  copyOnWrite();
        instance.clearHeight();
        return this;
      }

      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 4;</code>
       */
      @java.lang.Override
      public boolean hasModifiers() {
        return instance.hasModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 4;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers getModifiers() {
        return instance.getModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 4;</code>
       */
      public Builder setModifiers(androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers value) {
        copyOnWrite();
        instance.setModifiers(value);
        return this;
        }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 4;</code>
       */
      public Builder setModifiers(
          androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers.Builder builderForValue) {
        copyOnWrite();
        instance.setModifiers(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 4;</code>
       */
      public Builder mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers value) {
        copyOnWrite();
        instance.mergeModifiers(value);
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanModifiers modifiers = 4;</code>
       */
      public Builder clearModifiers() {  copyOnWrite();
        instance.clearModifiers();
        return this;
      }

      /**
       * <pre>
       * Alignment of this image within the line height of the surrounding
       * Spannable. If undefined, defaults to SPAN_VERTICAL_ALIGN_BOTTOM.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignmentProp alignment = 5;</code>
       */
      @java.lang.Override
      public boolean hasAlignment() {
        return instance.hasAlignment();
      }
      /**
       * <pre>
       * Alignment of this image within the line height of the surrounding
       * Spannable. If undefined, defaults to SPAN_VERTICAL_ALIGN_BOTTOM.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignmentProp alignment = 5;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp getAlignment() {
        return instance.getAlignment();
      }
      /**
       * <pre>
       * Alignment of this image within the line height of the surrounding
       * Spannable. If undefined, defaults to SPAN_VERTICAL_ALIGN_BOTTOM.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignmentProp alignment = 5;</code>
       */
      public Builder setAlignment(androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp value) {
        copyOnWrite();
        instance.setAlignment(value);
        return this;
        }
      /**
       * <pre>
       * Alignment of this image within the line height of the surrounding
       * Spannable. If undefined, defaults to SPAN_VERTICAL_ALIGN_BOTTOM.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignmentProp alignment = 5;</code>
       */
      public Builder setAlignment(
          androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp.Builder builderForValue) {
        copyOnWrite();
        instance.setAlignment(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Alignment of this image within the line height of the surrounding
       * Spannable. If undefined, defaults to SPAN_VERTICAL_ALIGN_BOTTOM.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignmentProp alignment = 5;</code>
       */
      public Builder mergeAlignment(androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp value) {
        copyOnWrite();
        instance.mergeAlignment(value);
        return this;
      }
      /**
       * <pre>
       * Alignment of this image within the line height of the surrounding
       * Spannable. If undefined, defaults to SPAN_VERTICAL_ALIGN_BOTTOM.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpanVerticalAlignmentProp alignment = 5;</code>
       */
      public Builder clearAlignment() {  copyOnWrite();
        instance.clearAlignment();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.SpanImage)
    }
    @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.proto.LayoutElementProto.SpanImage();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "resourceId_",
              "width_",
              "height_",
              "modifiers_",
              "alignment_",
            };
            java.lang.String info =
                "\u0000\u0005\u0000\u0000\u0001\u0005\u0005\u0000\u0000\u0000\u0001\t\u0002\t\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.proto.LayoutElementProto.SpanImage> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.SpanImage.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.SpanImage>(
                        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.proto.SpanImage)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.SpanImage DEFAULT_INSTANCE;
    static {
      SpanImage defaultInstance = new SpanImage();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        SpanImage.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.SpanImage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <code>.androidx.wear.protolayout.proto.SpanText text = 1;</code>
     * @return Whether the text field is set.
     */
    boolean hasText();
    /**
     * <code>.androidx.wear.protolayout.proto.SpanText text = 1;</code>
     * @return The text.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.SpanText getText();

    /**
     * <code>.androidx.wear.protolayout.proto.SpanImage image = 2;</code>
     * @return Whether the image field is set.
     */
    boolean hasImage();
    /**
     * <code>.androidx.wear.protolayout.proto.SpanImage image = 2;</code>
     * @return The image.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.SpanImage getImage();

    public androidx.wear.protolayout.proto.LayoutElementProto.Span.InnerCase getInnerCase();
  }
  /**
   * <pre>
   * A single Span. Each Span forms part of a larger Spannable widget. At the
   * moment, the only widgets which can be added to Spannable containers are
   * SpanText and SpanImage elements.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.Span}
   */
  public  static final class Span extends
      com.google.protobuf.GeneratedMessageLite<
          Span, Span.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.Span)
      SpanOrBuilder {
    private Span() {
    }
    private int innerCase_ = 0;
    private java.lang.Object inner_;
    public enum InnerCase {
      TEXT(1),
      IMAGE(2),
      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 TEXT;
          case 2: return IMAGE;
          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 TEXT_FIELD_NUMBER = 1;
    /**
     * <code>.androidx.wear.protolayout.proto.SpanText text = 1;</code>
     */
    @java.lang.Override
    public boolean hasText() {
      return innerCase_ == 1;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.SpanText text = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.SpanText getText() {
      if (innerCase_ == 1) {
         return (androidx.wear.protolayout.proto.LayoutElementProto.SpanText) inner_;
      }
      return androidx.wear.protolayout.proto.LayoutElementProto.SpanText.getDefaultInstance();
    }
    /**
     * <code>.androidx.wear.protolayout.proto.SpanText text = 1;</code>
     */
    private void setText(androidx.wear.protolayout.proto.LayoutElementProto.SpanText value) {
      value.getClass();
  inner_ = value;
      innerCase_ = 1;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.SpanText text = 1;</code>
     */
    private void mergeText(androidx.wear.protolayout.proto.LayoutElementProto.SpanText value) {
      value.getClass();
  if (innerCase_ == 1 &&
          inner_ != androidx.wear.protolayout.proto.LayoutElementProto.SpanText.getDefaultInstance()) {
        inner_ = androidx.wear.protolayout.proto.LayoutElementProto.SpanText.newBuilder((androidx.wear.protolayout.proto.LayoutElementProto.SpanText) inner_)
            .mergeFrom(value).buildPartial();
      } else {
        inner_ = value;
      }
      innerCase_ = 1;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.SpanText text = 1;</code>
     */
    private void clearText() {
      if (innerCase_ == 1) {
        innerCase_ = 0;
        inner_ = null;
      }
    }

    public static final int IMAGE_FIELD_NUMBER = 2;
    /**
     * <code>.androidx.wear.protolayout.proto.SpanImage image = 2;</code>
     */
    @java.lang.Override
    public boolean hasImage() {
      return innerCase_ == 2;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.SpanImage image = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.SpanImage getImage() {
      if (innerCase_ == 2) {
         return (androidx.wear.protolayout.proto.LayoutElementProto.SpanImage) inner_;
      }
      return androidx.wear.protolayout.proto.LayoutElementProto.SpanImage.getDefaultInstance();
    }
    /**
     * <code>.androidx.wear.protolayout.proto.SpanImage image = 2;</code>
     */
    private void setImage(androidx.wear.protolayout.proto.LayoutElementProto.SpanImage value) {
      value.getClass();
  inner_ = value;
      innerCase_ = 2;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.SpanImage image = 2;</code>
     */
    private void mergeImage(androidx.wear.protolayout.proto.LayoutElementProto.SpanImage value) {
      value.getClass();
  if (innerCase_ == 2 &&
          inner_ != androidx.wear.protolayout.proto.LayoutElementProto.SpanImage.getDefaultInstance()) {
        inner_ = androidx.wear.protolayout.proto.LayoutElementProto.SpanImage.newBuilder((androidx.wear.protolayout.proto.LayoutElementProto.SpanImage) inner_)
            .mergeFrom(value).buildPartial();
      } else {
        inner_ = value;
      }
      innerCase_ = 2;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.SpanImage image = 2;</code>
     */
    private void clearImage() {
      if (innerCase_ == 2) {
        innerCase_ = 0;
        inner_ = null;
      }
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.Span parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Span 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.proto.LayoutElementProto.Span 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.proto.LayoutElementProto.Span 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.proto.LayoutElementProto.Span parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Span 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.proto.LayoutElementProto.Span parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Span 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.proto.LayoutElementProto.Span parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Span 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.proto.LayoutElementProto.Span parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Span 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.proto.LayoutElementProto.Span prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * A single Span. Each Span forms part of a larger Spannable widget. At the
     * moment, the only widgets which can be added to Spannable containers are
     * SpanText and SpanImage elements.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.Span}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.Span, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.Span)
        androidx.wear.protolayout.proto.LayoutElementProto.SpanOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.Span.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

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

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


      /**
       * <code>.androidx.wear.protolayout.proto.SpanText text = 1;</code>
       */
      @java.lang.Override
      public boolean hasText() {
        return instance.hasText();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.SpanText text = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.SpanText getText() {
        return instance.getText();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.SpanText text = 1;</code>
       */
      public Builder setText(androidx.wear.protolayout.proto.LayoutElementProto.SpanText value) {
        copyOnWrite();
        instance.setText(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.SpanText text = 1;</code>
       */
      public Builder setText(
          androidx.wear.protolayout.proto.LayoutElementProto.SpanText.Builder builderForValue) {
        copyOnWrite();
        instance.setText(builderForValue.build());
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.SpanText text = 1;</code>
       */
      public Builder mergeText(androidx.wear.protolayout.proto.LayoutElementProto.SpanText value) {
        copyOnWrite();
        instance.mergeText(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.SpanText text = 1;</code>
       */
      public Builder clearText() {
        copyOnWrite();
        instance.clearText();
        return this;
      }

      /**
       * <code>.androidx.wear.protolayout.proto.SpanImage image = 2;</code>
       */
      @java.lang.Override
      public boolean hasImage() {
        return instance.hasImage();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.SpanImage image = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.SpanImage getImage() {
        return instance.getImage();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.SpanImage image = 2;</code>
       */
      public Builder setImage(androidx.wear.protolayout.proto.LayoutElementProto.SpanImage value) {
        copyOnWrite();
        instance.setImage(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.SpanImage image = 2;</code>
       */
      public Builder setImage(
          androidx.wear.protolayout.proto.LayoutElementProto.SpanImage.Builder builderForValue) {
        copyOnWrite();
        instance.setImage(builderForValue.build());
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.SpanImage image = 2;</code>
       */
      public Builder mergeImage(androidx.wear.protolayout.proto.LayoutElementProto.SpanImage value) {
        copyOnWrite();
        instance.mergeImage(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.SpanImage image = 2;</code>
       */
      public Builder clearImage() {
        copyOnWrite();
        instance.clearImage();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.Span)
    }
    @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.proto.LayoutElementProto.Span();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "inner_",
              "innerCase_",
              androidx.wear.protolayout.proto.LayoutElementProto.SpanText.class,
              androidx.wear.protolayout.proto.LayoutElementProto.SpanImage.class,
            };
            java.lang.String info =
                "\u0000\u0002\u0001\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001<\u0000\u0002<" +
                "\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.proto.LayoutElementProto.Span> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.Span.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.Span>(
                        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.proto.Span)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.Span DEFAULT_INSTANCE;
    static {
      Span defaultInstance = new Span();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        Span.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.Span getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The Span elements that form this Spannable.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
     */
    java.util.List<androidx.wear.protolayout.proto.LayoutElementProto.Span> 
        getSpansList();
    /**
     * <pre>
     * The Span elements that form this Spannable.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
     */
    androidx.wear.protolayout.proto.LayoutElementProto.Span getSpans(int index);
    /**
     * <pre>
     * The Span elements that form this Spannable.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
     */
    int getSpansCount();

    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 2;</code>
     * @return Whether the modifiers field is set.
     */
    boolean hasModifiers();
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 2;</code>
     * @return The modifiers.
     */
    androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers();

    /**
     * <pre>
     * The maximum number of lines that can be represented by the Spannable
     * element. If not defined, the Spannable element will be treated as a
     * single-line element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 3;</code>
     * @return Whether the maxLines field is set.
     */
    boolean hasMaxLines();
    /**
     * <pre>
     * The maximum number of lines that can be represented by the Spannable
     * element. If not defined, the Spannable element will be treated as a
     * single-line element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 3;</code>
     * @return The maxLines.
     */
    androidx.wear.protolayout.proto.TypesProto.Int32Prop getMaxLines();

    /**
     * <pre>
     * Alignment of the Spannable content within its bounds. Note that a Spannable
     * element will size itself to wrap its contents, so this option is
     * meaningless for single-line content (for that, use alignment of the outer
     * container). For multi-line content, however, this will set the alignment of
     * lines relative to the Spannable element bounds. If not defined, defaults to
     * TEXT_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp multiline_alignment = 4;</code>
     * @return Whether the multilineAlignment field is set.
     */
    boolean hasMultilineAlignment();
    /**
     * <pre>
     * Alignment of the Spannable content within its bounds. Note that a Spannable
     * element will size itself to wrap its contents, so this option is
     * meaningless for single-line content (for that, use alignment of the outer
     * container). For multi-line content, however, this will set the alignment of
     * lines relative to the Spannable element bounds. If not defined, defaults to
     * TEXT_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp multiline_alignment = 4;</code>
     * @return The multilineAlignment.
     */
    androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp getMultilineAlignment();

    /**
     * <pre>
     * How to handle content which overflows the bound of the Spannable element.
     * A Spannable element will grow as large as possible inside its parent
     * container (while still respecting max_lines); if it cannot grow large
     * enough to render all of its content, the content which cannot fit inside
     * its container will  be truncated. If not defined, defaults to
     * TEXT_OVERFLOW_TRUNCATE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 5;</code>
     * @return Whether the overflow field is set.
     */
    boolean hasOverflow();
    /**
     * <pre>
     * How to handle content which overflows the bound of the Spannable element.
     * A Spannable element will grow as large as possible inside its parent
     * container (while still respecting max_lines); if it cannot grow large
     * enough to render all of its content, the content which cannot fit inside
     * its container will  be truncated. If not defined, defaults to
     * TEXT_OVERFLOW_TRUNCATE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 5;</code>
     * @return The overflow.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp getOverflow();

    /**
     * <pre>
     * Parameters for Marquee animation. Only applies when overflow is
     * TEXT_OVERFLOW_MARQUEE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 8;</code>
     * @return Whether the marqueeParameters field is set.
     */
    boolean hasMarqueeParameters();
    /**
     * <pre>
     * Parameters for Marquee animation. Only applies when overflow is
     * TEXT_OVERFLOW_MARQUEE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 8;</code>
     * @return The marqueeParameters.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters getMarqueeParameters();

    /**
     * <pre>
     * Extra spacing to add between each line. This will apply to all
     * spans regardless of their font size. This is in addition to original
     * line heights. Note that this won't add any additional space before the
     * first line or after the last line. The default value is zero and negative
     * values will decrease the interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_spacing = 6;</code>
     * @return Whether the lineSpacing field is set.
     */
    boolean hasLineSpacing();
    /**
     * <pre>
     * Extra spacing to add between each line. This will apply to all
     * spans regardless of their font size. This is in addition to original
     * line heights. Note that this won't add any additional space before the
     * first line or after the last line. The default value is zero and negative
     * values will decrease the interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_spacing = 6;</code>
     * @return The lineSpacing.
     */
    androidx.wear.protolayout.proto.DimensionProto.SpProp getLineSpacing();

    /**
     * <pre>
     * The explicit height between lines of text. This is equivalent to the
     * vertical distance between subsequent baselines. If not specified, defaults
     * the font's recommended interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
     * @return Whether the lineHeight field is set.
     */
    boolean hasLineHeight();
    /**
     * <pre>
     * The explicit height between lines of text. This is equivalent to the
     * vertical distance between subsequent baselines. If not specified, defaults
     * the font's recommended interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
     * @return The lineHeight.
     */
    androidx.wear.protolayout.proto.DimensionProto.SpProp getLineHeight();
  }
  /**
   * <pre>
   * A container of Span elements. Currently, this supports SpanImage and SpanText
   * elements, where each individual Span can have different styling applied to it
   * but the resulting text will flow naturally. This allows sections of a
   * paragraph of text to have different styling applied to it, for example,
   * making one or two words bold or italic.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.Spannable}
   */
  public  static final class Spannable extends
      com.google.protobuf.GeneratedMessageLite<
          Spannable, Spannable.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.Spannable)
      SpannableOrBuilder {
    private Spannable() {
      spans_ = emptyProtobufList();
    }
    public static final int SPANS_FIELD_NUMBER = 1;
    private com.google.protobuf.Internal.ProtobufList<androidx.wear.protolayout.proto.LayoutElementProto.Span> spans_;
    /**
     * <pre>
     * The Span elements that form this Spannable.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
     */
    @java.lang.Override
    public java.util.List<androidx.wear.protolayout.proto.LayoutElementProto.Span> getSpansList() {
      return spans_;
    }
    /**
     * <pre>
     * The Span elements that form this Spannable.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
     */
    public java.util.List<? extends androidx.wear.protolayout.proto.LayoutElementProto.SpanOrBuilder> 
        getSpansOrBuilderList() {
      return spans_;
    }
    /**
     * <pre>
     * The Span elements that form this Spannable.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
     */
    @java.lang.Override
    public int getSpansCount() {
      return spans_.size();
    }
    /**
     * <pre>
     * The Span elements that form this Spannable.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.Span getSpans(int index) {
      return spans_.get(index);
    }
    /**
     * <pre>
     * The Span elements that form this Spannable.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
     */
    public androidx.wear.protolayout.proto.LayoutElementProto.SpanOrBuilder getSpansOrBuilder(
        int index) {
      return spans_.get(index);
    }
    private void ensureSpansIsMutable() {
      com.google.protobuf.Internal.ProtobufList<androidx.wear.protolayout.proto.LayoutElementProto.Span> tmp = spans_;
      if (!tmp.isModifiable()) {
        spans_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }

    /**
     * <pre>
     * The Span elements that form this Spannable.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
     */
    private void setSpans(
        int index, androidx.wear.protolayout.proto.LayoutElementProto.Span value) {
      value.getClass();
  ensureSpansIsMutable();
      spans_.set(index, value);
    }
    /**
     * <pre>
     * The Span elements that form this Spannable.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
     */
    private void addSpans(androidx.wear.protolayout.proto.LayoutElementProto.Span value) {
      value.getClass();
  ensureSpansIsMutable();
      spans_.add(value);
    }
    /**
     * <pre>
     * The Span elements that form this Spannable.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
     */
    private void addSpans(
        int index, androidx.wear.protolayout.proto.LayoutElementProto.Span value) {
      value.getClass();
  ensureSpansIsMutable();
      spans_.add(index, value);
    }
    /**
     * <pre>
     * The Span elements that form this Spannable.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
     */
    private void addAllSpans(
        java.lang.Iterable<? extends androidx.wear.protolayout.proto.LayoutElementProto.Span> values) {
      ensureSpansIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, spans_);
    }
    /**
     * <pre>
     * The Span elements that form this Spannable.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
     */
    private void clearSpans() {
      spans_ = emptyProtobufList();
    }
    /**
     * <pre>
     * The Span elements that form this Spannable.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
     */
    private void removeSpans(int index) {
      ensureSpansIsMutable();
      spans_.remove(index);
    }

    public static final int MODIFIERS_FIELD_NUMBER = 2;
    private androidx.wear.protolayout.proto.ModifiersProto.Modifiers modifiers_;
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 2;</code>
     */
    @java.lang.Override
    public boolean hasModifiers() {
      return modifiers_ != null;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers() {
      return modifiers_ == null ? androidx.wear.protolayout.proto.ModifiersProto.Modifiers.getDefaultInstance() : modifiers_;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 2;</code>
     */
    private void setModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
      value.getClass();
  modifiers_ = value;

      }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 2;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
      value.getClass();
  if (modifiers_ != null &&
          modifiers_ != androidx.wear.protolayout.proto.ModifiersProto.Modifiers.getDefaultInstance()) {
        modifiers_ =
          androidx.wear.protolayout.proto.ModifiersProto.Modifiers.newBuilder(modifiers_).mergeFrom(value).buildPartial();
      } else {
        modifiers_ = value;
      }

    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 2;</code>
     */
    private void clearModifiers() {  modifiers_ = null;

    }

    public static final int MAX_LINES_FIELD_NUMBER = 3;
    private androidx.wear.protolayout.proto.TypesProto.Int32Prop maxLines_;
    /**
     * <pre>
     * The maximum number of lines that can be represented by the Spannable
     * element. If not defined, the Spannable element will be treated as a
     * single-line element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 3;</code>
     */
    @java.lang.Override
    public boolean hasMaxLines() {
      return maxLines_ != null;
    }
    /**
     * <pre>
     * The maximum number of lines that can be represented by the Spannable
     * element. If not defined, the Spannable element will be treated as a
     * single-line element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 3;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.TypesProto.Int32Prop getMaxLines() {
      return maxLines_ == null ? androidx.wear.protolayout.proto.TypesProto.Int32Prop.getDefaultInstance() : maxLines_;
    }
    /**
     * <pre>
     * The maximum number of lines that can be represented by the Spannable
     * element. If not defined, the Spannable element will be treated as a
     * single-line element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 3;</code>
     */
    private void setMaxLines(androidx.wear.protolayout.proto.TypesProto.Int32Prop value) {
      value.getClass();
  maxLines_ = value;

      }
    /**
     * <pre>
     * The maximum number of lines that can be represented by the Spannable
     * element. If not defined, the Spannable element will be treated as a
     * single-line element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 3;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeMaxLines(androidx.wear.protolayout.proto.TypesProto.Int32Prop value) {
      value.getClass();
  if (maxLines_ != null &&
          maxLines_ != androidx.wear.protolayout.proto.TypesProto.Int32Prop.getDefaultInstance()) {
        maxLines_ =
          androidx.wear.protolayout.proto.TypesProto.Int32Prop.newBuilder(maxLines_).mergeFrom(value).buildPartial();
      } else {
        maxLines_ = value;
      }

    }
    /**
     * <pre>
     * The maximum number of lines that can be represented by the Spannable
     * element. If not defined, the Spannable element will be treated as a
     * single-line element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 3;</code>
     */
    private void clearMaxLines() {  maxLines_ = null;

    }

    public static final int MULTILINE_ALIGNMENT_FIELD_NUMBER = 4;
    private androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp multilineAlignment_;
    /**
     * <pre>
     * Alignment of the Spannable content within its bounds. Note that a Spannable
     * element will size itself to wrap its contents, so this option is
     * meaningless for single-line content (for that, use alignment of the outer
     * container). For multi-line content, however, this will set the alignment of
     * lines relative to the Spannable element bounds. If not defined, defaults to
     * TEXT_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp multiline_alignment = 4;</code>
     */
    @java.lang.Override
    public boolean hasMultilineAlignment() {
      return multilineAlignment_ != null;
    }
    /**
     * <pre>
     * Alignment of the Spannable content within its bounds. Note that a Spannable
     * element will size itself to wrap its contents, so this option is
     * meaningless for single-line content (for that, use alignment of the outer
     * container). For multi-line content, however, this will set the alignment of
     * lines relative to the Spannable element bounds. If not defined, defaults to
     * TEXT_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp multiline_alignment = 4;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp getMultilineAlignment() {
      return multilineAlignment_ == null ? androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp.getDefaultInstance() : multilineAlignment_;
    }
    /**
     * <pre>
     * Alignment of the Spannable content within its bounds. Note that a Spannable
     * element will size itself to wrap its contents, so this option is
     * meaningless for single-line content (for that, use alignment of the outer
     * container). For multi-line content, however, this will set the alignment of
     * lines relative to the Spannable element bounds. If not defined, defaults to
     * TEXT_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp multiline_alignment = 4;</code>
     */
    private void setMultilineAlignment(androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp value) {
      value.getClass();
  multilineAlignment_ = value;

      }
    /**
     * <pre>
     * Alignment of the Spannable content within its bounds. Note that a Spannable
     * element will size itself to wrap its contents, so this option is
     * meaningless for single-line content (for that, use alignment of the outer
     * container). For multi-line content, however, this will set the alignment of
     * lines relative to the Spannable element bounds. If not defined, defaults to
     * TEXT_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp multiline_alignment = 4;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeMultilineAlignment(androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp value) {
      value.getClass();
  if (multilineAlignment_ != null &&
          multilineAlignment_ != androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp.getDefaultInstance()) {
        multilineAlignment_ =
          androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp.newBuilder(multilineAlignment_).mergeFrom(value).buildPartial();
      } else {
        multilineAlignment_ = value;
      }

    }
    /**
     * <pre>
     * Alignment of the Spannable content within its bounds. Note that a Spannable
     * element will size itself to wrap its contents, so this option is
     * meaningless for single-line content (for that, use alignment of the outer
     * container). For multi-line content, however, this will set the alignment of
     * lines relative to the Spannable element bounds. If not defined, defaults to
     * TEXT_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp multiline_alignment = 4;</code>
     */
    private void clearMultilineAlignment() {  multilineAlignment_ = null;

    }

    public static final int OVERFLOW_FIELD_NUMBER = 5;
    private androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp overflow_;
    /**
     * <pre>
     * How to handle content which overflows the bound of the Spannable element.
     * A Spannable element will grow as large as possible inside its parent
     * container (while still respecting max_lines); if it cannot grow large
     * enough to render all of its content, the content which cannot fit inside
     * its container will  be truncated. If not defined, defaults to
     * TEXT_OVERFLOW_TRUNCATE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 5;</code>
     */
    @java.lang.Override
    public boolean hasOverflow() {
      return overflow_ != null;
    }
    /**
     * <pre>
     * How to handle content which overflows the bound of the Spannable element.
     * A Spannable element will grow as large as possible inside its parent
     * container (while still respecting max_lines); if it cannot grow large
     * enough to render all of its content, the content which cannot fit inside
     * its container will  be truncated. If not defined, defaults to
     * TEXT_OVERFLOW_TRUNCATE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 5;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp getOverflow() {
      return overflow_ == null ? androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp.getDefaultInstance() : overflow_;
    }
    /**
     * <pre>
     * How to handle content which overflows the bound of the Spannable element.
     * A Spannable element will grow as large as possible inside its parent
     * container (while still respecting max_lines); if it cannot grow large
     * enough to render all of its content, the content which cannot fit inside
     * its container will  be truncated. If not defined, defaults to
     * TEXT_OVERFLOW_TRUNCATE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 5;</code>
     */
    private void setOverflow(androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp value) {
      value.getClass();
  overflow_ = value;

      }
    /**
     * <pre>
     * How to handle content which overflows the bound of the Spannable element.
     * A Spannable element will grow as large as possible inside its parent
     * container (while still respecting max_lines); if it cannot grow large
     * enough to render all of its content, the content which cannot fit inside
     * its container will  be truncated. If not defined, defaults to
     * TEXT_OVERFLOW_TRUNCATE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 5;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeOverflow(androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp value) {
      value.getClass();
  if (overflow_ != null &&
          overflow_ != androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp.getDefaultInstance()) {
        overflow_ =
          androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp.newBuilder(overflow_).mergeFrom(value).buildPartial();
      } else {
        overflow_ = value;
      }

    }
    /**
     * <pre>
     * How to handle content which overflows the bound of the Spannable element.
     * A Spannable element will grow as large as possible inside its parent
     * container (while still respecting max_lines); if it cannot grow large
     * enough to render all of its content, the content which cannot fit inside
     * its container will  be truncated. If not defined, defaults to
     * TEXT_OVERFLOW_TRUNCATE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 5;</code>
     */
    private void clearOverflow() {  overflow_ = null;

    }

    public static final int MARQUEE_PARAMETERS_FIELD_NUMBER = 8;
    private androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters marqueeParameters_;
    /**
     * <pre>
     * Parameters for Marquee animation. Only applies when overflow is
     * TEXT_OVERFLOW_MARQUEE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 8;</code>
     */
    @java.lang.Override
    public boolean hasMarqueeParameters() {
      return marqueeParameters_ != null;
    }
    /**
     * <pre>
     * Parameters for Marquee animation. Only applies when overflow is
     * TEXT_OVERFLOW_MARQUEE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 8;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters getMarqueeParameters() {
      return marqueeParameters_ == null ? androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters.getDefaultInstance() : marqueeParameters_;
    }
    /**
     * <pre>
     * Parameters for Marquee animation. Only applies when overflow is
     * TEXT_OVERFLOW_MARQUEE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 8;</code>
     */
    private void setMarqueeParameters(androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters value) {
      value.getClass();
  marqueeParameters_ = value;

      }
    /**
     * <pre>
     * Parameters for Marquee animation. Only applies when overflow is
     * TEXT_OVERFLOW_MARQUEE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 8;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeMarqueeParameters(androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters value) {
      value.getClass();
  if (marqueeParameters_ != null &&
          marqueeParameters_ != androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters.getDefaultInstance()) {
        marqueeParameters_ =
          androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters.newBuilder(marqueeParameters_).mergeFrom(value).buildPartial();
      } else {
        marqueeParameters_ = value;
      }

    }
    /**
     * <pre>
     * Parameters for Marquee animation. Only applies when overflow is
     * TEXT_OVERFLOW_MARQUEE.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 8;</code>
     */
    private void clearMarqueeParameters() {  marqueeParameters_ = null;

    }

    public static final int LINE_SPACING_FIELD_NUMBER = 6;
    private androidx.wear.protolayout.proto.DimensionProto.SpProp lineSpacing_;
    /**
     * <pre>
     * Extra spacing to add between each line. This will apply to all
     * spans regardless of their font size. This is in addition to original
     * line heights. Note that this won't add any additional space before the
     * first line or after the last line. The default value is zero and negative
     * values will decrease the interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_spacing = 6;</code>
     */
    @java.lang.Override
    public boolean hasLineSpacing() {
      return lineSpacing_ != null;
    }
    /**
     * <pre>
     * Extra spacing to add between each line. This will apply to all
     * spans regardless of their font size. This is in addition to original
     * line heights. Note that this won't add any additional space before the
     * first line or after the last line. The default value is zero and negative
     * values will decrease the interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_spacing = 6;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.SpProp getLineSpacing() {
      return lineSpacing_ == null ? androidx.wear.protolayout.proto.DimensionProto.SpProp.getDefaultInstance() : lineSpacing_;
    }
    /**
     * <pre>
     * Extra spacing to add between each line. This will apply to all
     * spans regardless of their font size. This is in addition to original
     * line heights. Note that this won't add any additional space before the
     * first line or after the last line. The default value is zero and negative
     * values will decrease the interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_spacing = 6;</code>
     */
    private void setLineSpacing(androidx.wear.protolayout.proto.DimensionProto.SpProp value) {
      value.getClass();
  lineSpacing_ = value;

      }
    /**
     * <pre>
     * Extra spacing to add between each line. This will apply to all
     * spans regardless of their font size. This is in addition to original
     * line heights. Note that this won't add any additional space before the
     * first line or after the last line. The default value is zero and negative
     * values will decrease the interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_spacing = 6;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeLineSpacing(androidx.wear.protolayout.proto.DimensionProto.SpProp value) {
      value.getClass();
  if (lineSpacing_ != null &&
          lineSpacing_ != androidx.wear.protolayout.proto.DimensionProto.SpProp.getDefaultInstance()) {
        lineSpacing_ =
          androidx.wear.protolayout.proto.DimensionProto.SpProp.newBuilder(lineSpacing_).mergeFrom(value).buildPartial();
      } else {
        lineSpacing_ = value;
      }

    }
    /**
     * <pre>
     * Extra spacing to add between each line. This will apply to all
     * spans regardless of their font size. This is in addition to original
     * line heights. Note that this won't add any additional space before the
     * first line or after the last line. The default value is zero and negative
     * values will decrease the interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_spacing = 6;</code>
     */
    private void clearLineSpacing() {  lineSpacing_ = null;

    }

    public static final int LINE_HEIGHT_FIELD_NUMBER = 7;
    private androidx.wear.protolayout.proto.DimensionProto.SpProp lineHeight_;
    /**
     * <pre>
     * The explicit height between lines of text. This is equivalent to the
     * vertical distance between subsequent baselines. If not specified, defaults
     * the font's recommended interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
     */
    @java.lang.Override
    public boolean hasLineHeight() {
      return lineHeight_ != null;
    }
    /**
     * <pre>
     * The explicit height between lines of text. This is equivalent to the
     * vertical distance between subsequent baselines. If not specified, defaults
     * the font's recommended interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.SpProp getLineHeight() {
      return lineHeight_ == null ? androidx.wear.protolayout.proto.DimensionProto.SpProp.getDefaultInstance() : lineHeight_;
    }
    /**
     * <pre>
     * The explicit height between lines of text. This is equivalent to the
     * vertical distance between subsequent baselines. If not specified, defaults
     * the font's recommended interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
     */
    private void setLineHeight(androidx.wear.protolayout.proto.DimensionProto.SpProp value) {
      value.getClass();
  lineHeight_ = value;

      }
    /**
     * <pre>
     * The explicit height between lines of text. This is equivalent to the
     * vertical distance between subsequent baselines. If not specified, defaults
     * the font's recommended interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeLineHeight(androidx.wear.protolayout.proto.DimensionProto.SpProp value) {
      value.getClass();
  if (lineHeight_ != null &&
          lineHeight_ != androidx.wear.protolayout.proto.DimensionProto.SpProp.getDefaultInstance()) {
        lineHeight_ =
          androidx.wear.protolayout.proto.DimensionProto.SpProp.newBuilder(lineHeight_).mergeFrom(value).buildPartial();
      } else {
        lineHeight_ = value;
      }

    }
    /**
     * <pre>
     * The explicit height between lines of text. This is equivalent to the
     * vertical distance between subsequent baselines. If not specified, defaults
     * the font's recommended interline spacing.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
     */
    private void clearLineHeight() {  lineHeight_ = null;

    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.Spannable parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Spannable 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.proto.LayoutElementProto.Spannable 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.proto.LayoutElementProto.Spannable 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.proto.LayoutElementProto.Spannable parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Spannable 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.proto.LayoutElementProto.Spannable parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Spannable 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.proto.LayoutElementProto.Spannable parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Spannable 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.proto.LayoutElementProto.Spannable parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Spannable 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.proto.LayoutElementProto.Spannable prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * A container of Span elements. Currently, this supports SpanImage and SpanText
     * elements, where each individual Span can have different styling applied to it
     * but the resulting text will flow naturally. This allows sections of a
     * paragraph of text to have different styling applied to it, for example,
     * making one or two words bold or italic.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.Spannable}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.Spannable, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.Spannable)
        androidx.wear.protolayout.proto.LayoutElementProto.SpannableOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.Spannable.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The Span elements that form this Spannable.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
       */
      @java.lang.Override
      public java.util.List<androidx.wear.protolayout.proto.LayoutElementProto.Span> getSpansList() {
        return java.util.Collections.unmodifiableList(
            instance.getSpansList());
      }
      /**
       * <pre>
       * The Span elements that form this Spannable.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
       */
      @java.lang.Override
      public int getSpansCount() {
        return instance.getSpansCount();
      }/**
       * <pre>
       * The Span elements that form this Spannable.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.Span getSpans(int index) {
        return instance.getSpans(index);
      }
      /**
       * <pre>
       * The Span elements that form this Spannable.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
       */
      public Builder setSpans(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.Span value) {
        copyOnWrite();
        instance.setSpans(index, value);
        return this;
      }
      /**
       * <pre>
       * The Span elements that form this Spannable.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
       */
      public Builder setSpans(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.Span.Builder builderForValue) {
        copyOnWrite();
        instance.setSpans(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The Span elements that form this Spannable.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
       */
      public Builder addSpans(androidx.wear.protolayout.proto.LayoutElementProto.Span value) {
        copyOnWrite();
        instance.addSpans(value);
        return this;
      }
      /**
       * <pre>
       * The Span elements that form this Spannable.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
       */
      public Builder addSpans(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.Span value) {
        copyOnWrite();
        instance.addSpans(index, value);
        return this;
      }
      /**
       * <pre>
       * The Span elements that form this Spannable.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
       */
      public Builder addSpans(
          androidx.wear.protolayout.proto.LayoutElementProto.Span.Builder builderForValue) {
        copyOnWrite();
        instance.addSpans(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The Span elements that form this Spannable.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
       */
      public Builder addSpans(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.Span.Builder builderForValue) {
        copyOnWrite();
        instance.addSpans(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The Span elements that form this Spannable.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
       */
      public Builder addAllSpans(
          java.lang.Iterable<? extends androidx.wear.protolayout.proto.LayoutElementProto.Span> values) {
        copyOnWrite();
        instance.addAllSpans(values);
        return this;
      }
      /**
       * <pre>
       * The Span elements that form this Spannable.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
       */
      public Builder clearSpans() {
        copyOnWrite();
        instance.clearSpans();
        return this;
      }
      /**
       * <pre>
       * The Span elements that form this Spannable.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.Span spans = 1;</code>
       */
      public Builder removeSpans(int index) {
        copyOnWrite();
        instance.removeSpans(index);
        return this;
      }

      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 2;</code>
       */
      @java.lang.Override
      public boolean hasModifiers() {
        return instance.hasModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers() {
        return instance.getModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 2;</code>
       */
      public Builder setModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
        copyOnWrite();
        instance.setModifiers(value);
        return this;
        }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 2;</code>
       */
      public Builder setModifiers(
          androidx.wear.protolayout.proto.ModifiersProto.Modifiers.Builder builderForValue) {
        copyOnWrite();
        instance.setModifiers(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 2;</code>
       */
      public Builder mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
        copyOnWrite();
        instance.mergeModifiers(value);
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 2;</code>
       */
      public Builder clearModifiers() {  copyOnWrite();
        instance.clearModifiers();
        return this;
      }

      /**
       * <pre>
       * The maximum number of lines that can be represented by the Spannable
       * element. If not defined, the Spannable element will be treated as a
       * single-line element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 3;</code>
       */
      @java.lang.Override
      public boolean hasMaxLines() {
        return instance.hasMaxLines();
      }
      /**
       * <pre>
       * The maximum number of lines that can be represented by the Spannable
       * element. If not defined, the Spannable element will be treated as a
       * single-line element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 3;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.TypesProto.Int32Prop getMaxLines() {
        return instance.getMaxLines();
      }
      /**
       * <pre>
       * The maximum number of lines that can be represented by the Spannable
       * element. If not defined, the Spannable element will be treated as a
       * single-line element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 3;</code>
       */
      public Builder setMaxLines(androidx.wear.protolayout.proto.TypesProto.Int32Prop value) {
        copyOnWrite();
        instance.setMaxLines(value);
        return this;
        }
      /**
       * <pre>
       * The maximum number of lines that can be represented by the Spannable
       * element. If not defined, the Spannable element will be treated as a
       * single-line element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 3;</code>
       */
      public Builder setMaxLines(
          androidx.wear.protolayout.proto.TypesProto.Int32Prop.Builder builderForValue) {
        copyOnWrite();
        instance.setMaxLines(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The maximum number of lines that can be represented by the Spannable
       * element. If not defined, the Spannable element will be treated as a
       * single-line element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 3;</code>
       */
      public Builder mergeMaxLines(androidx.wear.protolayout.proto.TypesProto.Int32Prop value) {
        copyOnWrite();
        instance.mergeMaxLines(value);
        return this;
      }
      /**
       * <pre>
       * The maximum number of lines that can be represented by the Spannable
       * element. If not defined, the Spannable element will be treated as a
       * single-line element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Int32Prop max_lines = 3;</code>
       */
      public Builder clearMaxLines() {  copyOnWrite();
        instance.clearMaxLines();
        return this;
      }

      /**
       * <pre>
       * Alignment of the Spannable content within its bounds. Note that a Spannable
       * element will size itself to wrap its contents, so this option is
       * meaningless for single-line content (for that, use alignment of the outer
       * container). For multi-line content, however, this will set the alignment of
       * lines relative to the Spannable element bounds. If not defined, defaults to
       * TEXT_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp multiline_alignment = 4;</code>
       */
      @java.lang.Override
      public boolean hasMultilineAlignment() {
        return instance.hasMultilineAlignment();
      }
      /**
       * <pre>
       * Alignment of the Spannable content within its bounds. Note that a Spannable
       * element will size itself to wrap its contents, so this option is
       * meaningless for single-line content (for that, use alignment of the outer
       * container). For multi-line content, however, this will set the alignment of
       * lines relative to the Spannable element bounds. If not defined, defaults to
       * TEXT_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp multiline_alignment = 4;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp getMultilineAlignment() {
        return instance.getMultilineAlignment();
      }
      /**
       * <pre>
       * Alignment of the Spannable content within its bounds. Note that a Spannable
       * element will size itself to wrap its contents, so this option is
       * meaningless for single-line content (for that, use alignment of the outer
       * container). For multi-line content, however, this will set the alignment of
       * lines relative to the Spannable element bounds. If not defined, defaults to
       * TEXT_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp multiline_alignment = 4;</code>
       */
      public Builder setMultilineAlignment(androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp value) {
        copyOnWrite();
        instance.setMultilineAlignment(value);
        return this;
        }
      /**
       * <pre>
       * Alignment of the Spannable content within its bounds. Note that a Spannable
       * element will size itself to wrap its contents, so this option is
       * meaningless for single-line content (for that, use alignment of the outer
       * container). For multi-line content, however, this will set the alignment of
       * lines relative to the Spannable element bounds. If not defined, defaults to
       * TEXT_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp multiline_alignment = 4;</code>
       */
      public Builder setMultilineAlignment(
          androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp.Builder builderForValue) {
        copyOnWrite();
        instance.setMultilineAlignment(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Alignment of the Spannable content within its bounds. Note that a Spannable
       * element will size itself to wrap its contents, so this option is
       * meaningless for single-line content (for that, use alignment of the outer
       * container). For multi-line content, however, this will set the alignment of
       * lines relative to the Spannable element bounds. If not defined, defaults to
       * TEXT_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp multiline_alignment = 4;</code>
       */
      public Builder mergeMultilineAlignment(androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp value) {
        copyOnWrite();
        instance.mergeMultilineAlignment(value);
        return this;
      }
      /**
       * <pre>
       * Alignment of the Spannable content within its bounds. Note that a Spannable
       * element will size itself to wrap its contents, so this option is
       * meaningless for single-line content (for that, use alignment of the outer
       * container). For multi-line content, however, this will set the alignment of
       * lines relative to the Spannable element bounds. If not defined, defaults to
       * TEXT_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp multiline_alignment = 4;</code>
       */
      public Builder clearMultilineAlignment() {  copyOnWrite();
        instance.clearMultilineAlignment();
        return this;
      }

      /**
       * <pre>
       * How to handle content which overflows the bound of the Spannable element.
       * A Spannable element will grow as large as possible inside its parent
       * container (while still respecting max_lines); if it cannot grow large
       * enough to render all of its content, the content which cannot fit inside
       * its container will  be truncated. If not defined, defaults to
       * TEXT_OVERFLOW_TRUNCATE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 5;</code>
       */
      @java.lang.Override
      public boolean hasOverflow() {
        return instance.hasOverflow();
      }
      /**
       * <pre>
       * How to handle content which overflows the bound of the Spannable element.
       * A Spannable element will grow as large as possible inside its parent
       * container (while still respecting max_lines); if it cannot grow large
       * enough to render all of its content, the content which cannot fit inside
       * its container will  be truncated. If not defined, defaults to
       * TEXT_OVERFLOW_TRUNCATE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 5;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp getOverflow() {
        return instance.getOverflow();
      }
      /**
       * <pre>
       * How to handle content which overflows the bound of the Spannable element.
       * A Spannable element will grow as large as possible inside its parent
       * container (while still respecting max_lines); if it cannot grow large
       * enough to render all of its content, the content which cannot fit inside
       * its container will  be truncated. If not defined, defaults to
       * TEXT_OVERFLOW_TRUNCATE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 5;</code>
       */
      public Builder setOverflow(androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp value) {
        copyOnWrite();
        instance.setOverflow(value);
        return this;
        }
      /**
       * <pre>
       * How to handle content which overflows the bound of the Spannable element.
       * A Spannable element will grow as large as possible inside its parent
       * container (while still respecting max_lines); if it cannot grow large
       * enough to render all of its content, the content which cannot fit inside
       * its container will  be truncated. If not defined, defaults to
       * TEXT_OVERFLOW_TRUNCATE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 5;</code>
       */
      public Builder setOverflow(
          androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp.Builder builderForValue) {
        copyOnWrite();
        instance.setOverflow(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * How to handle content which overflows the bound of the Spannable element.
       * A Spannable element will grow as large as possible inside its parent
       * container (while still respecting max_lines); if it cannot grow large
       * enough to render all of its content, the content which cannot fit inside
       * its container will  be truncated. If not defined, defaults to
       * TEXT_OVERFLOW_TRUNCATE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 5;</code>
       */
      public Builder mergeOverflow(androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp value) {
        copyOnWrite();
        instance.mergeOverflow(value);
        return this;
      }
      /**
       * <pre>
       * How to handle content which overflows the bound of the Spannable element.
       * A Spannable element will grow as large as possible inside its parent
       * container (while still respecting max_lines); if it cannot grow large
       * enough to render all of its content, the content which cannot fit inside
       * its container will  be truncated. If not defined, defaults to
       * TEXT_OVERFLOW_TRUNCATE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TextOverflowProp overflow = 5;</code>
       */
      public Builder clearOverflow() {  copyOnWrite();
        instance.clearOverflow();
        return this;
      }

      /**
       * <pre>
       * Parameters for Marquee animation. Only applies when overflow is
       * TEXT_OVERFLOW_MARQUEE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 8;</code>
       */
      @java.lang.Override
      public boolean hasMarqueeParameters() {
        return instance.hasMarqueeParameters();
      }
      /**
       * <pre>
       * Parameters for Marquee animation. Only applies when overflow is
       * TEXT_OVERFLOW_MARQUEE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 8;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters getMarqueeParameters() {
        return instance.getMarqueeParameters();
      }
      /**
       * <pre>
       * Parameters for Marquee animation. Only applies when overflow is
       * TEXT_OVERFLOW_MARQUEE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 8;</code>
       */
      public Builder setMarqueeParameters(androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters value) {
        copyOnWrite();
        instance.setMarqueeParameters(value);
        return this;
        }
      /**
       * <pre>
       * Parameters for Marquee animation. Only applies when overflow is
       * TEXT_OVERFLOW_MARQUEE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 8;</code>
       */
      public Builder setMarqueeParameters(
          androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters.Builder builderForValue) {
        copyOnWrite();
        instance.setMarqueeParameters(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Parameters for Marquee animation. Only applies when overflow is
       * TEXT_OVERFLOW_MARQUEE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 8;</code>
       */
      public Builder mergeMarqueeParameters(androidx.wear.protolayout.proto.LayoutElementProto.MarqueeParameters value) {
        copyOnWrite();
        instance.mergeMarqueeParameters(value);
        return this;
      }
      /**
       * <pre>
       * Parameters for Marquee animation. Only applies when overflow is
       * TEXT_OVERFLOW_MARQUEE.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.MarqueeParameters marquee_parameters = 8;</code>
       */
      public Builder clearMarqueeParameters() {  copyOnWrite();
        instance.clearMarqueeParameters();
        return this;
      }

      /**
       * <pre>
       * Extra spacing to add between each line. This will apply to all
       * spans regardless of their font size. This is in addition to original
       * line heights. Note that this won't add any additional space before the
       * first line or after the last line. The default value is zero and negative
       * values will decrease the interline spacing.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpProp line_spacing = 6;</code>
       */
      @java.lang.Override
      public boolean hasLineSpacing() {
        return instance.hasLineSpacing();
      }
      /**
       * <pre>
       * Extra spacing to add between each line. This will apply to all
       * spans regardless of their font size. This is in addition to original
       * line heights. Note that this won't add any additional space before the
       * first line or after the last line. The default value is zero and negative
       * values will decrease the interline spacing.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpProp line_spacing = 6;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.SpProp getLineSpacing() {
        return instance.getLineSpacing();
      }
      /**
       * <pre>
       * Extra spacing to add between each line. This will apply to all
       * spans regardless of their font size. This is in addition to original
       * line heights. Note that this won't add any additional space before the
       * first line or after the last line. The default value is zero and negative
       * values will decrease the interline spacing.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpProp line_spacing = 6;</code>
       */
      public Builder setLineSpacing(androidx.wear.protolayout.proto.DimensionProto.SpProp value) {
        copyOnWrite();
        instance.setLineSpacing(value);
        return this;
        }
      /**
       * <pre>
       * Extra spacing to add between each line. This will apply to all
       * spans regardless of their font size. This is in addition to original
       * line heights. Note that this won't add any additional space before the
       * first line or after the last line. The default value is zero and negative
       * values will decrease the interline spacing.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpProp line_spacing = 6;</code>
       */
      public Builder setLineSpacing(
          androidx.wear.protolayout.proto.DimensionProto.SpProp.Builder builderForValue) {
        copyOnWrite();
        instance.setLineSpacing(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Extra spacing to add between each line. This will apply to all
       * spans regardless of their font size. This is in addition to original
       * line heights. Note that this won't add any additional space before the
       * first line or after the last line. The default value is zero and negative
       * values will decrease the interline spacing.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpProp line_spacing = 6;</code>
       */
      public Builder mergeLineSpacing(androidx.wear.protolayout.proto.DimensionProto.SpProp value) {
        copyOnWrite();
        instance.mergeLineSpacing(value);
        return this;
      }
      /**
       * <pre>
       * Extra spacing to add between each line. This will apply to all
       * spans regardless of their font size. This is in addition to original
       * line heights. Note that this won't add any additional space before the
       * first line or after the last line. The default value is zero and negative
       * values will decrease the interline spacing.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpProp line_spacing = 6;</code>
       */
      public Builder clearLineSpacing() {  copyOnWrite();
        instance.clearLineSpacing();
        return this;
      }

      /**
       * <pre>
       * The explicit height between lines of text. This is equivalent to the
       * vertical distance between subsequent baselines. If not specified, defaults
       * the font's recommended interline spacing.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
       */
      @java.lang.Override
      public boolean hasLineHeight() {
        return instance.hasLineHeight();
      }
      /**
       * <pre>
       * The explicit height between lines of text. This is equivalent to the
       * vertical distance between subsequent baselines. If not specified, defaults
       * the font's recommended interline spacing.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.SpProp getLineHeight() {
        return instance.getLineHeight();
      }
      /**
       * <pre>
       * The explicit height between lines of text. This is equivalent to the
       * vertical distance between subsequent baselines. If not specified, defaults
       * the font's recommended interline spacing.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
       */
      public Builder setLineHeight(androidx.wear.protolayout.proto.DimensionProto.SpProp value) {
        copyOnWrite();
        instance.setLineHeight(value);
        return this;
        }
      /**
       * <pre>
       * The explicit height between lines of text. This is equivalent to the
       * vertical distance between subsequent baselines. If not specified, defaults
       * the font's recommended interline spacing.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
       */
      public Builder setLineHeight(
          androidx.wear.protolayout.proto.DimensionProto.SpProp.Builder builderForValue) {
        copyOnWrite();
        instance.setLineHeight(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The explicit height between lines of text. This is equivalent to the
       * vertical distance between subsequent baselines. If not specified, defaults
       * the font's recommended interline spacing.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
       */
      public Builder mergeLineHeight(androidx.wear.protolayout.proto.DimensionProto.SpProp value) {
        copyOnWrite();
        instance.mergeLineHeight(value);
        return this;
      }
      /**
       * <pre>
       * The explicit height between lines of text. This is equivalent to the
       * vertical distance between subsequent baselines. If not specified, defaults
       * the font's recommended interline spacing.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.SpProp line_height = 7;</code>
       */
      public Builder clearLineHeight() {  copyOnWrite();
        instance.clearLineHeight();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.Spannable)
    }
    @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.proto.LayoutElementProto.Spannable();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "spans_",
              androidx.wear.protolayout.proto.LayoutElementProto.Span.class,
              "modifiers_",
              "maxLines_",
              "multilineAlignment_",
              "overflow_",
              "lineSpacing_",
              "lineHeight_",
              "marqueeParameters_",
            };
            java.lang.String info =
                "\u0000\b\u0000\u0000\u0001\b\b\u0000\u0001\u0000\u0001\u001b\u0002\t\u0003\t\u0004" +
                "\t\u0005\t\u0006\t\u0007\t\b\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.proto.LayoutElementProto.Spannable> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.Spannable.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.Spannable>(
                        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.proto.Spannable)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.Spannable DEFAULT_INSTANCE;
    static {
      Spannable defaultInstance = new Spannable();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        Spannable.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.Spannable getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The list of child elements to place inside this Column.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    java.util.List<androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> 
        getContentsList();
    /**
     * <pre>
     * The list of child elements to place inside this Column.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement getContents(int index);
    /**
     * <pre>
     * The list of child elements to place inside this Column.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    int getContentsCount();

    /**
     * <pre>
     * The horizontal alignment of elements inside this column, if they are
     * narrower than the resulting width of the column. If not defined, defaults
     * to HORIZONTAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 2;</code>
     * @return Whether the horizontalAlignment field is set.
     */
    boolean hasHorizontalAlignment();
    /**
     * <pre>
     * The horizontal alignment of elements inside this column, if they are
     * narrower than the resulting width of the column. If not defined, defaults
     * to HORIZONTAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 2;</code>
     * @return The horizontalAlignment.
     */
    androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp getHorizontalAlignment();

    /**
     * <pre>
     * The width of this column. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     * @return Whether the width field is set.
     */
    boolean hasWidth();
    /**
     * <pre>
     * The width of this column. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     * @return The width.
     */
    androidx.wear.protolayout.proto.DimensionProto.ContainerDimension getWidth();

    /**
     * <pre>
     * The height of this column. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
     * @return Whether the height field is set.
     */
    boolean hasHeight();
    /**
     * <pre>
     * The height of this column. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
     * @return The height.
     */
    androidx.wear.protolayout.proto.DimensionProto.ContainerDimension getHeight();

    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     * @return Whether the modifiers field is set.
     */
    boolean hasModifiers();
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     * @return The modifiers.
     */
    androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers();
  }
  /**
   * <pre>
   * A column of elements. Each child element will be laid out vertically, one
   * after another (i.e. stacking down). This element will size itself to the
   * smallest size required to hold all of its children (e.g. if it contains three
   * elements sized 10x10, 20x20 and 30x30, the resulting column will be 30x60).
   *
   * If specified, horizontal_alignment can be used to control the gravity inside
   * the container, affecting the horizontal placement of children whose width are
   * smaller than the resulting column width.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.Column}
   */
  public  static final class Column extends
      com.google.protobuf.GeneratedMessageLite<
          Column, Column.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.Column)
      ColumnOrBuilder {
    private Column() {
      contents_ = emptyProtobufList();
    }
    public static final int CONTENTS_FIELD_NUMBER = 1;
    private com.google.protobuf.Internal.ProtobufList<androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> contents_;
    /**
     * <pre>
     * The list of child elements to place inside this Column.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    @java.lang.Override
    public java.util.List<androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> getContentsList() {
      return contents_;
    }
    /**
     * <pre>
     * The list of child elements to place inside this Column.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    public java.util.List<? extends androidx.wear.protolayout.proto.LayoutElementProto.LayoutElementOrBuilder> 
        getContentsOrBuilderList() {
      return contents_;
    }
    /**
     * <pre>
     * The list of child elements to place inside this Column.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    @java.lang.Override
    public int getContentsCount() {
      return contents_.size();
    }
    /**
     * <pre>
     * The list of child elements to place inside this Column.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement getContents(int index) {
      return contents_.get(index);
    }
    /**
     * <pre>
     * The list of child elements to place inside this Column.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    public androidx.wear.protolayout.proto.LayoutElementProto.LayoutElementOrBuilder getContentsOrBuilder(
        int index) {
      return contents_.get(index);
    }
    private void ensureContentsIsMutable() {
      com.google.protobuf.Internal.ProtobufList<androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> tmp = contents_;
      if (!tmp.isModifiable()) {
        contents_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }

    /**
     * <pre>
     * The list of child elements to place inside this Column.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    private void setContents(
        int index, androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
      value.getClass();
  ensureContentsIsMutable();
      contents_.set(index, value);
    }
    /**
     * <pre>
     * The list of child elements to place inside this Column.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    private void addContents(androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
      value.getClass();
  ensureContentsIsMutable();
      contents_.add(value);
    }
    /**
     * <pre>
     * The list of child elements to place inside this Column.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    private void addContents(
        int index, androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
      value.getClass();
  ensureContentsIsMutable();
      contents_.add(index, value);
    }
    /**
     * <pre>
     * The list of child elements to place inside this Column.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    private void addAllContents(
        java.lang.Iterable<? extends androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> values) {
      ensureContentsIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, contents_);
    }
    /**
     * <pre>
     * The list of child elements to place inside this Column.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    private void clearContents() {
      contents_ = emptyProtobufList();
    }
    /**
     * <pre>
     * The list of child elements to place inside this Column.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    private void removeContents(int index) {
      ensureContentsIsMutable();
      contents_.remove(index);
    }

    public static final int HORIZONTAL_ALIGNMENT_FIELD_NUMBER = 2;
    private androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp horizontalAlignment_;
    /**
     * <pre>
     * The horizontal alignment of elements inside this column, if they are
     * narrower than the resulting width of the column. If not defined, defaults
     * to HORIZONTAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 2;</code>
     */
    @java.lang.Override
    public boolean hasHorizontalAlignment() {
      return horizontalAlignment_ != null;
    }
    /**
     * <pre>
     * The horizontal alignment of elements inside this column, if they are
     * narrower than the resulting width of the column. If not defined, defaults
     * to HORIZONTAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp getHorizontalAlignment() {
      return horizontalAlignment_ == null ? androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp.getDefaultInstance() : horizontalAlignment_;
    }
    /**
     * <pre>
     * The horizontal alignment of elements inside this column, if they are
     * narrower than the resulting width of the column. If not defined, defaults
     * to HORIZONTAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 2;</code>
     */
    private void setHorizontalAlignment(androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp value) {
      value.getClass();
  horizontalAlignment_ = value;

      }
    /**
     * <pre>
     * The horizontal alignment of elements inside this column, if they are
     * narrower than the resulting width of the column. If not defined, defaults
     * to HORIZONTAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 2;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeHorizontalAlignment(androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp value) {
      value.getClass();
  if (horizontalAlignment_ != null &&
          horizontalAlignment_ != androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp.getDefaultInstance()) {
        horizontalAlignment_ =
          androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp.newBuilder(horizontalAlignment_).mergeFrom(value).buildPartial();
      } else {
        horizontalAlignment_ = value;
      }

    }
    /**
     * <pre>
     * The horizontal alignment of elements inside this column, if they are
     * narrower than the resulting width of the column. If not defined, defaults
     * to HORIZONTAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 2;</code>
     */
    private void clearHorizontalAlignment() {  horizontalAlignment_ = null;

    }

    public static final int WIDTH_FIELD_NUMBER = 3;
    private androidx.wear.protolayout.proto.DimensionProto.ContainerDimension width_;
    /**
     * <pre>
     * The width of this column. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     */
    @java.lang.Override
    public boolean hasWidth() {
      return width_ != null;
    }
    /**
     * <pre>
     * The width of this column. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.ContainerDimension getWidth() {
      return width_ == null ? androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.getDefaultInstance() : width_;
    }
    /**
     * <pre>
     * The width of this column. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     */
    private void setWidth(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
      value.getClass();
  width_ = value;

      }
    /**
     * <pre>
     * The width of this column. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeWidth(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
      value.getClass();
  if (width_ != null &&
          width_ != androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.getDefaultInstance()) {
        width_ =
          androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.newBuilder(width_).mergeFrom(value).buildPartial();
      } else {
        width_ = value;
      }

    }
    /**
     * <pre>
     * The width of this column. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     */
    private void clearWidth() {  width_ = null;

    }

    public static final int HEIGHT_FIELD_NUMBER = 4;
    private androidx.wear.protolayout.proto.DimensionProto.ContainerDimension height_;
    /**
     * <pre>
     * The height of this column. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
     */
    @java.lang.Override
    public boolean hasHeight() {
      return height_ != null;
    }
    /**
     * <pre>
     * The height of this column. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.ContainerDimension getHeight() {
      return height_ == null ? androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.getDefaultInstance() : height_;
    }
    /**
     * <pre>
     * The height of this column. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
     */
    private void setHeight(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
      value.getClass();
  height_ = value;

      }
    /**
     * <pre>
     * The height of this column. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeHeight(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
      value.getClass();
  if (height_ != null &&
          height_ != androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.getDefaultInstance()) {
        height_ =
          androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.newBuilder(height_).mergeFrom(value).buildPartial();
      } else {
        height_ = value;
      }

    }
    /**
     * <pre>
     * The height of this column. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
     */
    private void clearHeight() {  height_ = null;

    }

    public static final int MODIFIERS_FIELD_NUMBER = 5;
    private androidx.wear.protolayout.proto.ModifiersProto.Modifiers modifiers_;
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     */
    @java.lang.Override
    public boolean hasModifiers() {
      return modifiers_ != null;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers() {
      return modifiers_ == null ? androidx.wear.protolayout.proto.ModifiersProto.Modifiers.getDefaultInstance() : modifiers_;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     */
    private void setModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
      value.getClass();
  modifiers_ = value;

      }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
      value.getClass();
  if (modifiers_ != null &&
          modifiers_ != androidx.wear.protolayout.proto.ModifiersProto.Modifiers.getDefaultInstance()) {
        modifiers_ =
          androidx.wear.protolayout.proto.ModifiersProto.Modifiers.newBuilder(modifiers_).mergeFrom(value).buildPartial();
      } else {
        modifiers_ = value;
      }

    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     */
    private void clearModifiers() {  modifiers_ = null;

    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.Column parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Column 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.proto.LayoutElementProto.Column 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.proto.LayoutElementProto.Column 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.proto.LayoutElementProto.Column parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Column 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.proto.LayoutElementProto.Column parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Column 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.proto.LayoutElementProto.Column parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Column 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.proto.LayoutElementProto.Column parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Column 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.proto.LayoutElementProto.Column prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * A column of elements. Each child element will be laid out vertically, one
     * after another (i.e. stacking down). This element will size itself to the
     * smallest size required to hold all of its children (e.g. if it contains three
     * elements sized 10x10, 20x20 and 30x30, the resulting column will be 30x60).
     *
     * If specified, horizontal_alignment can be used to control the gravity inside
     * the container, affecting the horizontal placement of children whose width are
     * smaller than the resulting column width.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.Column}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.Column, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.Column)
        androidx.wear.protolayout.proto.LayoutElementProto.ColumnOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.Column.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The list of child elements to place inside this Column.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      @java.lang.Override
      public java.util.List<androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> getContentsList() {
        return java.util.Collections.unmodifiableList(
            instance.getContentsList());
      }
      /**
       * <pre>
       * The list of child elements to place inside this Column.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      @java.lang.Override
      public int getContentsCount() {
        return instance.getContentsCount();
      }/**
       * <pre>
       * The list of child elements to place inside this Column.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement getContents(int index) {
        return instance.getContents(index);
      }
      /**
       * <pre>
       * The list of child elements to place inside this Column.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder setContents(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
        copyOnWrite();
        instance.setContents(index, value);
        return this;
      }
      /**
       * <pre>
       * The list of child elements to place inside this Column.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder setContents(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.Builder builderForValue) {
        copyOnWrite();
        instance.setContents(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The list of child elements to place inside this Column.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder addContents(androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
        copyOnWrite();
        instance.addContents(value);
        return this;
      }
      /**
       * <pre>
       * The list of child elements to place inside this Column.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder addContents(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
        copyOnWrite();
        instance.addContents(index, value);
        return this;
      }
      /**
       * <pre>
       * The list of child elements to place inside this Column.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder addContents(
          androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.Builder builderForValue) {
        copyOnWrite();
        instance.addContents(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The list of child elements to place inside this Column.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder addContents(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.Builder builderForValue) {
        copyOnWrite();
        instance.addContents(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The list of child elements to place inside this Column.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder addAllContents(
          java.lang.Iterable<? extends androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> values) {
        copyOnWrite();
        instance.addAllContents(values);
        return this;
      }
      /**
       * <pre>
       * The list of child elements to place inside this Column.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder clearContents() {
        copyOnWrite();
        instance.clearContents();
        return this;
      }
      /**
       * <pre>
       * The list of child elements to place inside this Column.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder removeContents(int index) {
        copyOnWrite();
        instance.removeContents(index);
        return this;
      }

      /**
       * <pre>
       * The horizontal alignment of elements inside this column, if they are
       * narrower than the resulting width of the column. If not defined, defaults
       * to HORIZONTAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 2;</code>
       */
      @java.lang.Override
      public boolean hasHorizontalAlignment() {
        return instance.hasHorizontalAlignment();
      }
      /**
       * <pre>
       * The horizontal alignment of elements inside this column, if they are
       * narrower than the resulting width of the column. If not defined, defaults
       * to HORIZONTAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp getHorizontalAlignment() {
        return instance.getHorizontalAlignment();
      }
      /**
       * <pre>
       * The horizontal alignment of elements inside this column, if they are
       * narrower than the resulting width of the column. If not defined, defaults
       * to HORIZONTAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 2;</code>
       */
      public Builder setHorizontalAlignment(androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp value) {
        copyOnWrite();
        instance.setHorizontalAlignment(value);
        return this;
        }
      /**
       * <pre>
       * The horizontal alignment of elements inside this column, if they are
       * narrower than the resulting width of the column. If not defined, defaults
       * to HORIZONTAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 2;</code>
       */
      public Builder setHorizontalAlignment(
          androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp.Builder builderForValue) {
        copyOnWrite();
        instance.setHorizontalAlignment(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The horizontal alignment of elements inside this column, if they are
       * narrower than the resulting width of the column. If not defined, defaults
       * to HORIZONTAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 2;</code>
       */
      public Builder mergeHorizontalAlignment(androidx.wear.protolayout.proto.AlignmentProto.HorizontalAlignmentProp value) {
        copyOnWrite();
        instance.mergeHorizontalAlignment(value);
        return this;
      }
      /**
       * <pre>
       * The horizontal alignment of elements inside this column, if they are
       * narrower than the resulting width of the column. If not defined, defaults
       * to HORIZONTAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.HorizontalAlignmentProp horizontal_alignment = 2;</code>
       */
      public Builder clearHorizontalAlignment() {  copyOnWrite();
        instance.clearHorizontalAlignment();
        return this;
      }

      /**
       * <pre>
       * The width of this column. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
       */
      @java.lang.Override
      public boolean hasWidth() {
        return instance.hasWidth();
      }
      /**
       * <pre>
       * The width of this column. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.ContainerDimension getWidth() {
        return instance.getWidth();
      }
      /**
       * <pre>
       * The width of this column. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
       */
      public Builder setWidth(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
        copyOnWrite();
        instance.setWidth(value);
        return this;
        }
      /**
       * <pre>
       * The width of this column. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
       */
      public Builder setWidth(
          androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.Builder builderForValue) {
        copyOnWrite();
        instance.setWidth(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The width of this column. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
       */
      public Builder mergeWidth(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
        copyOnWrite();
        instance.mergeWidth(value);
        return this;
      }
      /**
       * <pre>
       * The width of this column. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
       */
      public Builder clearWidth() {  copyOnWrite();
        instance.clearWidth();
        return this;
      }

      /**
       * <pre>
       * The height of this column. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
       */
      @java.lang.Override
      public boolean hasHeight() {
        return instance.hasHeight();
      }
      /**
       * <pre>
       * The height of this column. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.ContainerDimension getHeight() {
        return instance.getHeight();
      }
      /**
       * <pre>
       * The height of this column. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
       */
      public Builder setHeight(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
        copyOnWrite();
        instance.setHeight(value);
        return this;
        }
      /**
       * <pre>
       * The height of this column. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
       */
      public Builder setHeight(
          androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.Builder builderForValue) {
        copyOnWrite();
        instance.setHeight(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The height of this column. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
       */
      public Builder mergeHeight(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
        copyOnWrite();
        instance.mergeHeight(value);
        return this;
      }
      /**
       * <pre>
       * The height of this column. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
       */
      public Builder clearHeight() {  copyOnWrite();
        instance.clearHeight();
        return this;
      }

      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      @java.lang.Override
      public boolean hasModifiers() {
        return instance.hasModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers() {
        return instance.getModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      public Builder setModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
        copyOnWrite();
        instance.setModifiers(value);
        return this;
        }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      public Builder setModifiers(
          androidx.wear.protolayout.proto.ModifiersProto.Modifiers.Builder builderForValue) {
        copyOnWrite();
        instance.setModifiers(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      public Builder mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
        copyOnWrite();
        instance.mergeModifiers(value);
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      public Builder clearModifiers() {  copyOnWrite();
        instance.clearModifiers();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.Column)
    }
    @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.proto.LayoutElementProto.Column();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "contents_",
              androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.class,
              "horizontalAlignment_",
              "width_",
              "height_",
              "modifiers_",
            };
            java.lang.String info =
                "\u0000\u0005\u0000\u0000\u0001\u0005\u0005\u0000\u0001\u0000\u0001\u001b\u0002\t" +
                "\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.proto.LayoutElementProto.Column> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.Column.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.Column>(
                        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.proto.Column)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.Column DEFAULT_INSTANCE;
    static {
      Column defaultInstance = new Column();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        Column.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.Column getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The list of child elements to place inside this Row.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    java.util.List<androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> 
        getContentsList();
    /**
     * <pre>
     * The list of child elements to place inside this Row.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement getContents(int index);
    /**
     * <pre>
     * The list of child elements to place inside this Row.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    int getContentsCount();

    /**
     * <pre>
     * The vertical alignment of elements inside this row, if they are narrower
     * than the resulting height of the row. If not defined, defaults to
     * VERTICAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 2;</code>
     * @return Whether the verticalAlignment field is set.
     */
    boolean hasVerticalAlignment();
    /**
     * <pre>
     * The vertical alignment of elements inside this row, if they are narrower
     * than the resulting height of the row. If not defined, defaults to
     * VERTICAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 2;</code>
     * @return The verticalAlignment.
     */
    androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp getVerticalAlignment();

    /**
     * <pre>
     * The width of this row. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     * @return Whether the width field is set.
     */
    boolean hasWidth();
    /**
     * <pre>
     * The width of this row. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     * @return The width.
     */
    androidx.wear.protolayout.proto.DimensionProto.ContainerDimension getWidth();

    /**
     * <pre>
     * The height of this row. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
     * @return Whether the height field is set.
     */
    boolean hasHeight();
    /**
     * <pre>
     * The height of this row. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
     * @return The height.
     */
    androidx.wear.protolayout.proto.DimensionProto.ContainerDimension getHeight();

    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     * @return Whether the modifiers field is set.
     */
    boolean hasModifiers();
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     * @return The modifiers.
     */
    androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers();
  }
  /**
   * <pre>
   * A row of elements. Each child will be laid out horizontally, one after
   * another (i.e. stacking to the right). This element will size itself to the
   * smallest size required to hold all of its children (e.g. if it contains three
   * elements sized 10x10, 20x20 and 30x30, the resulting row will be 60x30).
   *
   * If specified, vertical_alignment can be used to control the gravity inside
   * the container, affecting the vertical placement of children whose width are
   * smaller than the resulting row height.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.Row}
   */
  public  static final class Row extends
      com.google.protobuf.GeneratedMessageLite<
          Row, Row.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.Row)
      RowOrBuilder {
    private Row() {
      contents_ = emptyProtobufList();
    }
    public static final int CONTENTS_FIELD_NUMBER = 1;
    private com.google.protobuf.Internal.ProtobufList<androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> contents_;
    /**
     * <pre>
     * The list of child elements to place inside this Row.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    @java.lang.Override
    public java.util.List<androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> getContentsList() {
      return contents_;
    }
    /**
     * <pre>
     * The list of child elements to place inside this Row.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    public java.util.List<? extends androidx.wear.protolayout.proto.LayoutElementProto.LayoutElementOrBuilder> 
        getContentsOrBuilderList() {
      return contents_;
    }
    /**
     * <pre>
     * The list of child elements to place inside this Row.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    @java.lang.Override
    public int getContentsCount() {
      return contents_.size();
    }
    /**
     * <pre>
     * The list of child elements to place inside this Row.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement getContents(int index) {
      return contents_.get(index);
    }
    /**
     * <pre>
     * The list of child elements to place inside this Row.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    public androidx.wear.protolayout.proto.LayoutElementProto.LayoutElementOrBuilder getContentsOrBuilder(
        int index) {
      return contents_.get(index);
    }
    private void ensureContentsIsMutable() {
      com.google.protobuf.Internal.ProtobufList<androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> tmp = contents_;
      if (!tmp.isModifiable()) {
        contents_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }

    /**
     * <pre>
     * The list of child elements to place inside this Row.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    private void setContents(
        int index, androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
      value.getClass();
  ensureContentsIsMutable();
      contents_.set(index, value);
    }
    /**
     * <pre>
     * The list of child elements to place inside this Row.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    private void addContents(androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
      value.getClass();
  ensureContentsIsMutable();
      contents_.add(value);
    }
    /**
     * <pre>
     * The list of child elements to place inside this Row.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    private void addContents(
        int index, androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
      value.getClass();
  ensureContentsIsMutable();
      contents_.add(index, value);
    }
    /**
     * <pre>
     * The list of child elements to place inside this Row.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    private void addAllContents(
        java.lang.Iterable<? extends androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> values) {
      ensureContentsIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, contents_);
    }
    /**
     * <pre>
     * The list of child elements to place inside this Row.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    private void clearContents() {
      contents_ = emptyProtobufList();
    }
    /**
     * <pre>
     * The list of child elements to place inside this Row.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
     */
    private void removeContents(int index) {
      ensureContentsIsMutable();
      contents_.remove(index);
    }

    public static final int VERTICAL_ALIGNMENT_FIELD_NUMBER = 2;
    private androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp verticalAlignment_;
    /**
     * <pre>
     * The vertical alignment of elements inside this row, if they are narrower
     * than the resulting height of the row. If not defined, defaults to
     * VERTICAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 2;</code>
     */
    @java.lang.Override
    public boolean hasVerticalAlignment() {
      return verticalAlignment_ != null;
    }
    /**
     * <pre>
     * The vertical alignment of elements inside this row, if they are narrower
     * than the resulting height of the row. If not defined, defaults to
     * VERTICAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp getVerticalAlignment() {
      return verticalAlignment_ == null ? androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp.getDefaultInstance() : verticalAlignment_;
    }
    /**
     * <pre>
     * The vertical alignment of elements inside this row, if they are narrower
     * than the resulting height of the row. If not defined, defaults to
     * VERTICAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 2;</code>
     */
    private void setVerticalAlignment(androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp value) {
      value.getClass();
  verticalAlignment_ = value;

      }
    /**
     * <pre>
     * The vertical alignment of elements inside this row, if they are narrower
     * than the resulting height of the row. If not defined, defaults to
     * VERTICAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 2;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeVerticalAlignment(androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp value) {
      value.getClass();
  if (verticalAlignment_ != null &&
          verticalAlignment_ != androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp.getDefaultInstance()) {
        verticalAlignment_ =
          androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp.newBuilder(verticalAlignment_).mergeFrom(value).buildPartial();
      } else {
        verticalAlignment_ = value;
      }

    }
    /**
     * <pre>
     * The vertical alignment of elements inside this row, if they are narrower
     * than the resulting height of the row. If not defined, defaults to
     * VERTICAL_ALIGN_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 2;</code>
     */
    private void clearVerticalAlignment() {  verticalAlignment_ = null;

    }

    public static final int WIDTH_FIELD_NUMBER = 3;
    private androidx.wear.protolayout.proto.DimensionProto.ContainerDimension width_;
    /**
     * <pre>
     * The width of this row. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     */
    @java.lang.Override
    public boolean hasWidth() {
      return width_ != null;
    }
    /**
     * <pre>
     * The width of this row. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.ContainerDimension getWidth() {
      return width_ == null ? androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.getDefaultInstance() : width_;
    }
    /**
     * <pre>
     * The width of this row. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     */
    private void setWidth(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
      value.getClass();
  width_ = value;

      }
    /**
     * <pre>
     * The width of this row. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeWidth(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
      value.getClass();
  if (width_ != null &&
          width_ != androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.getDefaultInstance()) {
        width_ =
          androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.newBuilder(width_).mergeFrom(value).buildPartial();
      } else {
        width_ = value;
      }

    }
    /**
     * <pre>
     * The width of this row. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
     */
    private void clearWidth() {  width_ = null;

    }

    public static final int HEIGHT_FIELD_NUMBER = 4;
    private androidx.wear.protolayout.proto.DimensionProto.ContainerDimension height_;
    /**
     * <pre>
     * The height of this row. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
     */
    @java.lang.Override
    public boolean hasHeight() {
      return height_ != null;
    }
    /**
     * <pre>
     * The height of this row. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.ContainerDimension getHeight() {
      return height_ == null ? androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.getDefaultInstance() : height_;
    }
    /**
     * <pre>
     * The height of this row. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
     */
    private void setHeight(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
      value.getClass();
  height_ = value;

      }
    /**
     * <pre>
     * The height of this row. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeHeight(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
      value.getClass();
  if (height_ != null &&
          height_ != androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.getDefaultInstance()) {
        height_ =
          androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.newBuilder(height_).mergeFrom(value).buildPartial();
      } else {
        height_ = value;
      }

    }
    /**
     * <pre>
     * The height of this row. If not defined, this will size itself to fit
     * all of its children (i.e. a WrappedDimension).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
     */
    private void clearHeight() {  height_ = null;

    }

    public static final int MODIFIERS_FIELD_NUMBER = 5;
    private androidx.wear.protolayout.proto.ModifiersProto.Modifiers modifiers_;
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     */
    @java.lang.Override
    public boolean hasModifiers() {
      return modifiers_ != null;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers() {
      return modifiers_ == null ? androidx.wear.protolayout.proto.ModifiersProto.Modifiers.getDefaultInstance() : modifiers_;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     */
    private void setModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
      value.getClass();
  modifiers_ = value;

      }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
      value.getClass();
  if (modifiers_ != null &&
          modifiers_ != androidx.wear.protolayout.proto.ModifiersProto.Modifiers.getDefaultInstance()) {
        modifiers_ =
          androidx.wear.protolayout.proto.ModifiersProto.Modifiers.newBuilder(modifiers_).mergeFrom(value).buildPartial();
      } else {
        modifiers_ = value;
      }

    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     */
    private void clearModifiers() {  modifiers_ = null;

    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.Row parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Row 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.proto.LayoutElementProto.Row 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.proto.LayoutElementProto.Row 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.proto.LayoutElementProto.Row parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Row 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.proto.LayoutElementProto.Row parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Row 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.proto.LayoutElementProto.Row parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Row 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.proto.LayoutElementProto.Row parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Row 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.proto.LayoutElementProto.Row prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * A row of elements. Each child will be laid out horizontally, one after
     * another (i.e. stacking to the right). This element will size itself to the
     * smallest size required to hold all of its children (e.g. if it contains three
     * elements sized 10x10, 20x20 and 30x30, the resulting row will be 60x30).
     *
     * If specified, vertical_alignment can be used to control the gravity inside
     * the container, affecting the vertical placement of children whose width are
     * smaller than the resulting row height.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.Row}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.Row, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.Row)
        androidx.wear.protolayout.proto.LayoutElementProto.RowOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.Row.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The list of child elements to place inside this Row.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      @java.lang.Override
      public java.util.List<androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> getContentsList() {
        return java.util.Collections.unmodifiableList(
            instance.getContentsList());
      }
      /**
       * <pre>
       * The list of child elements to place inside this Row.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      @java.lang.Override
      public int getContentsCount() {
        return instance.getContentsCount();
      }/**
       * <pre>
       * The list of child elements to place inside this Row.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement getContents(int index) {
        return instance.getContents(index);
      }
      /**
       * <pre>
       * The list of child elements to place inside this Row.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder setContents(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
        copyOnWrite();
        instance.setContents(index, value);
        return this;
      }
      /**
       * <pre>
       * The list of child elements to place inside this Row.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder setContents(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.Builder builderForValue) {
        copyOnWrite();
        instance.setContents(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The list of child elements to place inside this Row.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder addContents(androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
        copyOnWrite();
        instance.addContents(value);
        return this;
      }
      /**
       * <pre>
       * The list of child elements to place inside this Row.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder addContents(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
        copyOnWrite();
        instance.addContents(index, value);
        return this;
      }
      /**
       * <pre>
       * The list of child elements to place inside this Row.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder addContents(
          androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.Builder builderForValue) {
        copyOnWrite();
        instance.addContents(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The list of child elements to place inside this Row.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder addContents(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.Builder builderForValue) {
        copyOnWrite();
        instance.addContents(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The list of child elements to place inside this Row.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder addAllContents(
          java.lang.Iterable<? extends androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement> values) {
        copyOnWrite();
        instance.addAllContents(values);
        return this;
      }
      /**
       * <pre>
       * The list of child elements to place inside this Row.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder clearContents() {
        copyOnWrite();
        instance.clearContents();
        return this;
      }
      /**
       * <pre>
       * The list of child elements to place inside this Row.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.LayoutElement contents = 1;</code>
       */
      public Builder removeContents(int index) {
        copyOnWrite();
        instance.removeContents(index);
        return this;
      }

      /**
       * <pre>
       * The vertical alignment of elements inside this row, if they are narrower
       * than the resulting height of the row. If not defined, defaults to
       * VERTICAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 2;</code>
       */
      @java.lang.Override
      public boolean hasVerticalAlignment() {
        return instance.hasVerticalAlignment();
      }
      /**
       * <pre>
       * The vertical alignment of elements inside this row, if they are narrower
       * than the resulting height of the row. If not defined, defaults to
       * VERTICAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp getVerticalAlignment() {
        return instance.getVerticalAlignment();
      }
      /**
       * <pre>
       * The vertical alignment of elements inside this row, if they are narrower
       * than the resulting height of the row. If not defined, defaults to
       * VERTICAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 2;</code>
       */
      public Builder setVerticalAlignment(androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp value) {
        copyOnWrite();
        instance.setVerticalAlignment(value);
        return this;
        }
      /**
       * <pre>
       * The vertical alignment of elements inside this row, if they are narrower
       * than the resulting height of the row. If not defined, defaults to
       * VERTICAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 2;</code>
       */
      public Builder setVerticalAlignment(
          androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp.Builder builderForValue) {
        copyOnWrite();
        instance.setVerticalAlignment(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The vertical alignment of elements inside this row, if they are narrower
       * than the resulting height of the row. If not defined, defaults to
       * VERTICAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 2;</code>
       */
      public Builder mergeVerticalAlignment(androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp value) {
        copyOnWrite();
        instance.mergeVerticalAlignment(value);
        return this;
      }
      /**
       * <pre>
       * The vertical alignment of elements inside this row, if they are narrower
       * than the resulting height of the row. If not defined, defaults to
       * VERTICAL_ALIGN_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_alignment = 2;</code>
       */
      public Builder clearVerticalAlignment() {  copyOnWrite();
        instance.clearVerticalAlignment();
        return this;
      }

      /**
       * <pre>
       * The width of this row. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
       */
      @java.lang.Override
      public boolean hasWidth() {
        return instance.hasWidth();
      }
      /**
       * <pre>
       * The width of this row. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.ContainerDimension getWidth() {
        return instance.getWidth();
      }
      /**
       * <pre>
       * The width of this row. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
       */
      public Builder setWidth(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
        copyOnWrite();
        instance.setWidth(value);
        return this;
        }
      /**
       * <pre>
       * The width of this row. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
       */
      public Builder setWidth(
          androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.Builder builderForValue) {
        copyOnWrite();
        instance.setWidth(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The width of this row. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
       */
      public Builder mergeWidth(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
        copyOnWrite();
        instance.mergeWidth(value);
        return this;
      }
      /**
       * <pre>
       * The width of this row. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension width = 3;</code>
       */
      public Builder clearWidth() {  copyOnWrite();
        instance.clearWidth();
        return this;
      }

      /**
       * <pre>
       * The height of this row. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
       */
      @java.lang.Override
      public boolean hasHeight() {
        return instance.hasHeight();
      }
      /**
       * <pre>
       * The height of this row. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.ContainerDimension getHeight() {
        return instance.getHeight();
      }
      /**
       * <pre>
       * The height of this row. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
       */
      public Builder setHeight(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
        copyOnWrite();
        instance.setHeight(value);
        return this;
        }
      /**
       * <pre>
       * The height of this row. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
       */
      public Builder setHeight(
          androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.Builder builderForValue) {
        copyOnWrite();
        instance.setHeight(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The height of this row. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
       */
      public Builder mergeHeight(androidx.wear.protolayout.proto.DimensionProto.ContainerDimension value) {
        copyOnWrite();
        instance.mergeHeight(value);
        return this;
      }
      /**
       * <pre>
       * The height of this row. If not defined, this will size itself to fit
       * all of its children (i.e. a WrappedDimension).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ContainerDimension height = 4;</code>
       */
      public Builder clearHeight() {  copyOnWrite();
        instance.clearHeight();
        return this;
      }

      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      @java.lang.Override
      public boolean hasModifiers() {
        return instance.hasModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers() {
        return instance.getModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      public Builder setModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
        copyOnWrite();
        instance.setModifiers(value);
        return this;
        }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      public Builder setModifiers(
          androidx.wear.protolayout.proto.ModifiersProto.Modifiers.Builder builderForValue) {
        copyOnWrite();
        instance.setModifiers(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      public Builder mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
        copyOnWrite();
        instance.mergeModifiers(value);
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      public Builder clearModifiers() {  copyOnWrite();
        instance.clearModifiers();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.Row)
    }
    @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.proto.LayoutElementProto.Row();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "contents_",
              androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.class,
              "verticalAlignment_",
              "width_",
              "height_",
              "modifiers_",
            };
            java.lang.String info =
                "\u0000\u0005\u0000\u0000\u0001\u0005\u0005\u0000\u0001\u0000\u0001\u001b\u0002\t" +
                "\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.proto.LayoutElementProto.Row> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.Row.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.Row>(
                        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.proto.Row)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.Row DEFAULT_INSTANCE;
    static {
      Row defaultInstance = new Row();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        Row.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.Row getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * Contents of this container.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
     */
    java.util.List<androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement> 
        getContentsList();
    /**
     * <pre>
     * Contents of this container.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
     */
    androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement getContents(int index);
    /**
     * <pre>
     * Contents of this container.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
     */
    int getContentsCount();

    /**
     * <pre>
     * The angle for the anchor, used with anchor_type to determine where to draw
     * children. Note that 0 degrees is the 12 o clock position on a device, and
     * the angle sweeps clockwise. If not defined, defaults to 0 degrees.
     *
     * Values do not have to be clamped to the range 0-360; values less than 0
     * degrees will sweep anti-clockwise (i.e. -90 degrees is equivalent to 270
     * degrees), and values &gt;360 will be be placed at X mod 360 degrees.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicAnchorAngle(AngularLayoutConstraint)}
     * otherwise {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp anchor_angle = 2;</code>
     * @return Whether the anchorAngle field is set.
     */
    boolean hasAnchorAngle();
    /**
     * <pre>
     * The angle for the anchor, used with anchor_type to determine where to draw
     * children. Note that 0 degrees is the 12 o clock position on a device, and
     * the angle sweeps clockwise. If not defined, defaults to 0 degrees.
     *
     * Values do not have to be clamped to the range 0-360; values less than 0
     * degrees will sweep anti-clockwise (i.e. -90 degrees is equivalent to 270
     * degrees), and values &gt;360 will be be placed at X mod 360 degrees.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicAnchorAngle(AngularLayoutConstraint)}
     * otherwise {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp anchor_angle = 2;</code>
     * @return The anchorAngle.
     */
    androidx.wear.protolayout.proto.DimensionProto.DegreesProp getAnchorAngle();

    /**
     * <pre>
     * How to align the contents of this container relative to anchor_angle. If
     * not defined, defaults to ARC_ANCHOR_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcAnchorTypeProp anchor_type = 3;</code>
     * @return Whether the anchorType field is set.
     */
    boolean hasAnchorType();
    /**
     * <pre>
     * How to align the contents of this container relative to anchor_angle. If
     * not defined, defaults to ARC_ANCHOR_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcAnchorTypeProp anchor_type = 3;</code>
     * @return The anchorType.
     */
    androidx.wear.protolayout.proto.AlignmentProto.ArcAnchorTypeProp getAnchorType();

    /**
     * <pre>
     * Vertical alignment of elements within the arc. If the Arc's thickness is
     * larger than the thickness of the element being drawn, this controls whether
     * the element should be drawn towards the inner or outer edge of the arc, or
     * drawn in the center.
     * If not defined, defaults to VERTICAL_ALIGN_CENTER
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_align = 4;</code>
     * @return Whether the verticalAlign field is set.
     */
    boolean hasVerticalAlign();
    /**
     * <pre>
     * Vertical alignment of elements within the arc. If the Arc's thickness is
     * larger than the thickness of the element being drawn, this controls whether
     * the element should be drawn towards the inner or outer edge of the arc, or
     * drawn in the center.
     * If not defined, defaults to VERTICAL_ALIGN_CENTER
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_align = 4;</code>
     * @return The verticalAlign.
     */
    androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp getVerticalAlign();

    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     * @return Whether the modifiers field is set.
     */
    boolean hasModifiers();
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     * @return The modifiers.
     */
    androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers();

    /**
     * <pre>
     * The target angle that will be used by the layout when expanding child
     * elements. NB a value of zero is interpreted to mean 360 degrees. This
     * target may not be achievable if other non-expandable elements bring us past
     * this value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp max_angle = 6;</code>
     * @return Whether the maxAngle field is set.
     */
    boolean hasMaxAngle();
    /**
     * <pre>
     * The target angle that will be used by the layout when expanding child
     * elements. NB a value of zero is interpreted to mean 360 degrees. This
     * target may not be achievable if other non-expandable elements bring us past
     * this value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp max_angle = 6;</code>
     * @return The maxAngle.
     */
    androidx.wear.protolayout.proto.DimensionProto.DegreesProp getMaxAngle();

    /**
     * <pre>
     * The direction in which child elements are laid out.&lt;setter&gt; If not set,
     * defaults to ARC_DIRECTION_NORMAL.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 7;</code>
     * @return Whether the arcDirection field is set.
     */
    boolean hasArcDirection();
    /**
     * <pre>
     * The direction in which child elements are laid out.&lt;setter&gt; If not set,
     * defaults to ARC_DIRECTION_NORMAL.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 7;</code>
     * @return The arcDirection.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp getArcDirection();
  }
  /**
   * <pre>
   * An arc container. This container will fill itself to a circle, which fits
   * inside its parent container, and all of its children will be placed on that
   * circle. The fields anchor_angle and anchor_type can be used to specify where
   * to draw children within this circle.
   *
   * &lt;p&gt; Note that when setting padding for the arc, if padding values (top,
   * button, left, and right) are not equal, the largest between them will be used
   * to apply padding uniformly to all sides.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.Arc}
   */
  public  static final class Arc extends
      com.google.protobuf.GeneratedMessageLite<
          Arc, Arc.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.Arc)
      ArcOrBuilder {
    private Arc() {
      contents_ = emptyProtobufList();
    }
    public static final int CONTENTS_FIELD_NUMBER = 1;
    private com.google.protobuf.Internal.ProtobufList<androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement> contents_;
    /**
     * <pre>
     * Contents of this container.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
     */
    @java.lang.Override
    public java.util.List<androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement> getContentsList() {
      return contents_;
    }
    /**
     * <pre>
     * Contents of this container.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
     */
    public java.util.List<? extends androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElementOrBuilder> 
        getContentsOrBuilderList() {
      return contents_;
    }
    /**
     * <pre>
     * Contents of this container.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
     */
    @java.lang.Override
    public int getContentsCount() {
      return contents_.size();
    }
    /**
     * <pre>
     * Contents of this container.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement getContents(int index) {
      return contents_.get(index);
    }
    /**
     * <pre>
     * Contents of this container.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
     */
    public androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElementOrBuilder getContentsOrBuilder(
        int index) {
      return contents_.get(index);
    }
    private void ensureContentsIsMutable() {
      com.google.protobuf.Internal.ProtobufList<androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement> tmp = contents_;
      if (!tmp.isModifiable()) {
        contents_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }

    /**
     * <pre>
     * Contents of this container.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
     */
    private void setContents(
        int index, androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement value) {
      value.getClass();
  ensureContentsIsMutable();
      contents_.set(index, value);
    }
    /**
     * <pre>
     * Contents of this container.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
     */
    private void addContents(androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement value) {
      value.getClass();
  ensureContentsIsMutable();
      contents_.add(value);
    }
    /**
     * <pre>
     * Contents of this container.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
     */
    private void addContents(
        int index, androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement value) {
      value.getClass();
  ensureContentsIsMutable();
      contents_.add(index, value);
    }
    /**
     * <pre>
     * Contents of this container.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
     */
    private void addAllContents(
        java.lang.Iterable<? extends androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement> values) {
      ensureContentsIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, contents_);
    }
    /**
     * <pre>
     * Contents of this container.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
     */
    private void clearContents() {
      contents_ = emptyProtobufList();
    }
    /**
     * <pre>
     * Contents of this container.
     * </pre>
     *
     * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
     */
    private void removeContents(int index) {
      ensureContentsIsMutable();
      contents_.remove(index);
    }

    public static final int ANCHOR_ANGLE_FIELD_NUMBER = 2;
    private androidx.wear.protolayout.proto.DimensionProto.DegreesProp anchorAngle_;
    /**
     * <pre>
     * The angle for the anchor, used with anchor_type to determine where to draw
     * children. Note that 0 degrees is the 12 o clock position on a device, and
     * the angle sweeps clockwise. If not defined, defaults to 0 degrees.
     *
     * Values do not have to be clamped to the range 0-360; values less than 0
     * degrees will sweep anti-clockwise (i.e. -90 degrees is equivalent to 270
     * degrees), and values &gt;360 will be be placed at X mod 360 degrees.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicAnchorAngle(AngularLayoutConstraint)}
     * otherwise {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp anchor_angle = 2;</code>
     */
    @java.lang.Override
    public boolean hasAnchorAngle() {
      return anchorAngle_ != null;
    }
    /**
     * <pre>
     * The angle for the anchor, used with anchor_type to determine where to draw
     * children. Note that 0 degrees is the 12 o clock position on a device, and
     * the angle sweeps clockwise. If not defined, defaults to 0 degrees.
     *
     * Values do not have to be clamped to the range 0-360; values less than 0
     * degrees will sweep anti-clockwise (i.e. -90 degrees is equivalent to 270
     * degrees), and values &gt;360 will be be placed at X mod 360 degrees.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicAnchorAngle(AngularLayoutConstraint)}
     * otherwise {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp anchor_angle = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.DegreesProp getAnchorAngle() {
      return anchorAngle_ == null ? androidx.wear.protolayout.proto.DimensionProto.DegreesProp.getDefaultInstance() : anchorAngle_;
    }
    /**
     * <pre>
     * The angle for the anchor, used with anchor_type to determine where to draw
     * children. Note that 0 degrees is the 12 o clock position on a device, and
     * the angle sweeps clockwise. If not defined, defaults to 0 degrees.
     *
     * Values do not have to be clamped to the range 0-360; values less than 0
     * degrees will sweep anti-clockwise (i.e. -90 degrees is equivalent to 270
     * degrees), and values &gt;360 will be be placed at X mod 360 degrees.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicAnchorAngle(AngularLayoutConstraint)}
     * otherwise {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp anchor_angle = 2;</code>
     */
    private void setAnchorAngle(androidx.wear.protolayout.proto.DimensionProto.DegreesProp value) {
      value.getClass();
  anchorAngle_ = value;

      }
    /**
     * <pre>
     * The angle for the anchor, used with anchor_type to determine where to draw
     * children. Note that 0 degrees is the 12 o clock position on a device, and
     * the angle sweeps clockwise. If not defined, defaults to 0 degrees.
     *
     * Values do not have to be clamped to the range 0-360; values less than 0
     * degrees will sweep anti-clockwise (i.e. -90 degrees is equivalent to 270
     * degrees), and values &gt;360 will be be placed at X mod 360 degrees.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicAnchorAngle(AngularLayoutConstraint)}
     * otherwise {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp anchor_angle = 2;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeAnchorAngle(androidx.wear.protolayout.proto.DimensionProto.DegreesProp value) {
      value.getClass();
  if (anchorAngle_ != null &&
          anchorAngle_ != androidx.wear.protolayout.proto.DimensionProto.DegreesProp.getDefaultInstance()) {
        anchorAngle_ =
          androidx.wear.protolayout.proto.DimensionProto.DegreesProp.newBuilder(anchorAngle_).mergeFrom(value).buildPartial();
      } else {
        anchorAngle_ = value;
      }

    }
    /**
     * <pre>
     * The angle for the anchor, used with anchor_type to determine where to draw
     * children. Note that 0 degrees is the 12 o clock position on a device, and
     * the angle sweeps clockwise. If not defined, defaults to 0 degrees.
     *
     * Values do not have to be clamped to the range 0-360; values less than 0
     * degrees will sweep anti-clockwise (i.e. -90 degrees is equivalent to 270
     * degrees), and values &gt;360 will be be placed at X mod 360 degrees.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicAnchorAngle(AngularLayoutConstraint)}
     * otherwise {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp anchor_angle = 2;</code>
     */
    private void clearAnchorAngle() {  anchorAngle_ = null;

    }

    public static final int ANCHOR_TYPE_FIELD_NUMBER = 3;
    private androidx.wear.protolayout.proto.AlignmentProto.ArcAnchorTypeProp anchorType_;
    /**
     * <pre>
     * How to align the contents of this container relative to anchor_angle. If
     * not defined, defaults to ARC_ANCHOR_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcAnchorTypeProp anchor_type = 3;</code>
     */
    @java.lang.Override
    public boolean hasAnchorType() {
      return anchorType_ != null;
    }
    /**
     * <pre>
     * How to align the contents of this container relative to anchor_angle. If
     * not defined, defaults to ARC_ANCHOR_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcAnchorTypeProp anchor_type = 3;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.AlignmentProto.ArcAnchorTypeProp getAnchorType() {
      return anchorType_ == null ? androidx.wear.protolayout.proto.AlignmentProto.ArcAnchorTypeProp.getDefaultInstance() : anchorType_;
    }
    /**
     * <pre>
     * How to align the contents of this container relative to anchor_angle. If
     * not defined, defaults to ARC_ANCHOR_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcAnchorTypeProp anchor_type = 3;</code>
     */
    private void setAnchorType(androidx.wear.protolayout.proto.AlignmentProto.ArcAnchorTypeProp value) {
      value.getClass();
  anchorType_ = value;

      }
    /**
     * <pre>
     * How to align the contents of this container relative to anchor_angle. If
     * not defined, defaults to ARC_ANCHOR_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcAnchorTypeProp anchor_type = 3;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeAnchorType(androidx.wear.protolayout.proto.AlignmentProto.ArcAnchorTypeProp value) {
      value.getClass();
  if (anchorType_ != null &&
          anchorType_ != androidx.wear.protolayout.proto.AlignmentProto.ArcAnchorTypeProp.getDefaultInstance()) {
        anchorType_ =
          androidx.wear.protolayout.proto.AlignmentProto.ArcAnchorTypeProp.newBuilder(anchorType_).mergeFrom(value).buildPartial();
      } else {
        anchorType_ = value;
      }

    }
    /**
     * <pre>
     * How to align the contents of this container relative to anchor_angle. If
     * not defined, defaults to ARC_ANCHOR_CENTER.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcAnchorTypeProp anchor_type = 3;</code>
     */
    private void clearAnchorType() {  anchorType_ = null;

    }

    public static final int VERTICAL_ALIGN_FIELD_NUMBER = 4;
    private androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp verticalAlign_;
    /**
     * <pre>
     * Vertical alignment of elements within the arc. If the Arc's thickness is
     * larger than the thickness of the element being drawn, this controls whether
     * the element should be drawn towards the inner or outer edge of the arc, or
     * drawn in the center.
     * If not defined, defaults to VERTICAL_ALIGN_CENTER
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_align = 4;</code>
     */
    @java.lang.Override
    public boolean hasVerticalAlign() {
      return verticalAlign_ != null;
    }
    /**
     * <pre>
     * Vertical alignment of elements within the arc. If the Arc's thickness is
     * larger than the thickness of the element being drawn, this controls whether
     * the element should be drawn towards the inner or outer edge of the arc, or
     * drawn in the center.
     * If not defined, defaults to VERTICAL_ALIGN_CENTER
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_align = 4;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp getVerticalAlign() {
      return verticalAlign_ == null ? androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp.getDefaultInstance() : verticalAlign_;
    }
    /**
     * <pre>
     * Vertical alignment of elements within the arc. If the Arc's thickness is
     * larger than the thickness of the element being drawn, this controls whether
     * the element should be drawn towards the inner or outer edge of the arc, or
     * drawn in the center.
     * If not defined, defaults to VERTICAL_ALIGN_CENTER
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_align = 4;</code>
     */
    private void setVerticalAlign(androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp value) {
      value.getClass();
  verticalAlign_ = value;

      }
    /**
     * <pre>
     * Vertical alignment of elements within the arc. If the Arc's thickness is
     * larger than the thickness of the element being drawn, this controls whether
     * the element should be drawn towards the inner or outer edge of the arc, or
     * drawn in the center.
     * If not defined, defaults to VERTICAL_ALIGN_CENTER
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_align = 4;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeVerticalAlign(androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp value) {
      value.getClass();
  if (verticalAlign_ != null &&
          verticalAlign_ != androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp.getDefaultInstance()) {
        verticalAlign_ =
          androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp.newBuilder(verticalAlign_).mergeFrom(value).buildPartial();
      } else {
        verticalAlign_ = value;
      }

    }
    /**
     * <pre>
     * Vertical alignment of elements within the arc. If the Arc's thickness is
     * larger than the thickness of the element being drawn, this controls whether
     * the element should be drawn towards the inner or outer edge of the arc, or
     * drawn in the center.
     * If not defined, defaults to VERTICAL_ALIGN_CENTER
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_align = 4;</code>
     */
    private void clearVerticalAlign() {  verticalAlign_ = null;

    }

    public static final int MODIFIERS_FIELD_NUMBER = 5;
    private androidx.wear.protolayout.proto.ModifiersProto.Modifiers modifiers_;
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     */
    @java.lang.Override
    public boolean hasModifiers() {
      return modifiers_ != null;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers() {
      return modifiers_ == null ? androidx.wear.protolayout.proto.ModifiersProto.Modifiers.getDefaultInstance() : modifiers_;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     */
    private void setModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
      value.getClass();
  modifiers_ = value;

      }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
      value.getClass();
  if (modifiers_ != null &&
          modifiers_ != androidx.wear.protolayout.proto.ModifiersProto.Modifiers.getDefaultInstance()) {
        modifiers_ =
          androidx.wear.protolayout.proto.ModifiersProto.Modifiers.newBuilder(modifiers_).mergeFrom(value).buildPartial();
      } else {
        modifiers_ = value;
      }

    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
     */
    private void clearModifiers() {  modifiers_ = null;

    }

    public static final int MAX_ANGLE_FIELD_NUMBER = 6;
    private androidx.wear.protolayout.proto.DimensionProto.DegreesProp maxAngle_;
    /**
     * <pre>
     * The target angle that will be used by the layout when expanding child
     * elements. NB a value of zero is interpreted to mean 360 degrees. This
     * target may not be achievable if other non-expandable elements bring us past
     * this value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp max_angle = 6;</code>
     */
    @java.lang.Override
    public boolean hasMaxAngle() {
      return maxAngle_ != null;
    }
    /**
     * <pre>
     * The target angle that will be used by the layout when expanding child
     * elements. NB a value of zero is interpreted to mean 360 degrees. This
     * target may not be achievable if other non-expandable elements bring us past
     * this value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp max_angle = 6;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.DegreesProp getMaxAngle() {
      return maxAngle_ == null ? androidx.wear.protolayout.proto.DimensionProto.DegreesProp.getDefaultInstance() : maxAngle_;
    }
    /**
     * <pre>
     * The target angle that will be used by the layout when expanding child
     * elements. NB a value of zero is interpreted to mean 360 degrees. This
     * target may not be achievable if other non-expandable elements bring us past
     * this value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp max_angle = 6;</code>
     */
    private void setMaxAngle(androidx.wear.protolayout.proto.DimensionProto.DegreesProp value) {
      value.getClass();
  maxAngle_ = value;

      }
    /**
     * <pre>
     * The target angle that will be used by the layout when expanding child
     * elements. NB a value of zero is interpreted to mean 360 degrees. This
     * target may not be achievable if other non-expandable elements bring us past
     * this value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp max_angle = 6;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeMaxAngle(androidx.wear.protolayout.proto.DimensionProto.DegreesProp value) {
      value.getClass();
  if (maxAngle_ != null &&
          maxAngle_ != androidx.wear.protolayout.proto.DimensionProto.DegreesProp.getDefaultInstance()) {
        maxAngle_ =
          androidx.wear.protolayout.proto.DimensionProto.DegreesProp.newBuilder(maxAngle_).mergeFrom(value).buildPartial();
      } else {
        maxAngle_ = value;
      }

    }
    /**
     * <pre>
     * The target angle that will be used by the layout when expanding child
     * elements. NB a value of zero is interpreted to mean 360 degrees. This
     * target may not be achievable if other non-expandable elements bring us past
     * this value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp max_angle = 6;</code>
     */
    private void clearMaxAngle() {  maxAngle_ = null;

    }

    public static final int ARC_DIRECTION_FIELD_NUMBER = 7;
    private androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp arcDirection_;
    /**
     * <pre>
     * The direction in which child elements are laid out.&lt;setter&gt; If not set,
     * defaults to ARC_DIRECTION_NORMAL.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 7;</code>
     */
    @java.lang.Override
    public boolean hasArcDirection() {
      return arcDirection_ != null;
    }
    /**
     * <pre>
     * The direction in which child elements are laid out.&lt;setter&gt; If not set,
     * defaults to ARC_DIRECTION_NORMAL.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 7;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp getArcDirection() {
      return arcDirection_ == null ? androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp.getDefaultInstance() : arcDirection_;
    }
    /**
     * <pre>
     * The direction in which child elements are laid out.&lt;setter&gt; If not set,
     * defaults to ARC_DIRECTION_NORMAL.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 7;</code>
     */
    private void setArcDirection(androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp value) {
      value.getClass();
  arcDirection_ = value;

      }
    /**
     * <pre>
     * The direction in which child elements are laid out.&lt;setter&gt; If not set,
     * defaults to ARC_DIRECTION_NORMAL.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 7;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeArcDirection(androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp value) {
      value.getClass();
  if (arcDirection_ != null &&
          arcDirection_ != androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp.getDefaultInstance()) {
        arcDirection_ =
          androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp.newBuilder(arcDirection_).mergeFrom(value).buildPartial();
      } else {
        arcDirection_ = value;
      }

    }
    /**
     * <pre>
     * The direction in which child elements are laid out.&lt;setter&gt; If not set,
     * defaults to ARC_DIRECTION_NORMAL.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 7;</code>
     */
    private void clearArcDirection() {  arcDirection_ = null;

    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.Arc parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Arc 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.proto.LayoutElementProto.Arc 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.proto.LayoutElementProto.Arc 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.proto.LayoutElementProto.Arc parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Arc 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.proto.LayoutElementProto.Arc parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Arc 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.proto.LayoutElementProto.Arc parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Arc 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.proto.LayoutElementProto.Arc parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Arc 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.proto.LayoutElementProto.Arc prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * An arc container. This container will fill itself to a circle, which fits
     * inside its parent container, and all of its children will be placed on that
     * circle. The fields anchor_angle and anchor_type can be used to specify where
     * to draw children within this circle.
     *
     * &lt;p&gt; Note that when setting padding for the arc, if padding values (top,
     * button, left, and right) are not equal, the largest between them will be used
     * to apply padding uniformly to all sides.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.Arc}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.Arc, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.Arc)
        androidx.wear.protolayout.proto.LayoutElementProto.ArcOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.Arc.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Contents of this container.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
       */
      @java.lang.Override
      public java.util.List<androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement> getContentsList() {
        return java.util.Collections.unmodifiableList(
            instance.getContentsList());
      }
      /**
       * <pre>
       * Contents of this container.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
       */
      @java.lang.Override
      public int getContentsCount() {
        return instance.getContentsCount();
      }/**
       * <pre>
       * Contents of this container.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement getContents(int index) {
        return instance.getContents(index);
      }
      /**
       * <pre>
       * Contents of this container.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
       */
      public Builder setContents(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement value) {
        copyOnWrite();
        instance.setContents(index, value);
        return this;
      }
      /**
       * <pre>
       * Contents of this container.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
       */
      public Builder setContents(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement.Builder builderForValue) {
        copyOnWrite();
        instance.setContents(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Contents of this container.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
       */
      public Builder addContents(androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement value) {
        copyOnWrite();
        instance.addContents(value);
        return this;
      }
      /**
       * <pre>
       * Contents of this container.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
       */
      public Builder addContents(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement value) {
        copyOnWrite();
        instance.addContents(index, value);
        return this;
      }
      /**
       * <pre>
       * Contents of this container.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
       */
      public Builder addContents(
          androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement.Builder builderForValue) {
        copyOnWrite();
        instance.addContents(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Contents of this container.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
       */
      public Builder addContents(
          int index, androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement.Builder builderForValue) {
        copyOnWrite();
        instance.addContents(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Contents of this container.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
       */
      public Builder addAllContents(
          java.lang.Iterable<? extends androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement> values) {
        copyOnWrite();
        instance.addAllContents(values);
        return this;
      }
      /**
       * <pre>
       * Contents of this container.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
       */
      public Builder clearContents() {
        copyOnWrite();
        instance.clearContents();
        return this;
      }
      /**
       * <pre>
       * Contents of this container.
       * </pre>
       *
       * <code>repeated .androidx.wear.protolayout.proto.ArcLayoutElement contents = 1;</code>
       */
      public Builder removeContents(int index) {
        copyOnWrite();
        instance.removeContents(index);
        return this;
      }

      /**
       * <pre>
       * The angle for the anchor, used with anchor_type to determine where to draw
       * children. Note that 0 degrees is the 12 o clock position on a device, and
       * the angle sweeps clockwise. If not defined, defaults to 0 degrees.
       *
       * Values do not have to be clamped to the range 0-360; values less than 0
       * degrees will sweep anti-clockwise (i.e. -90 degrees is equivalent to 270
       * degrees), and values &gt;360 will be be placed at X mod 360 degrees.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicAnchorAngle(AngularLayoutConstraint)}
       * otherwise {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp anchor_angle = 2;</code>
       */
      @java.lang.Override
      public boolean hasAnchorAngle() {
        return instance.hasAnchorAngle();
      }
      /**
       * <pre>
       * The angle for the anchor, used with anchor_type to determine where to draw
       * children. Note that 0 degrees is the 12 o clock position on a device, and
       * the angle sweeps clockwise. If not defined, defaults to 0 degrees.
       *
       * Values do not have to be clamped to the range 0-360; values less than 0
       * degrees will sweep anti-clockwise (i.e. -90 degrees is equivalent to 270
       * degrees), and values &gt;360 will be be placed at X mod 360 degrees.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicAnchorAngle(AngularLayoutConstraint)}
       * otherwise {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp anchor_angle = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.DegreesProp getAnchorAngle() {
        return instance.getAnchorAngle();
      }
      /**
       * <pre>
       * The angle for the anchor, used with anchor_type to determine where to draw
       * children. Note that 0 degrees is the 12 o clock position on a device, and
       * the angle sweeps clockwise. If not defined, defaults to 0 degrees.
       *
       * Values do not have to be clamped to the range 0-360; values less than 0
       * degrees will sweep anti-clockwise (i.e. -90 degrees is equivalent to 270
       * degrees), and values &gt;360 will be be placed at X mod 360 degrees.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicAnchorAngle(AngularLayoutConstraint)}
       * otherwise {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp anchor_angle = 2;</code>
       */
      public Builder setAnchorAngle(androidx.wear.protolayout.proto.DimensionProto.DegreesProp value) {
        copyOnWrite();
        instance.setAnchorAngle(value);
        return this;
        }
      /**
       * <pre>
       * The angle for the anchor, used with anchor_type to determine where to draw
       * children. Note that 0 degrees is the 12 o clock position on a device, and
       * the angle sweeps clockwise. If not defined, defaults to 0 degrees.
       *
       * Values do not have to be clamped to the range 0-360; values less than 0
       * degrees will sweep anti-clockwise (i.e. -90 degrees is equivalent to 270
       * degrees), and values &gt;360 will be be placed at X mod 360 degrees.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicAnchorAngle(AngularLayoutConstraint)}
       * otherwise {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp anchor_angle = 2;</code>
       */
      public Builder setAnchorAngle(
          androidx.wear.protolayout.proto.DimensionProto.DegreesProp.Builder builderForValue) {
        copyOnWrite();
        instance.setAnchorAngle(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The angle for the anchor, used with anchor_type to determine where to draw
       * children. Note that 0 degrees is the 12 o clock position on a device, and
       * the angle sweeps clockwise. If not defined, defaults to 0 degrees.
       *
       * Values do not have to be clamped to the range 0-360; values less than 0
       * degrees will sweep anti-clockwise (i.e. -90 degrees is equivalent to 270
       * degrees), and values &gt;360 will be be placed at X mod 360 degrees.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicAnchorAngle(AngularLayoutConstraint)}
       * otherwise {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp anchor_angle = 2;</code>
       */
      public Builder mergeAnchorAngle(androidx.wear.protolayout.proto.DimensionProto.DegreesProp value) {
        copyOnWrite();
        instance.mergeAnchorAngle(value);
        return this;
      }
      /**
       * <pre>
       * The angle for the anchor, used with anchor_type to determine where to draw
       * children. Note that 0 degrees is the 12 o clock position on a device, and
       * the angle sweeps clockwise. If not defined, defaults to 0 degrees.
       *
       * Values do not have to be clamped to the range 0-360; values less than 0
       * degrees will sweep anti-clockwise (i.e. -90 degrees is equivalent to 270
       * degrees), and values &gt;360 will be be placed at X mod 360 degrees.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicAnchorAngle(AngularLayoutConstraint)}
       * otherwise {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp anchor_angle = 2;</code>
       */
      public Builder clearAnchorAngle() {  copyOnWrite();
        instance.clearAnchorAngle();
        return this;
      }

      /**
       * <pre>
       * How to align the contents of this container relative to anchor_angle. If
       * not defined, defaults to ARC_ANCHOR_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcAnchorTypeProp anchor_type = 3;</code>
       */
      @java.lang.Override
      public boolean hasAnchorType() {
        return instance.hasAnchorType();
      }
      /**
       * <pre>
       * How to align the contents of this container relative to anchor_angle. If
       * not defined, defaults to ARC_ANCHOR_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcAnchorTypeProp anchor_type = 3;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.AlignmentProto.ArcAnchorTypeProp getAnchorType() {
        return instance.getAnchorType();
      }
      /**
       * <pre>
       * How to align the contents of this container relative to anchor_angle. If
       * not defined, defaults to ARC_ANCHOR_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcAnchorTypeProp anchor_type = 3;</code>
       */
      public Builder setAnchorType(androidx.wear.protolayout.proto.AlignmentProto.ArcAnchorTypeProp value) {
        copyOnWrite();
        instance.setAnchorType(value);
        return this;
        }
      /**
       * <pre>
       * How to align the contents of this container relative to anchor_angle. If
       * not defined, defaults to ARC_ANCHOR_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcAnchorTypeProp anchor_type = 3;</code>
       */
      public Builder setAnchorType(
          androidx.wear.protolayout.proto.AlignmentProto.ArcAnchorTypeProp.Builder builderForValue) {
        copyOnWrite();
        instance.setAnchorType(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * How to align the contents of this container relative to anchor_angle. If
       * not defined, defaults to ARC_ANCHOR_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcAnchorTypeProp anchor_type = 3;</code>
       */
      public Builder mergeAnchorType(androidx.wear.protolayout.proto.AlignmentProto.ArcAnchorTypeProp value) {
        copyOnWrite();
        instance.mergeAnchorType(value);
        return this;
      }
      /**
       * <pre>
       * How to align the contents of this container relative to anchor_angle. If
       * not defined, defaults to ARC_ANCHOR_CENTER.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcAnchorTypeProp anchor_type = 3;</code>
       */
      public Builder clearAnchorType() {  copyOnWrite();
        instance.clearAnchorType();
        return this;
      }

      /**
       * <pre>
       * Vertical alignment of elements within the arc. If the Arc's thickness is
       * larger than the thickness of the element being drawn, this controls whether
       * the element should be drawn towards the inner or outer edge of the arc, or
       * drawn in the center.
       * If not defined, defaults to VERTICAL_ALIGN_CENTER
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_align = 4;</code>
       */
      @java.lang.Override
      public boolean hasVerticalAlign() {
        return instance.hasVerticalAlign();
      }
      /**
       * <pre>
       * Vertical alignment of elements within the arc. If the Arc's thickness is
       * larger than the thickness of the element being drawn, this controls whether
       * the element should be drawn towards the inner or outer edge of the arc, or
       * drawn in the center.
       * If not defined, defaults to VERTICAL_ALIGN_CENTER
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_align = 4;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp getVerticalAlign() {
        return instance.getVerticalAlign();
      }
      /**
       * <pre>
       * Vertical alignment of elements within the arc. If the Arc's thickness is
       * larger than the thickness of the element being drawn, this controls whether
       * the element should be drawn towards the inner or outer edge of the arc, or
       * drawn in the center.
       * If not defined, defaults to VERTICAL_ALIGN_CENTER
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_align = 4;</code>
       */
      public Builder setVerticalAlign(androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp value) {
        copyOnWrite();
        instance.setVerticalAlign(value);
        return this;
        }
      /**
       * <pre>
       * Vertical alignment of elements within the arc. If the Arc's thickness is
       * larger than the thickness of the element being drawn, this controls whether
       * the element should be drawn towards the inner or outer edge of the arc, or
       * drawn in the center.
       * If not defined, defaults to VERTICAL_ALIGN_CENTER
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_align = 4;</code>
       */
      public Builder setVerticalAlign(
          androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp.Builder builderForValue) {
        copyOnWrite();
        instance.setVerticalAlign(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Vertical alignment of elements within the arc. If the Arc's thickness is
       * larger than the thickness of the element being drawn, this controls whether
       * the element should be drawn towards the inner or outer edge of the arc, or
       * drawn in the center.
       * If not defined, defaults to VERTICAL_ALIGN_CENTER
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_align = 4;</code>
       */
      public Builder mergeVerticalAlign(androidx.wear.protolayout.proto.AlignmentProto.VerticalAlignmentProp value) {
        copyOnWrite();
        instance.mergeVerticalAlign(value);
        return this;
      }
      /**
       * <pre>
       * Vertical alignment of elements within the arc. If the Arc's thickness is
       * larger than the thickness of the element being drawn, this controls whether
       * the element should be drawn towards the inner or outer edge of the arc, or
       * drawn in the center.
       * If not defined, defaults to VERTICAL_ALIGN_CENTER
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.VerticalAlignmentProp vertical_align = 4;</code>
       */
      public Builder clearVerticalAlign() {  copyOnWrite();
        instance.clearVerticalAlign();
        return this;
      }

      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      @java.lang.Override
      public boolean hasModifiers() {
        return instance.hasModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.ModifiersProto.Modifiers getModifiers() {
        return instance.getModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      public Builder setModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
        copyOnWrite();
        instance.setModifiers(value);
        return this;
        }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      public Builder setModifiers(
          androidx.wear.protolayout.proto.ModifiersProto.Modifiers.Builder builderForValue) {
        copyOnWrite();
        instance.setModifiers(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      public Builder mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.Modifiers value) {
        copyOnWrite();
        instance.mergeModifiers(value);
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Modifiers modifiers = 5;</code>
       */
      public Builder clearModifiers() {  copyOnWrite();
        instance.clearModifiers();
        return this;
      }

      /**
       * <pre>
       * The target angle that will be used by the layout when expanding child
       * elements. NB a value of zero is interpreted to mean 360 degrees. This
       * target may not be achievable if other non-expandable elements bring us past
       * this value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp max_angle = 6;</code>
       */
      @java.lang.Override
      public boolean hasMaxAngle() {
        return instance.hasMaxAngle();
      }
      /**
       * <pre>
       * The target angle that will be used by the layout when expanding child
       * elements. NB a value of zero is interpreted to mean 360 degrees. This
       * target may not be achievable if other non-expandable elements bring us past
       * this value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp max_angle = 6;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.DegreesProp getMaxAngle() {
        return instance.getMaxAngle();
      }
      /**
       * <pre>
       * The target angle that will be used by the layout when expanding child
       * elements. NB a value of zero is interpreted to mean 360 degrees. This
       * target may not be achievable if other non-expandable elements bring us past
       * this value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp max_angle = 6;</code>
       */
      public Builder setMaxAngle(androidx.wear.protolayout.proto.DimensionProto.DegreesProp value) {
        copyOnWrite();
        instance.setMaxAngle(value);
        return this;
        }
      /**
       * <pre>
       * The target angle that will be used by the layout when expanding child
       * elements. NB a value of zero is interpreted to mean 360 degrees. This
       * target may not be achievable if other non-expandable elements bring us past
       * this value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp max_angle = 6;</code>
       */
      public Builder setMaxAngle(
          androidx.wear.protolayout.proto.DimensionProto.DegreesProp.Builder builderForValue) {
        copyOnWrite();
        instance.setMaxAngle(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The target angle that will be used by the layout when expanding child
       * elements. NB a value of zero is interpreted to mean 360 degrees. This
       * target may not be achievable if other non-expandable elements bring us past
       * this value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp max_angle = 6;</code>
       */
      public Builder mergeMaxAngle(androidx.wear.protolayout.proto.DimensionProto.DegreesProp value) {
        copyOnWrite();
        instance.mergeMaxAngle(value);
        return this;
      }
      /**
       * <pre>
       * The target angle that will be used by the layout when expanding child
       * elements. NB a value of zero is interpreted to mean 360 degrees. This
       * target may not be achievable if other non-expandable elements bring us past
       * this value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp max_angle = 6;</code>
       */
      public Builder clearMaxAngle() {  copyOnWrite();
        instance.clearMaxAngle();
        return this;
      }

      /**
       * <pre>
       * The direction in which child elements are laid out.&lt;setter&gt; If not set,
       * defaults to ARC_DIRECTION_NORMAL.&lt;/setter&gt;
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 7;</code>
       */
      @java.lang.Override
      public boolean hasArcDirection() {
        return instance.hasArcDirection();
      }
      /**
       * <pre>
       * The direction in which child elements are laid out.&lt;setter&gt; If not set,
       * defaults to ARC_DIRECTION_NORMAL.&lt;/setter&gt;
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 7;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp getArcDirection() {
        return instance.getArcDirection();
      }
      /**
       * <pre>
       * The direction in which child elements are laid out.&lt;setter&gt; If not set,
       * defaults to ARC_DIRECTION_NORMAL.&lt;/setter&gt;
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 7;</code>
       */
      public Builder setArcDirection(androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp value) {
        copyOnWrite();
        instance.setArcDirection(value);
        return this;
        }
      /**
       * <pre>
       * The direction in which child elements are laid out.&lt;setter&gt; If not set,
       * defaults to ARC_DIRECTION_NORMAL.&lt;/setter&gt;
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 7;</code>
       */
      public Builder setArcDirection(
          androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp.Builder builderForValue) {
        copyOnWrite();
        instance.setArcDirection(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The direction in which child elements are laid out.&lt;setter&gt; If not set,
       * defaults to ARC_DIRECTION_NORMAL.&lt;/setter&gt;
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 7;</code>
       */
      public Builder mergeArcDirection(androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp value) {
        copyOnWrite();
        instance.mergeArcDirection(value);
        return this;
      }
      /**
       * <pre>
       * The direction in which child elements are laid out.&lt;setter&gt; If not set,
       * defaults to ARC_DIRECTION_NORMAL.&lt;/setter&gt;
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 7;</code>
       */
      public Builder clearArcDirection() {  copyOnWrite();
        instance.clearArcDirection();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.Arc)
    }
    @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.proto.LayoutElementProto.Arc();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "contents_",
              androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement.class,
              "anchorAngle_",
              "anchorType_",
              "verticalAlign_",
              "modifiers_",
              "maxAngle_",
              "arcDirection_",
            };
            java.lang.String info =
                "\u0000\u0007\u0000\u0000\u0001\u0007\u0007\u0000\u0001\u0000\u0001\u001b\u0002\t" +
                "\u0003\t\u0004\t\u0005\t\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.proto.LayoutElementProto.Arc> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.Arc.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.Arc>(
                        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.proto.Arc)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.Arc DEFAULT_INSTANCE;
    static {
      Arc defaultInstance = new Arc();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        Arc.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.Arc getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The text to render.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     * @return Whether the text field is set.
     */
    boolean hasText();
    /**
     * <pre>
     * The text to render.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     * @return The text.
     */
    androidx.wear.protolayout.proto.TypesProto.StringProp getText();

    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     * @return Whether the fontStyle field is set.
     */
    boolean hasFontStyle();
    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     * @return The fontStyle.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.FontStyle getFontStyle();

    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
     * @return Whether the modifiers field is set.
     */
    boolean hasModifiers();
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
     * @return The modifiers.
     */
    androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers getModifiers();

    /**
     * <pre>
     * The direction in which this text is drawn.&lt;setter&gt; If not set, defaults to
     * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 4;</code>
     * @return Whether the arcDirection field is set.
     */
    boolean hasArcDirection();
    /**
     * <pre>
     * The direction in which this text is drawn.&lt;setter&gt; If not set, defaults to
     * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 4;</code>
     * @return The arcDirection.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp getArcDirection();
  }
  /**
   * <pre>
   * A text element that can be used in an Arc.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.ArcText}
   */
  public  static final class ArcText extends
      com.google.protobuf.GeneratedMessageLite<
          ArcText, ArcText.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.ArcText)
      ArcTextOrBuilder {
    private ArcText() {
    }
    public static final int TEXT_FIELD_NUMBER = 1;
    private androidx.wear.protolayout.proto.TypesProto.StringProp text_;
    /**
     * <pre>
     * The text to render.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     */
    @java.lang.Override
    public boolean hasText() {
      return text_ != null;
    }
    /**
     * <pre>
     * The text to render.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.TypesProto.StringProp getText() {
      return text_ == null ? androidx.wear.protolayout.proto.TypesProto.StringProp.getDefaultInstance() : text_;
    }
    /**
     * <pre>
     * The text to render.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     */
    private void setText(androidx.wear.protolayout.proto.TypesProto.StringProp value) {
      value.getClass();
  text_ = value;

      }
    /**
     * <pre>
     * The text to render.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeText(androidx.wear.protolayout.proto.TypesProto.StringProp value) {
      value.getClass();
  if (text_ != null &&
          text_ != androidx.wear.protolayout.proto.TypesProto.StringProp.getDefaultInstance()) {
        text_ =
          androidx.wear.protolayout.proto.TypesProto.StringProp.newBuilder(text_).mergeFrom(value).buildPartial();
      } else {
        text_ = value;
      }

    }
    /**
     * <pre>
     * The text to render.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
     */
    private void clearText() {  text_ = null;

    }

    public static final int FONT_STYLE_FIELD_NUMBER = 2;
    private androidx.wear.protolayout.proto.LayoutElementProto.FontStyle fontStyle_;
    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     */
    @java.lang.Override
    public boolean hasFontStyle() {
      return fontStyle_ != null;
    }
    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.FontStyle getFontStyle() {
      return fontStyle_ == null ? androidx.wear.protolayout.proto.LayoutElementProto.FontStyle.getDefaultInstance() : fontStyle_;
    }
    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     */
    private void setFontStyle(androidx.wear.protolayout.proto.LayoutElementProto.FontStyle value) {
      value.getClass();
  fontStyle_ = value;

      }
    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeFontStyle(androidx.wear.protolayout.proto.LayoutElementProto.FontStyle value) {
      value.getClass();
  if (fontStyle_ != null &&
          fontStyle_ != androidx.wear.protolayout.proto.LayoutElementProto.FontStyle.getDefaultInstance()) {
        fontStyle_ =
          androidx.wear.protolayout.proto.LayoutElementProto.FontStyle.newBuilder(fontStyle_).mergeFrom(value).buildPartial();
      } else {
        fontStyle_ = value;
      }

    }
    /**
     * <pre>
     * The style of font to use (size, bold etc). If not specified, defaults to
     * the platform's default body font.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
     */
    private void clearFontStyle() {  fontStyle_ = null;

    }

    public static final int MODIFIERS_FIELD_NUMBER = 3;
    private androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers modifiers_;
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
     */
    @java.lang.Override
    public boolean hasModifiers() {
      return modifiers_ != null;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers getModifiers() {
      return modifiers_ == null ? androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers.getDefaultInstance() : modifiers_;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
     */
    private void setModifiers(androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers value) {
      value.getClass();
  modifiers_ = value;

      }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers value) {
      value.getClass();
  if (modifiers_ != null &&
          modifiers_ != androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers.getDefaultInstance()) {
        modifiers_ =
          androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers.newBuilder(modifiers_).mergeFrom(value).buildPartial();
      } else {
        modifiers_ = value;
      }

    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
     */
    private void clearModifiers() {  modifiers_ = null;

    }

    public static final int ARC_DIRECTION_FIELD_NUMBER = 4;
    private androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp arcDirection_;
    /**
     * <pre>
     * The direction in which this text is drawn.&lt;setter&gt; If not set, defaults to
     * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 4;</code>
     */
    @java.lang.Override
    public boolean hasArcDirection() {
      return arcDirection_ != null;
    }
    /**
     * <pre>
     * The direction in which this text is drawn.&lt;setter&gt; If not set, defaults to
     * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 4;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp getArcDirection() {
      return arcDirection_ == null ? androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp.getDefaultInstance() : arcDirection_;
    }
    /**
     * <pre>
     * The direction in which this text is drawn.&lt;setter&gt; If not set, defaults to
     * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 4;</code>
     */
    private void setArcDirection(androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp value) {
      value.getClass();
  arcDirection_ = value;

      }
    /**
     * <pre>
     * The direction in which this text is drawn.&lt;setter&gt; If not set, defaults to
     * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 4;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeArcDirection(androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp value) {
      value.getClass();
  if (arcDirection_ != null &&
          arcDirection_ != androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp.getDefaultInstance()) {
        arcDirection_ =
          androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp.newBuilder(arcDirection_).mergeFrom(value).buildPartial();
      } else {
        arcDirection_ = value;
      }

    }
    /**
     * <pre>
     * The direction in which this text is drawn.&lt;setter&gt; If not set, defaults to
     * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 4;</code>
     */
    private void clearArcDirection() {  arcDirection_ = null;

    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcText parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcText 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.proto.LayoutElementProto.ArcText 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.proto.LayoutElementProto.ArcText 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.proto.LayoutElementProto.ArcText parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcText 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.proto.LayoutElementProto.ArcText parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcText 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.proto.LayoutElementProto.ArcText parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcText 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.proto.LayoutElementProto.ArcText parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcText 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.proto.LayoutElementProto.ArcText prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * A text element that can be used in an Arc.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.ArcText}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.ArcText, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.ArcText)
        androidx.wear.protolayout.proto.LayoutElementProto.ArcTextOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.ArcText.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The text to render.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
       */
      @java.lang.Override
      public boolean hasText() {
        return instance.hasText();
      }
      /**
       * <pre>
       * The text to render.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.TypesProto.StringProp getText() {
        return instance.getText();
      }
      /**
       * <pre>
       * The text to render.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
       */
      public Builder setText(androidx.wear.protolayout.proto.TypesProto.StringProp value) {
        copyOnWrite();
        instance.setText(value);
        return this;
        }
      /**
       * <pre>
       * The text to render.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
       */
      public Builder setText(
          androidx.wear.protolayout.proto.TypesProto.StringProp.Builder builderForValue) {
        copyOnWrite();
        instance.setText(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The text to render.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
       */
      public Builder mergeText(androidx.wear.protolayout.proto.TypesProto.StringProp value) {
        copyOnWrite();
        instance.mergeText(value);
        return this;
      }
      /**
       * <pre>
       * The text to render.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StringProp text = 1;</code>
       */
      public Builder clearText() {  copyOnWrite();
        instance.clearText();
        return this;
      }

      /**
       * <pre>
       * The style of font to use (size, bold etc). If not specified, defaults to
       * the platform's default body font.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
       */
      @java.lang.Override
      public boolean hasFontStyle() {
        return instance.hasFontStyle();
      }
      /**
       * <pre>
       * The style of font to use (size, bold etc). If not specified, defaults to
       * the platform's default body font.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.FontStyle getFontStyle() {
        return instance.getFontStyle();
      }
      /**
       * <pre>
       * The style of font to use (size, bold etc). If not specified, defaults to
       * the platform's default body font.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
       */
      public Builder setFontStyle(androidx.wear.protolayout.proto.LayoutElementProto.FontStyle value) {
        copyOnWrite();
        instance.setFontStyle(value);
        return this;
        }
      /**
       * <pre>
       * The style of font to use (size, bold etc). If not specified, defaults to
       * the platform's default body font.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
       */
      public Builder setFontStyle(
          androidx.wear.protolayout.proto.LayoutElementProto.FontStyle.Builder builderForValue) {
        copyOnWrite();
        instance.setFontStyle(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The style of font to use (size, bold etc). If not specified, defaults to
       * the platform's default body font.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
       */
      public Builder mergeFontStyle(androidx.wear.protolayout.proto.LayoutElementProto.FontStyle value) {
        copyOnWrite();
        instance.mergeFontStyle(value);
        return this;
      }
      /**
       * <pre>
       * The style of font to use (size, bold etc). If not specified, defaults to
       * the platform's default body font.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.FontStyle font_style = 2;</code>
       */
      public Builder clearFontStyle() {  copyOnWrite();
        instance.clearFontStyle();
        return this;
      }

      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
       */
      @java.lang.Override
      public boolean hasModifiers() {
        return instance.hasModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers getModifiers() {
        return instance.getModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
       */
      public Builder setModifiers(androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers value) {
        copyOnWrite();
        instance.setModifiers(value);
        return this;
        }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
       */
      public Builder setModifiers(
          androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers.Builder builderForValue) {
        copyOnWrite();
        instance.setModifiers(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
       */
      public Builder mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers value) {
        copyOnWrite();
        instance.mergeModifiers(value);
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
       */
      public Builder clearModifiers() {  copyOnWrite();
        instance.clearModifiers();
        return this;
      }

      /**
       * <pre>
       * The direction in which this text is drawn.&lt;setter&gt; If not set, defaults to
       * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 4;</code>
       */
      @java.lang.Override
      public boolean hasArcDirection() {
        return instance.hasArcDirection();
      }
      /**
       * <pre>
       * The direction in which this text is drawn.&lt;setter&gt; If not set, defaults to
       * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 4;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp getArcDirection() {
        return instance.getArcDirection();
      }
      /**
       * <pre>
       * The direction in which this text is drawn.&lt;setter&gt; If not set, defaults to
       * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 4;</code>
       */
      public Builder setArcDirection(androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp value) {
        copyOnWrite();
        instance.setArcDirection(value);
        return this;
        }
      /**
       * <pre>
       * The direction in which this text is drawn.&lt;setter&gt; If not set, defaults to
       * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 4;</code>
       */
      public Builder setArcDirection(
          androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp.Builder builderForValue) {
        copyOnWrite();
        instance.setArcDirection(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The direction in which this text is drawn.&lt;setter&gt; If not set, defaults to
       * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 4;</code>
       */
      public Builder mergeArcDirection(androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp value) {
        copyOnWrite();
        instance.mergeArcDirection(value);
        return this;
      }
      /**
       * <pre>
       * The direction in which this text is drawn.&lt;setter&gt; If not set, defaults to
       * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 4;</code>
       */
      public Builder clearArcDirection() {  copyOnWrite();
        instance.clearArcDirection();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.ArcText)
    }
    @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.proto.LayoutElementProto.ArcText();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "text_",
              "fontStyle_",
              "modifiers_",
              "arcDirection_",
            };
            java.lang.String info =
                "\u0000\u0004\u0000\u0000\u0001\u0004\u0004\u0000\u0000\u0000\u0001\t\u0002\t\u0003" +
                "\t\u0004\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.proto.LayoutElementProto.ArcText> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.ArcText.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.ArcText>(
                        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.proto.ArcText)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.ArcText DEFAULT_INSTANCE;
    static {
      ArcText defaultInstance = new ArcText();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        ArcText.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcText getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The length of this line, in degrees. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicLength(AngularLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
     * @return Whether the length field is set.
     */
    boolean hasLength();
    /**
     * <pre>
     * The length of this line, in degrees. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicLength(AngularLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
     * @return The length.
     */
    androidx.wear.protolayout.proto.DimensionProto.DegreesProp getLength();

    /**
     * <pre>
     * The thickness of this line. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
     * @return Whether the thickness field is set.
     */
    boolean hasThickness();
    /**
     * <pre>
     * The thickness of this line. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
     * @return The thickness.
     */
    androidx.wear.protolayout.proto.DimensionProto.DpProp getThickness();

    /**
     * <pre>
     * The color of this line.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * If a brush is set, this color will not be used.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp color = 3;</code>
     * @return Whether the color field is set.
     */
    boolean hasColor();
    /**
     * <pre>
     * The color of this line.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * If a brush is set, this color will not be used.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp color = 3;</code>
     * @return The color.
     */
    androidx.wear.protolayout.proto.ColorProto.ColorProp getColor();

    /**
     * <pre>
     * A brush used to draw this line. If set, the brush will be used instead of
     * the color provided in {&#64;code setColor()}.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Brush brush = 7;</code>
     * @return Whether the brush field is set.
     */
    boolean hasBrush();
    /**
     * <pre>
     * A brush used to draw this line. If set, the brush will be used instead of
     * the color provided in {&#64;code setColor()}.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Brush brush = 7;</code>
     * @return The brush.
     */
    androidx.wear.protolayout.proto.ColorProto.Brush getBrush();

    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 4;</code>
     * @return Whether the modifiers field is set.
     */
    boolean hasModifiers();
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 4;</code>
     * @return The modifiers.
     */
    androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers getModifiers();

    /**
     * <pre>
     * The length of this line. If not defined, defaults to 0 degrees.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcLineLength angular_length = 5;</code>
     * @return Whether the angularLength field is set.
     */
    boolean hasAngularLength();
    /**
     * <pre>
     * The length of this line. If not defined, defaults to 0 degrees.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcLineLength angular_length = 5;</code>
     * @return The angularLength.
     */
    androidx.wear.protolayout.proto.DimensionProto.ArcLineLength getAngularLength();

    /**
     * <pre>
     * The line stroke cap. If not defined, defaults to STROKE_CAP_ROUND.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StrokeCapProp stroke_cap = 6;</code>
     * @return Whether the strokeCap field is set.
     */
    boolean hasStrokeCap();
    /**
     * <pre>
     * The line stroke cap. If not defined, defaults to STROKE_CAP_ROUND.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StrokeCapProp stroke_cap = 6;</code>
     * @return The strokeCap.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp getStrokeCap();

    /**
     * <pre>
     * The direction in which this line is drawn.&lt;setter&gt; If not set, defaults to
     * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 8;</code>
     * @return Whether the arcDirection field is set.
     */
    boolean hasArcDirection();
    /**
     * <pre>
     * The direction in which this line is drawn.&lt;setter&gt; If not set, defaults to
     * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 8;</code>
     * @return The arcDirection.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp getArcDirection();
  }
  /**
   * <pre>
   * A line that can be used in an Arc and renders as a round progress bar.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.ArcLine}
   */
  public  static final class ArcLine extends
      com.google.protobuf.GeneratedMessageLite<
          ArcLine, ArcLine.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.ArcLine)
      ArcLineOrBuilder {
    private ArcLine() {
    }
    public static final int LENGTH_FIELD_NUMBER = 1;
    private androidx.wear.protolayout.proto.DimensionProto.DegreesProp length_;
    /**
     * <pre>
     * The length of this line, in degrees. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicLength(AngularLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
     */
    @java.lang.Override
    public boolean hasLength() {
      return length_ != null;
    }
    /**
     * <pre>
     * The length of this line, in degrees. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicLength(AngularLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.DegreesProp getLength() {
      return length_ == null ? androidx.wear.protolayout.proto.DimensionProto.DegreesProp.getDefaultInstance() : length_;
    }
    /**
     * <pre>
     * The length of this line, in degrees. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicLength(AngularLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
     */
    private void setLength(androidx.wear.protolayout.proto.DimensionProto.DegreesProp value) {
      value.getClass();
  length_ = value;

      }
    /**
     * <pre>
     * The length of this line, in degrees. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicLength(AngularLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeLength(androidx.wear.protolayout.proto.DimensionProto.DegreesProp value) {
      value.getClass();
  if (length_ != null &&
          length_ != androidx.wear.protolayout.proto.DimensionProto.DegreesProp.getDefaultInstance()) {
        length_ =
          androidx.wear.protolayout.proto.DimensionProto.DegreesProp.newBuilder(length_).mergeFrom(value).buildPartial();
      } else {
        length_ = value;
      }

    }
    /**
     * <pre>
     * The length of this line, in degrees. If not defined, defaults to 0.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * When using a dynamic value, make sure to specify the bounding constraints
     * for the affected layout element through {&#64;code
     * setLayoutConstraintsForDynamicLength(AngularLayoutConstraint)} otherwise
     * {&#64;code build()} fails.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
     */
    private void clearLength() {  length_ = null;

    }

    public static final int THICKNESS_FIELD_NUMBER = 2;
    private androidx.wear.protolayout.proto.DimensionProto.DpProp thickness_;
    /**
     * <pre>
     * The thickness of this line. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
     */
    @java.lang.Override
    public boolean hasThickness() {
      return thickness_ != null;
    }
    /**
     * <pre>
     * The thickness of this line. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.DpProp getThickness() {
      return thickness_ == null ? androidx.wear.protolayout.proto.DimensionProto.DpProp.getDefaultInstance() : thickness_;
    }
    /**
     * <pre>
     * The thickness of this line. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
     */
    private void setThickness(androidx.wear.protolayout.proto.DimensionProto.DpProp value) {
      value.getClass();
  thickness_ = value;

      }
    /**
     * <pre>
     * The thickness of this line. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeThickness(androidx.wear.protolayout.proto.DimensionProto.DpProp value) {
      value.getClass();
  if (thickness_ != null &&
          thickness_ != androidx.wear.protolayout.proto.DimensionProto.DpProp.getDefaultInstance()) {
        thickness_ =
          androidx.wear.protolayout.proto.DimensionProto.DpProp.newBuilder(thickness_).mergeFrom(value).buildPartial();
      } else {
        thickness_ = value;
      }

    }
    /**
     * <pre>
     * The thickness of this line. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
     */
    private void clearThickness() {  thickness_ = null;

    }

    public static final int COLOR_FIELD_NUMBER = 3;
    private androidx.wear.protolayout.proto.ColorProto.ColorProp color_;
    /**
     * <pre>
     * The color of this line.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * If a brush is set, this color will not be used.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp color = 3;</code>
     */
    @java.lang.Override
    public boolean hasColor() {
      return color_ != null;
    }
    /**
     * <pre>
     * The color of this line.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * If a brush is set, this color will not be used.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp color = 3;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.ColorProto.ColorProp getColor() {
      return color_ == null ? androidx.wear.protolayout.proto.ColorProto.ColorProp.getDefaultInstance() : color_;
    }
    /**
     * <pre>
     * The color of this line.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * If a brush is set, this color will not be used.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp color = 3;</code>
     */
    private void setColor(androidx.wear.protolayout.proto.ColorProto.ColorProp value) {
      value.getClass();
  color_ = value;

      }
    /**
     * <pre>
     * The color of this line.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * If a brush is set, this color will not be used.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp color = 3;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeColor(androidx.wear.protolayout.proto.ColorProto.ColorProp value) {
      value.getClass();
  if (color_ != null &&
          color_ != androidx.wear.protolayout.proto.ColorProto.ColorProp.getDefaultInstance()) {
        color_ =
          androidx.wear.protolayout.proto.ColorProto.ColorProp.newBuilder(color_).mergeFrom(value).buildPartial();
      } else {
        color_ = value;
      }

    }
    /**
     * <pre>
     * The color of this line.
     *
     * While this field is statically accessible from 1.0, it's only bindable
     * since version 1.2 and renderers supporting version 1.2 will use the dynamic
     * value (if set).
     *
     * If a brush is set, this color will not be used.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ColorProp color = 3;</code>
     */
    private void clearColor() {  color_ = null;

    }

    public static final int BRUSH_FIELD_NUMBER = 7;
    private androidx.wear.protolayout.proto.ColorProto.Brush brush_;
    /**
     * <pre>
     * A brush used to draw this line. If set, the brush will be used instead of
     * the color provided in {&#64;code setColor()}.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Brush brush = 7;</code>
     */
    @java.lang.Override
    public boolean hasBrush() {
      return brush_ != null;
    }
    /**
     * <pre>
     * A brush used to draw this line. If set, the brush will be used instead of
     * the color provided in {&#64;code setColor()}.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Brush brush = 7;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.ColorProto.Brush getBrush() {
      return brush_ == null ? androidx.wear.protolayout.proto.ColorProto.Brush.getDefaultInstance() : brush_;
    }
    /**
     * <pre>
     * A brush used to draw this line. If set, the brush will be used instead of
     * the color provided in {&#64;code setColor()}.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Brush brush = 7;</code>
     */
    private void setBrush(androidx.wear.protolayout.proto.ColorProto.Brush value) {
      value.getClass();
  brush_ = value;

      }
    /**
     * <pre>
     * A brush used to draw this line. If set, the brush will be used instead of
     * the color provided in {&#64;code setColor()}.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Brush brush = 7;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeBrush(androidx.wear.protolayout.proto.ColorProto.Brush value) {
      value.getClass();
  if (brush_ != null &&
          brush_ != androidx.wear.protolayout.proto.ColorProto.Brush.getDefaultInstance()) {
        brush_ =
          androidx.wear.protolayout.proto.ColorProto.Brush.newBuilder(brush_).mergeFrom(value).buildPartial();
      } else {
        brush_ = value;
      }

    }
    /**
     * <pre>
     * A brush used to draw this line. If set, the brush will be used instead of
     * the color provided in {&#64;code setColor()}.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Brush brush = 7;</code>
     */
    private void clearBrush() {  brush_ = null;

    }

    public static final int MODIFIERS_FIELD_NUMBER = 4;
    private androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers modifiers_;
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 4;</code>
     */
    @java.lang.Override
    public boolean hasModifiers() {
      return modifiers_ != null;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 4;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers getModifiers() {
      return modifiers_ == null ? androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers.getDefaultInstance() : modifiers_;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 4;</code>
     */
    private void setModifiers(androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers value) {
      value.getClass();
  modifiers_ = value;

      }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 4;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers value) {
      value.getClass();
  if (modifiers_ != null &&
          modifiers_ != androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers.getDefaultInstance()) {
        modifiers_ =
          androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers.newBuilder(modifiers_).mergeFrom(value).buildPartial();
      } else {
        modifiers_ = value;
      }

    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 4;</code>
     */
    private void clearModifiers() {  modifiers_ = null;

    }

    public static final int ANGULAR_LENGTH_FIELD_NUMBER = 5;
    private androidx.wear.protolayout.proto.DimensionProto.ArcLineLength angularLength_;
    /**
     * <pre>
     * The length of this line. If not defined, defaults to 0 degrees.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcLineLength angular_length = 5;</code>
     */
    @java.lang.Override
    public boolean hasAngularLength() {
      return angularLength_ != null;
    }
    /**
     * <pre>
     * The length of this line. If not defined, defaults to 0 degrees.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcLineLength angular_length = 5;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.ArcLineLength getAngularLength() {
      return angularLength_ == null ? androidx.wear.protolayout.proto.DimensionProto.ArcLineLength.getDefaultInstance() : angularLength_;
    }
    /**
     * <pre>
     * The length of this line. If not defined, defaults to 0 degrees.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcLineLength angular_length = 5;</code>
     */
    private void setAngularLength(androidx.wear.protolayout.proto.DimensionProto.ArcLineLength value) {
      value.getClass();
  angularLength_ = value;

      }
    /**
     * <pre>
     * The length of this line. If not defined, defaults to 0 degrees.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcLineLength angular_length = 5;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeAngularLength(androidx.wear.protolayout.proto.DimensionProto.ArcLineLength value) {
      value.getClass();
  if (angularLength_ != null &&
          angularLength_ != androidx.wear.protolayout.proto.DimensionProto.ArcLineLength.getDefaultInstance()) {
        angularLength_ =
          androidx.wear.protolayout.proto.DimensionProto.ArcLineLength.newBuilder(angularLength_).mergeFrom(value).buildPartial();
      } else {
        angularLength_ = value;
      }

    }
    /**
     * <pre>
     * The length of this line. If not defined, defaults to 0 degrees.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcLineLength angular_length = 5;</code>
     */
    private void clearAngularLength() {  angularLength_ = null;

    }

    public static final int STROKE_CAP_FIELD_NUMBER = 6;
    private androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp strokeCap_;
    /**
     * <pre>
     * The line stroke cap. If not defined, defaults to STROKE_CAP_ROUND.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StrokeCapProp stroke_cap = 6;</code>
     */
    @java.lang.Override
    public boolean hasStrokeCap() {
      return strokeCap_ != null;
    }
    /**
     * <pre>
     * The line stroke cap. If not defined, defaults to STROKE_CAP_ROUND.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StrokeCapProp stroke_cap = 6;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp getStrokeCap() {
      return strokeCap_ == null ? androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp.getDefaultInstance() : strokeCap_;
    }
    /**
     * <pre>
     * The line stroke cap. If not defined, defaults to STROKE_CAP_ROUND.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StrokeCapProp stroke_cap = 6;</code>
     */
    private void setStrokeCap(androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp value) {
      value.getClass();
  strokeCap_ = value;

      }
    /**
     * <pre>
     * The line stroke cap. If not defined, defaults to STROKE_CAP_ROUND.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StrokeCapProp stroke_cap = 6;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeStrokeCap(androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp value) {
      value.getClass();
  if (strokeCap_ != null &&
          strokeCap_ != androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp.getDefaultInstance()) {
        strokeCap_ =
          androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp.newBuilder(strokeCap_).mergeFrom(value).buildPartial();
      } else {
        strokeCap_ = value;
      }

    }
    /**
     * <pre>
     * The line stroke cap. If not defined, defaults to STROKE_CAP_ROUND.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StrokeCapProp stroke_cap = 6;</code>
     */
    private void clearStrokeCap() {  strokeCap_ = null;

    }

    public static final int ARC_DIRECTION_FIELD_NUMBER = 8;
    private androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp arcDirection_;
    /**
     * <pre>
     * The direction in which this line is drawn.&lt;setter&gt; If not set, defaults to
     * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 8;</code>
     */
    @java.lang.Override
    public boolean hasArcDirection() {
      return arcDirection_ != null;
    }
    /**
     * <pre>
     * The direction in which this line is drawn.&lt;setter&gt; If not set, defaults to
     * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 8;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp getArcDirection() {
      return arcDirection_ == null ? androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp.getDefaultInstance() : arcDirection_;
    }
    /**
     * <pre>
     * The direction in which this line is drawn.&lt;setter&gt; If not set, defaults to
     * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 8;</code>
     */
    private void setArcDirection(androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp value) {
      value.getClass();
  arcDirection_ = value;

      }
    /**
     * <pre>
     * The direction in which this line is drawn.&lt;setter&gt; If not set, defaults to
     * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 8;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeArcDirection(androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp value) {
      value.getClass();
  if (arcDirection_ != null &&
          arcDirection_ != androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp.getDefaultInstance()) {
        arcDirection_ =
          androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp.newBuilder(arcDirection_).mergeFrom(value).buildPartial();
      } else {
        arcDirection_ = value;
      }

    }
    /**
     * <pre>
     * The direction in which this line is drawn.&lt;setter&gt; If not set, defaults to
     * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 8;</code>
     */
    private void clearArcDirection() {  arcDirection_ = null;

    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcLine parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcLine 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.proto.LayoutElementProto.ArcLine 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.proto.LayoutElementProto.ArcLine 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.proto.LayoutElementProto.ArcLine parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcLine 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.proto.LayoutElementProto.ArcLine parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcLine 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.proto.LayoutElementProto.ArcLine parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcLine 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.proto.LayoutElementProto.ArcLine parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcLine 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.proto.LayoutElementProto.ArcLine prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * A line that can be used in an Arc and renders as a round progress bar.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.ArcLine}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.ArcLine, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.ArcLine)
        androidx.wear.protolayout.proto.LayoutElementProto.ArcLineOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.ArcLine.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The length of this line, in degrees. If not defined, defaults to 0.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicLength(AngularLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
       */
      @java.lang.Override
      public boolean hasLength() {
        return instance.hasLength();
      }
      /**
       * <pre>
       * The length of this line, in degrees. If not defined, defaults to 0.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicLength(AngularLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.DegreesProp getLength() {
        return instance.getLength();
      }
      /**
       * <pre>
       * The length of this line, in degrees. If not defined, defaults to 0.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicLength(AngularLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
       */
      public Builder setLength(androidx.wear.protolayout.proto.DimensionProto.DegreesProp value) {
        copyOnWrite();
        instance.setLength(value);
        return this;
        }
      /**
       * <pre>
       * The length of this line, in degrees. If not defined, defaults to 0.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicLength(AngularLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
       */
      public Builder setLength(
          androidx.wear.protolayout.proto.DimensionProto.DegreesProp.Builder builderForValue) {
        copyOnWrite();
        instance.setLength(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The length of this line, in degrees. If not defined, defaults to 0.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicLength(AngularLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
       */
      public Builder mergeLength(androidx.wear.protolayout.proto.DimensionProto.DegreesProp value) {
        copyOnWrite();
        instance.mergeLength(value);
        return this;
      }
      /**
       * <pre>
       * The length of this line, in degrees. If not defined, defaults to 0.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * When using a dynamic value, make sure to specify the bounding constraints
       * for the affected layout element through {&#64;code
       * setLayoutConstraintsForDynamicLength(AngularLayoutConstraint)} otherwise
       * {&#64;code build()} fails.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
       */
      public Builder clearLength() {  copyOnWrite();
        instance.clearLength();
        return this;
      }

      /**
       * <pre>
       * The thickness of this line. If not defined, defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
       */
      @java.lang.Override
      public boolean hasThickness() {
        return instance.hasThickness();
      }
      /**
       * <pre>
       * The thickness of this line. If not defined, defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.DpProp getThickness() {
        return instance.getThickness();
      }
      /**
       * <pre>
       * The thickness of this line. If not defined, defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
       */
      public Builder setThickness(androidx.wear.protolayout.proto.DimensionProto.DpProp value) {
        copyOnWrite();
        instance.setThickness(value);
        return this;
        }
      /**
       * <pre>
       * The thickness of this line. If not defined, defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
       */
      public Builder setThickness(
          androidx.wear.protolayout.proto.DimensionProto.DpProp.Builder builderForValue) {
        copyOnWrite();
        instance.setThickness(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The thickness of this line. If not defined, defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
       */
      public Builder mergeThickness(androidx.wear.protolayout.proto.DimensionProto.DpProp value) {
        copyOnWrite();
        instance.mergeThickness(value);
        return this;
      }
      /**
       * <pre>
       * The thickness of this line. If not defined, defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
       */
      public Builder clearThickness() {  copyOnWrite();
        instance.clearThickness();
        return this;
      }

      /**
       * <pre>
       * The color of this line.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * If a brush is set, this color will not be used.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorProp color = 3;</code>
       */
      @java.lang.Override
      public boolean hasColor() {
        return instance.hasColor();
      }
      /**
       * <pre>
       * The color of this line.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * If a brush is set, this color will not be used.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorProp color = 3;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.ColorProto.ColorProp getColor() {
        return instance.getColor();
      }
      /**
       * <pre>
       * The color of this line.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * If a brush is set, this color will not be used.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorProp color = 3;</code>
       */
      public Builder setColor(androidx.wear.protolayout.proto.ColorProto.ColorProp value) {
        copyOnWrite();
        instance.setColor(value);
        return this;
        }
      /**
       * <pre>
       * The color of this line.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * If a brush is set, this color will not be used.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorProp color = 3;</code>
       */
      public Builder setColor(
          androidx.wear.protolayout.proto.ColorProto.ColorProp.Builder builderForValue) {
        copyOnWrite();
        instance.setColor(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The color of this line.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * If a brush is set, this color will not be used.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorProp color = 3;</code>
       */
      public Builder mergeColor(androidx.wear.protolayout.proto.ColorProto.ColorProp value) {
        copyOnWrite();
        instance.mergeColor(value);
        return this;
      }
      /**
       * <pre>
       * The color of this line.
       *
       * While this field is statically accessible from 1.0, it's only bindable
       * since version 1.2 and renderers supporting version 1.2 will use the dynamic
       * value (if set).
       *
       * If a brush is set, this color will not be used.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ColorProp color = 3;</code>
       */
      public Builder clearColor() {  copyOnWrite();
        instance.clearColor();
        return this;
      }

      /**
       * <pre>
       * A brush used to draw this line. If set, the brush will be used instead of
       * the color provided in {&#64;code setColor()}.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Brush brush = 7;</code>
       */
      @java.lang.Override
      public boolean hasBrush() {
        return instance.hasBrush();
      }
      /**
       * <pre>
       * A brush used to draw this line. If set, the brush will be used instead of
       * the color provided in {&#64;code setColor()}.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Brush brush = 7;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.ColorProto.Brush getBrush() {
        return instance.getBrush();
      }
      /**
       * <pre>
       * A brush used to draw this line. If set, the brush will be used instead of
       * the color provided in {&#64;code setColor()}.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Brush brush = 7;</code>
       */
      public Builder setBrush(androidx.wear.protolayout.proto.ColorProto.Brush value) {
        copyOnWrite();
        instance.setBrush(value);
        return this;
        }
      /**
       * <pre>
       * A brush used to draw this line. If set, the brush will be used instead of
       * the color provided in {&#64;code setColor()}.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Brush brush = 7;</code>
       */
      public Builder setBrush(
          androidx.wear.protolayout.proto.ColorProto.Brush.Builder builderForValue) {
        copyOnWrite();
        instance.setBrush(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * A brush used to draw this line. If set, the brush will be used instead of
       * the color provided in {&#64;code setColor()}.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Brush brush = 7;</code>
       */
      public Builder mergeBrush(androidx.wear.protolayout.proto.ColorProto.Brush value) {
        copyOnWrite();
        instance.mergeBrush(value);
        return this;
      }
      /**
       * <pre>
       * A brush used to draw this line. If set, the brush will be used instead of
       * the color provided in {&#64;code setColor()}.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Brush brush = 7;</code>
       */
      public Builder clearBrush() {  copyOnWrite();
        instance.clearBrush();
        return this;
      }

      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 4;</code>
       */
      @java.lang.Override
      public boolean hasModifiers() {
        return instance.hasModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 4;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers getModifiers() {
        return instance.getModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 4;</code>
       */
      public Builder setModifiers(androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers value) {
        copyOnWrite();
        instance.setModifiers(value);
        return this;
        }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 4;</code>
       */
      public Builder setModifiers(
          androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers.Builder builderForValue) {
        copyOnWrite();
        instance.setModifiers(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 4;</code>
       */
      public Builder mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers value) {
        copyOnWrite();
        instance.mergeModifiers(value);
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 4;</code>
       */
      public Builder clearModifiers() {  copyOnWrite();
        instance.clearModifiers();
        return this;
      }

      /**
       * <pre>
       * The length of this line. If not defined, defaults to 0 degrees.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcLineLength angular_length = 5;</code>
       */
      @java.lang.Override
      public boolean hasAngularLength() {
        return instance.hasAngularLength();
      }
      /**
       * <pre>
       * The length of this line. If not defined, defaults to 0 degrees.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcLineLength angular_length = 5;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.ArcLineLength getAngularLength() {
        return instance.getAngularLength();
      }
      /**
       * <pre>
       * The length of this line. If not defined, defaults to 0 degrees.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcLineLength angular_length = 5;</code>
       */
      public Builder setAngularLength(androidx.wear.protolayout.proto.DimensionProto.ArcLineLength value) {
        copyOnWrite();
        instance.setAngularLength(value);
        return this;
        }
      /**
       * <pre>
       * The length of this line. If not defined, defaults to 0 degrees.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcLineLength angular_length = 5;</code>
       */
      public Builder setAngularLength(
          androidx.wear.protolayout.proto.DimensionProto.ArcLineLength.Builder builderForValue) {
        copyOnWrite();
        instance.setAngularLength(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The length of this line. If not defined, defaults to 0 degrees.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcLineLength angular_length = 5;</code>
       */
      public Builder mergeAngularLength(androidx.wear.protolayout.proto.DimensionProto.ArcLineLength value) {
        copyOnWrite();
        instance.mergeAngularLength(value);
        return this;
      }
      /**
       * <pre>
       * The length of this line. If not defined, defaults to 0 degrees.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcLineLength angular_length = 5;</code>
       */
      public Builder clearAngularLength() {  copyOnWrite();
        instance.clearAngularLength();
        return this;
      }

      /**
       * <pre>
       * The line stroke cap. If not defined, defaults to STROKE_CAP_ROUND.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StrokeCapProp stroke_cap = 6;</code>
       */
      @java.lang.Override
      public boolean hasStrokeCap() {
        return instance.hasStrokeCap();
      }
      /**
       * <pre>
       * The line stroke cap. If not defined, defaults to STROKE_CAP_ROUND.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StrokeCapProp stroke_cap = 6;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp getStrokeCap() {
        return instance.getStrokeCap();
      }
      /**
       * <pre>
       * The line stroke cap. If not defined, defaults to STROKE_CAP_ROUND.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StrokeCapProp stroke_cap = 6;</code>
       */
      public Builder setStrokeCap(androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp value) {
        copyOnWrite();
        instance.setStrokeCap(value);
        return this;
        }
      /**
       * <pre>
       * The line stroke cap. If not defined, defaults to STROKE_CAP_ROUND.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StrokeCapProp stroke_cap = 6;</code>
       */
      public Builder setStrokeCap(
          androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp.Builder builderForValue) {
        copyOnWrite();
        instance.setStrokeCap(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The line stroke cap. If not defined, defaults to STROKE_CAP_ROUND.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StrokeCapProp stroke_cap = 6;</code>
       */
      public Builder mergeStrokeCap(androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp value) {
        copyOnWrite();
        instance.mergeStrokeCap(value);
        return this;
      }
      /**
       * <pre>
       * The line stroke cap. If not defined, defaults to STROKE_CAP_ROUND.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StrokeCapProp stroke_cap = 6;</code>
       */
      public Builder clearStrokeCap() {  copyOnWrite();
        instance.clearStrokeCap();
        return this;
      }

      /**
       * <pre>
       * The direction in which this line is drawn.&lt;setter&gt; If not set, defaults to
       * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 8;</code>
       */
      @java.lang.Override
      public boolean hasArcDirection() {
        return instance.hasArcDirection();
      }
      /**
       * <pre>
       * The direction in which this line is drawn.&lt;setter&gt; If not set, defaults to
       * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 8;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp getArcDirection() {
        return instance.getArcDirection();
      }
      /**
       * <pre>
       * The direction in which this line is drawn.&lt;setter&gt; If not set, defaults to
       * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 8;</code>
       */
      public Builder setArcDirection(androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp value) {
        copyOnWrite();
        instance.setArcDirection(value);
        return this;
        }
      /**
       * <pre>
       * The direction in which this line is drawn.&lt;setter&gt; If not set, defaults to
       * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 8;</code>
       */
      public Builder setArcDirection(
          androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp.Builder builderForValue) {
        copyOnWrite();
        instance.setArcDirection(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The direction in which this line is drawn.&lt;setter&gt; If not set, defaults to
       * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 8;</code>
       */
      public Builder mergeArcDirection(androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp value) {
        copyOnWrite();
        instance.mergeArcDirection(value);
        return this;
      }
      /**
       * <pre>
       * The direction in which this line is drawn.&lt;setter&gt; If not set, defaults to
       * ARC_DIRECTION_CLOCKWISE.&lt;/setter&gt;
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirectionProp arc_direction = 8;</code>
       */
      public Builder clearArcDirection() {  copyOnWrite();
        instance.clearArcDirection();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.ArcLine)
    }
    @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.proto.LayoutElementProto.ArcLine();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "length_",
              "thickness_",
              "color_",
              "modifiers_",
              "angularLength_",
              "strokeCap_",
              "brush_",
              "arcDirection_",
            };
            java.lang.String info =
                "\u0000\b\u0000\u0000\u0001\b\b\u0000\u0000\u0000\u0001\t\u0002\t\u0003\t\u0004\t" +
                "\u0005\t\u0006\t\u0007\t\b\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.proto.LayoutElementProto.ArcLine> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.ArcLine.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.ArcLine>(
                        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.proto.ArcLine)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.ArcLine DEFAULT_INSTANCE;
    static {
      ArcLine defaultInstance = new ArcLine();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        ArcLine.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcLine getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StrokeCap value = 1;</code>
     * @return The enum numeric value on the wire for value.
     */
    int getValueValue();
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StrokeCap value = 1;</code>
     * @return The value.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.StrokeCap getValue();

    /**
     * <pre>
     * The stroke cap's shadow. When set, the stroke cap will be drawn with a
     * shadow, which allows it to be visible on top of other similarly colored
     * elements.
     *
     * Only opaque colors are supported in ArcLine if a shadow is set. Any
     * transparent colors will have their alpha component set to 0xFF (opaque).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Shadow shadow = 2;</code>
     * @return Whether the shadow field is set.
     */
    boolean hasShadow();
    /**
     * <pre>
     * The stroke cap's shadow. When set, the stroke cap will be drawn with a
     * shadow, which allows it to be visible on top of other similarly colored
     * elements.
     *
     * Only opaque colors are supported in ArcLine if a shadow is set. Any
     * transparent colors will have their alpha component set to 0xFF (opaque).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Shadow shadow = 2;</code>
     * @return The shadow.
     */
    androidx.wear.protolayout.proto.ModifiersProto.Shadow getShadow();
  }
  /**
   * <pre>
   * An extensible StrokeCap property.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.StrokeCapProp}
   */
  public  static final class StrokeCapProp extends
      com.google.protobuf.GeneratedMessageLite<
          StrokeCapProp, StrokeCapProp.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.StrokeCapProp)
      StrokeCapPropOrBuilder {
    private StrokeCapProp() {
    }
    public static final int VALUE_FIELD_NUMBER = 1;
    private int value_;
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StrokeCap value = 1;</code>
     * @return The enum numeric value on the wire for value.
     */
    @java.lang.Override
    public int getValueValue() {
      return value_;
    }
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StrokeCap value = 1;</code>
     * @return The value.
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.StrokeCap getValue() {
      androidx.wear.protolayout.proto.LayoutElementProto.StrokeCap result = androidx.wear.protolayout.proto.LayoutElementProto.StrokeCap.forNumber(value_);
      return result == null ? androidx.wear.protolayout.proto.LayoutElementProto.StrokeCap.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StrokeCap value = 1;</code>
     * @param value The enum numeric value on the wire for value to set.
     */
    private void setValueValue(int value) {
        value_ = value;
    }
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StrokeCap value = 1;</code>
     * @param value The value to set.
     */
    private void setValue(androidx.wear.protolayout.proto.LayoutElementProto.StrokeCap value) {
      value_ = value.getNumber();

    }
    /**
     * <pre>
     * The value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.StrokeCap value = 1;</code>
     */
    private void clearValue() {

      value_ = 0;
    }

    public static final int SHADOW_FIELD_NUMBER = 2;
    private androidx.wear.protolayout.proto.ModifiersProto.Shadow shadow_;
    /**
     * <pre>
     * The stroke cap's shadow. When set, the stroke cap will be drawn with a
     * shadow, which allows it to be visible on top of other similarly colored
     * elements.
     *
     * Only opaque colors are supported in ArcLine if a shadow is set. Any
     * transparent colors will have their alpha component set to 0xFF (opaque).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Shadow shadow = 2;</code>
     */
    @java.lang.Override
    public boolean hasShadow() {
      return shadow_ != null;
    }
    /**
     * <pre>
     * The stroke cap's shadow. When set, the stroke cap will be drawn with a
     * shadow, which allows it to be visible on top of other similarly colored
     * elements.
     *
     * Only opaque colors are supported in ArcLine if a shadow is set. Any
     * transparent colors will have their alpha component set to 0xFF (opaque).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Shadow shadow = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.ModifiersProto.Shadow getShadow() {
      return shadow_ == null ? androidx.wear.protolayout.proto.ModifiersProto.Shadow.getDefaultInstance() : shadow_;
    }
    /**
     * <pre>
     * The stroke cap's shadow. When set, the stroke cap will be drawn with a
     * shadow, which allows it to be visible on top of other similarly colored
     * elements.
     *
     * Only opaque colors are supported in ArcLine if a shadow is set. Any
     * transparent colors will have their alpha component set to 0xFF (opaque).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Shadow shadow = 2;</code>
     */
    private void setShadow(androidx.wear.protolayout.proto.ModifiersProto.Shadow value) {
      value.getClass();
  shadow_ = value;

      }
    /**
     * <pre>
     * The stroke cap's shadow. When set, the stroke cap will be drawn with a
     * shadow, which allows it to be visible on top of other similarly colored
     * elements.
     *
     * Only opaque colors are supported in ArcLine if a shadow is set. Any
     * transparent colors will have their alpha component set to 0xFF (opaque).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Shadow shadow = 2;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeShadow(androidx.wear.protolayout.proto.ModifiersProto.Shadow value) {
      value.getClass();
  if (shadow_ != null &&
          shadow_ != androidx.wear.protolayout.proto.ModifiersProto.Shadow.getDefaultInstance()) {
        shadow_ =
          androidx.wear.protolayout.proto.ModifiersProto.Shadow.newBuilder(shadow_).mergeFrom(value).buildPartial();
      } else {
        shadow_ = value;
      }

    }
    /**
     * <pre>
     * The stroke cap's shadow. When set, the stroke cap will be drawn with a
     * shadow, which allows it to be visible on top of other similarly colored
     * elements.
     *
     * Only opaque colors are supported in ArcLine if a shadow is set. Any
     * transparent colors will have their alpha component set to 0xFF (opaque).
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.Shadow shadow = 2;</code>
     */
    private void clearShadow() {  shadow_ = null;

    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp 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.proto.LayoutElementProto.StrokeCapProp 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.proto.LayoutElementProto.StrokeCapProp 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.proto.LayoutElementProto.StrokeCapProp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp 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.proto.LayoutElementProto.StrokeCapProp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp 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.proto.LayoutElementProto.StrokeCapProp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp 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.proto.LayoutElementProto.StrokeCapProp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp 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.proto.LayoutElementProto.StrokeCapProp prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * An extensible StrokeCap property.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.StrokeCapProp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.StrokeCapProp)
        androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapPropOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StrokeCap value = 1;</code>
       * @return The enum numeric value on the wire for value.
       */
      @java.lang.Override
      public int getValueValue() {
        return instance.getValueValue();
      }
      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StrokeCap value = 1;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValueValue(int value) {
        copyOnWrite();
        instance.setValueValue(value);
        return this;
      }
      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StrokeCap value = 1;</code>
       * @return The value.
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.StrokeCap getValue() {
        return instance.getValue();
      }
      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StrokeCap value = 1;</code>
       * @param value The enum numeric value on the wire for value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(androidx.wear.protolayout.proto.LayoutElementProto.StrokeCap value) {
        copyOnWrite();
        instance.setValue(value);
        return this;
      }
      /**
       * <pre>
       * The value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.StrokeCap value = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        copyOnWrite();
        instance.clearValue();
        return this;
      }

      /**
       * <pre>
       * The stroke cap's shadow. When set, the stroke cap will be drawn with a
       * shadow, which allows it to be visible on top of other similarly colored
       * elements.
       *
       * Only opaque colors are supported in ArcLine if a shadow is set. Any
       * transparent colors will have their alpha component set to 0xFF (opaque).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Shadow shadow = 2;</code>
       */
      @java.lang.Override
      public boolean hasShadow() {
        return instance.hasShadow();
      }
      /**
       * <pre>
       * The stroke cap's shadow. When set, the stroke cap will be drawn with a
       * shadow, which allows it to be visible on top of other similarly colored
       * elements.
       *
       * Only opaque colors are supported in ArcLine if a shadow is set. Any
       * transparent colors will have their alpha component set to 0xFF (opaque).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Shadow shadow = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.ModifiersProto.Shadow getShadow() {
        return instance.getShadow();
      }
      /**
       * <pre>
       * The stroke cap's shadow. When set, the stroke cap will be drawn with a
       * shadow, which allows it to be visible on top of other similarly colored
       * elements.
       *
       * Only opaque colors are supported in ArcLine if a shadow is set. Any
       * transparent colors will have their alpha component set to 0xFF (opaque).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Shadow shadow = 2;</code>
       */
      public Builder setShadow(androidx.wear.protolayout.proto.ModifiersProto.Shadow value) {
        copyOnWrite();
        instance.setShadow(value);
        return this;
        }
      /**
       * <pre>
       * The stroke cap's shadow. When set, the stroke cap will be drawn with a
       * shadow, which allows it to be visible on top of other similarly colored
       * elements.
       *
       * Only opaque colors are supported in ArcLine if a shadow is set. Any
       * transparent colors will have their alpha component set to 0xFF (opaque).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Shadow shadow = 2;</code>
       */
      public Builder setShadow(
          androidx.wear.protolayout.proto.ModifiersProto.Shadow.Builder builderForValue) {
        copyOnWrite();
        instance.setShadow(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The stroke cap's shadow. When set, the stroke cap will be drawn with a
       * shadow, which allows it to be visible on top of other similarly colored
       * elements.
       *
       * Only opaque colors are supported in ArcLine if a shadow is set. Any
       * transparent colors will have their alpha component set to 0xFF (opaque).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Shadow shadow = 2;</code>
       */
      public Builder mergeShadow(androidx.wear.protolayout.proto.ModifiersProto.Shadow value) {
        copyOnWrite();
        instance.mergeShadow(value);
        return this;
      }
      /**
       * <pre>
       * The stroke cap's shadow. When set, the stroke cap will be drawn with a
       * shadow, which allows it to be visible on top of other similarly colored
       * elements.
       *
       * Only opaque colors are supported in ArcLine if a shadow is set. Any
       * transparent colors will have their alpha component set to 0xFF (opaque).
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.Shadow shadow = 2;</code>
       */
      public Builder clearShadow() {  copyOnWrite();
        instance.clearShadow();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.StrokeCapProp)
    }
    @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.proto.LayoutElementProto.StrokeCapProp();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "value_",
              "shadow_",
            };
            java.lang.String info =
                "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\f\u0002\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.proto.LayoutElementProto.StrokeCapProp> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp>(
                        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.proto.StrokeCapProp)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp DEFAULT_INSTANCE;
    static {
      StrokeCapProp defaultInstance = new StrokeCapProp();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        StrokeCapProp.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.StrokeCapProp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The length of this spacer, in degrees. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
     * @return Whether the length field is set.
     */
    boolean hasLength();
    /**
     * <pre>
     * The length of this spacer, in degrees. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
     * @return The length.
     */
    androidx.wear.protolayout.proto.DimensionProto.DegreesProp getLength();

    /**
     * <pre>
     * The thickness of this spacer, in DP. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
     * @return Whether the thickness field is set.
     */
    boolean hasThickness();
    /**
     * <pre>
     * The thickness of this spacer, in DP. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
     * @return The thickness.
     */
    androidx.wear.protolayout.proto.DimensionProto.DpProp getThickness();

    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
     * @return Whether the modifiers field is set.
     */
    boolean hasModifiers();
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
     * @return The modifiers.
     */
    androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers getModifiers();

    /**
     * <pre>
     * The length of this spacer. If not defined, defaults to 0 degrees.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcSpacerLength angular_length = 4;</code>
     * @return Whether the angularLength field is set.
     */
    boolean hasAngularLength();
    /**
     * <pre>
     * The length of this spacer. If not defined, defaults to 0 degrees.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcSpacerLength angular_length = 4;</code>
     * @return The angularLength.
     */
    androidx.wear.protolayout.proto.DimensionProto.ArcSpacerLength getAngularLength();
  }
  /**
   * <pre>
   * A simple spacer used to provide padding between adjacent elements in an Arc.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.ArcSpacer}
   */
  public  static final class ArcSpacer extends
      com.google.protobuf.GeneratedMessageLite<
          ArcSpacer, ArcSpacer.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.ArcSpacer)
      ArcSpacerOrBuilder {
    private ArcSpacer() {
    }
    public static final int LENGTH_FIELD_NUMBER = 1;
    private androidx.wear.protolayout.proto.DimensionProto.DegreesProp length_;
    /**
     * <pre>
     * The length of this spacer, in degrees. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
     */
    @java.lang.Override
    public boolean hasLength() {
      return length_ != null;
    }
    /**
     * <pre>
     * The length of this spacer, in degrees. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.DegreesProp getLength() {
      return length_ == null ? androidx.wear.protolayout.proto.DimensionProto.DegreesProp.getDefaultInstance() : length_;
    }
    /**
     * <pre>
     * The length of this spacer, in degrees. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
     */
    private void setLength(androidx.wear.protolayout.proto.DimensionProto.DegreesProp value) {
      value.getClass();
  length_ = value;

      }
    /**
     * <pre>
     * The length of this spacer, in degrees. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeLength(androidx.wear.protolayout.proto.DimensionProto.DegreesProp value) {
      value.getClass();
  if (length_ != null &&
          length_ != androidx.wear.protolayout.proto.DimensionProto.DegreesProp.getDefaultInstance()) {
        length_ =
          androidx.wear.protolayout.proto.DimensionProto.DegreesProp.newBuilder(length_).mergeFrom(value).buildPartial();
      } else {
        length_ = value;
      }

    }
    /**
     * <pre>
     * The length of this spacer, in degrees. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
     */
    private void clearLength() {  length_ = null;

    }

    public static final int THICKNESS_FIELD_NUMBER = 2;
    private androidx.wear.protolayout.proto.DimensionProto.DpProp thickness_;
    /**
     * <pre>
     * The thickness of this spacer, in DP. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
     */
    @java.lang.Override
    public boolean hasThickness() {
      return thickness_ != null;
    }
    /**
     * <pre>
     * The thickness of this spacer, in DP. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.DpProp getThickness() {
      return thickness_ == null ? androidx.wear.protolayout.proto.DimensionProto.DpProp.getDefaultInstance() : thickness_;
    }
    /**
     * <pre>
     * The thickness of this spacer, in DP. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
     */
    private void setThickness(androidx.wear.protolayout.proto.DimensionProto.DpProp value) {
      value.getClass();
  thickness_ = value;

      }
    /**
     * <pre>
     * The thickness of this spacer, in DP. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeThickness(androidx.wear.protolayout.proto.DimensionProto.DpProp value) {
      value.getClass();
  if (thickness_ != null &&
          thickness_ != androidx.wear.protolayout.proto.DimensionProto.DpProp.getDefaultInstance()) {
        thickness_ =
          androidx.wear.protolayout.proto.DimensionProto.DpProp.newBuilder(thickness_).mergeFrom(value).buildPartial();
      } else {
        thickness_ = value;
      }

    }
    /**
     * <pre>
     * The thickness of this spacer, in DP. If not defined, defaults to 0.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
     */
    private void clearThickness() {  thickness_ = null;

    }

    public static final int MODIFIERS_FIELD_NUMBER = 3;
    private androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers modifiers_;
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
     */
    @java.lang.Override
    public boolean hasModifiers() {
      return modifiers_ != null;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers getModifiers() {
      return modifiers_ == null ? androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers.getDefaultInstance() : modifiers_;
    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
     */
    private void setModifiers(androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers value) {
      value.getClass();
  modifiers_ = value;

      }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers value) {
      value.getClass();
  if (modifiers_ != null &&
          modifiers_ != androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers.getDefaultInstance()) {
        modifiers_ =
          androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers.newBuilder(modifiers_).mergeFrom(value).buildPartial();
      } else {
        modifiers_ = value;
      }

    }
    /**
     * <pre>
     * Modifiers for this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
     */
    private void clearModifiers() {  modifiers_ = null;

    }

    public static final int ANGULAR_LENGTH_FIELD_NUMBER = 4;
    private androidx.wear.protolayout.proto.DimensionProto.ArcSpacerLength angularLength_;
    /**
     * <pre>
     * The length of this spacer. If not defined, defaults to 0 degrees.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcSpacerLength angular_length = 4;</code>
     */
    @java.lang.Override
    public boolean hasAngularLength() {
      return angularLength_ != null;
    }
    /**
     * <pre>
     * The length of this spacer. If not defined, defaults to 0 degrees.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcSpacerLength angular_length = 4;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.ArcSpacerLength getAngularLength() {
      return angularLength_ == null ? androidx.wear.protolayout.proto.DimensionProto.ArcSpacerLength.getDefaultInstance() : angularLength_;
    }
    /**
     * <pre>
     * The length of this spacer. If not defined, defaults to 0 degrees.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcSpacerLength angular_length = 4;</code>
     */
    private void setAngularLength(androidx.wear.protolayout.proto.DimensionProto.ArcSpacerLength value) {
      value.getClass();
  angularLength_ = value;

      }
    /**
     * <pre>
     * The length of this spacer. If not defined, defaults to 0 degrees.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcSpacerLength angular_length = 4;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeAngularLength(androidx.wear.protolayout.proto.DimensionProto.ArcSpacerLength value) {
      value.getClass();
  if (angularLength_ != null &&
          angularLength_ != androidx.wear.protolayout.proto.DimensionProto.ArcSpacerLength.getDefaultInstance()) {
        angularLength_ =
          androidx.wear.protolayout.proto.DimensionProto.ArcSpacerLength.newBuilder(angularLength_).mergeFrom(value).buildPartial();
      } else {
        angularLength_ = value;
      }

    }
    /**
     * <pre>
     * The length of this spacer. If not defined, defaults to 0 degrees.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcSpacerLength angular_length = 4;</code>
     */
    private void clearAngularLength() {  angularLength_ = null;

    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer 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.proto.LayoutElementProto.ArcSpacer 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.proto.LayoutElementProto.ArcSpacer 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.proto.LayoutElementProto.ArcSpacer parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer 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.proto.LayoutElementProto.ArcSpacer parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer 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.proto.LayoutElementProto.ArcSpacer parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer 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.proto.LayoutElementProto.ArcSpacer parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer 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.proto.LayoutElementProto.ArcSpacer prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * A simple spacer used to provide padding between adjacent elements in an Arc.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.ArcSpacer}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.ArcSpacer)
        androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacerOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The length of this spacer, in degrees. If not defined, defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
       */
      @java.lang.Override
      public boolean hasLength() {
        return instance.hasLength();
      }
      /**
       * <pre>
       * The length of this spacer, in degrees. If not defined, defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.DegreesProp getLength() {
        return instance.getLength();
      }
      /**
       * <pre>
       * The length of this spacer, in degrees. If not defined, defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
       */
      public Builder setLength(androidx.wear.protolayout.proto.DimensionProto.DegreesProp value) {
        copyOnWrite();
        instance.setLength(value);
        return this;
        }
      /**
       * <pre>
       * The length of this spacer, in degrees. If not defined, defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
       */
      public Builder setLength(
          androidx.wear.protolayout.proto.DimensionProto.DegreesProp.Builder builderForValue) {
        copyOnWrite();
        instance.setLength(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The length of this spacer, in degrees. If not defined, defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
       */
      public Builder mergeLength(androidx.wear.protolayout.proto.DimensionProto.DegreesProp value) {
        copyOnWrite();
        instance.mergeLength(value);
        return this;
      }
      /**
       * <pre>
       * The length of this spacer, in degrees. If not defined, defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DegreesProp length = 1;</code>
       */
      public Builder clearLength() {  copyOnWrite();
        instance.clearLength();
        return this;
      }

      /**
       * <pre>
       * The thickness of this spacer, in DP. If not defined, defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
       */
      @java.lang.Override
      public boolean hasThickness() {
        return instance.hasThickness();
      }
      /**
       * <pre>
       * The thickness of this spacer, in DP. If not defined, defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.DpProp getThickness() {
        return instance.getThickness();
      }
      /**
       * <pre>
       * The thickness of this spacer, in DP. If not defined, defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
       */
      public Builder setThickness(androidx.wear.protolayout.proto.DimensionProto.DpProp value) {
        copyOnWrite();
        instance.setThickness(value);
        return this;
        }
      /**
       * <pre>
       * The thickness of this spacer, in DP. If not defined, defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
       */
      public Builder setThickness(
          androidx.wear.protolayout.proto.DimensionProto.DpProp.Builder builderForValue) {
        copyOnWrite();
        instance.setThickness(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The thickness of this spacer, in DP. If not defined, defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
       */
      public Builder mergeThickness(androidx.wear.protolayout.proto.DimensionProto.DpProp value) {
        copyOnWrite();
        instance.mergeThickness(value);
        return this;
      }
      /**
       * <pre>
       * The thickness of this spacer, in DP. If not defined, defaults to 0.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.DpProp thickness = 2;</code>
       */
      public Builder clearThickness() {  copyOnWrite();
        instance.clearThickness();
        return this;
      }

      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
       */
      @java.lang.Override
      public boolean hasModifiers() {
        return instance.hasModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers getModifiers() {
        return instance.getModifiers();
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
       */
      public Builder setModifiers(androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers value) {
        copyOnWrite();
        instance.setModifiers(value);
        return this;
        }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
       */
      public Builder setModifiers(
          androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers.Builder builderForValue) {
        copyOnWrite();
        instance.setModifiers(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
       */
      public Builder mergeModifiers(androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers value) {
        copyOnWrite();
        instance.mergeModifiers(value);
        return this;
      }
      /**
       * <pre>
       * Modifiers for this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcModifiers modifiers = 3;</code>
       */
      public Builder clearModifiers() {  copyOnWrite();
        instance.clearModifiers();
        return this;
      }

      /**
       * <pre>
       * The length of this spacer. If not defined, defaults to 0 degrees.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcSpacerLength angular_length = 4;</code>
       */
      @java.lang.Override
      public boolean hasAngularLength() {
        return instance.hasAngularLength();
      }
      /**
       * <pre>
       * The length of this spacer. If not defined, defaults to 0 degrees.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcSpacerLength angular_length = 4;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.ArcSpacerLength getAngularLength() {
        return instance.getAngularLength();
      }
      /**
       * <pre>
       * The length of this spacer. If not defined, defaults to 0 degrees.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcSpacerLength angular_length = 4;</code>
       */
      public Builder setAngularLength(androidx.wear.protolayout.proto.DimensionProto.ArcSpacerLength value) {
        copyOnWrite();
        instance.setAngularLength(value);
        return this;
        }
      /**
       * <pre>
       * The length of this spacer. If not defined, defaults to 0 degrees.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcSpacerLength angular_length = 4;</code>
       */
      public Builder setAngularLength(
          androidx.wear.protolayout.proto.DimensionProto.ArcSpacerLength.Builder builderForValue) {
        copyOnWrite();
        instance.setAngularLength(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The length of this spacer. If not defined, defaults to 0 degrees.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcSpacerLength angular_length = 4;</code>
       */
      public Builder mergeAngularLength(androidx.wear.protolayout.proto.DimensionProto.ArcSpacerLength value) {
        copyOnWrite();
        instance.mergeAngularLength(value);
        return this;
      }
      /**
       * <pre>
       * The length of this spacer. If not defined, defaults to 0 degrees.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcSpacerLength angular_length = 4;</code>
       */
      public Builder clearAngularLength() {  copyOnWrite();
        instance.clearAngularLength();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.ArcSpacer)
    }
    @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.proto.LayoutElementProto.ArcSpacer();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "length_",
              "thickness_",
              "modifiers_",
              "angularLength_",
            };
            java.lang.String info =
                "\u0000\u0004\u0000\u0000\u0001\u0004\u0004\u0000\u0000\u0000\u0001\t\u0002\t\u0003" +
                "\t\u0004\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.proto.LayoutElementProto.ArcSpacer> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer>(
                        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.proto.ArcSpacer)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer DEFAULT_INSTANCE;
    static {
      ArcSpacer defaultInstance = new ArcSpacer();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        ArcSpacer.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The element to adapt to an Arc.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.LayoutElement content = 1;</code>
     * @return Whether the content field is set.
     */
    boolean hasContent();
    /**
     * <pre>
     * The element to adapt to an Arc.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.LayoutElement content = 1;</code>
     * @return The content.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement getContent();

    /**
     * <pre>
     * Whether this adapter's contents should be rotated, according to its
     * position in the arc or not. As an example, assume that an Image has been
     * added to the arc, and ends up at the 3 o clock position. If rotate_contents
     * = true, the image will be placed at the 3 o clock position, and will be
     * rotated clockwise through 90 degrees. If rotate_contents = false, the image
     * will be placed at the 3 o clock position, but itself will not be rotated.
     * If not defined, defaults to false.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp rotate_contents = 2;</code>
     * @return Whether the rotateContents field is set.
     */
    boolean hasRotateContents();
    /**
     * <pre>
     * Whether this adapter's contents should be rotated, according to its
     * position in the arc or not. As an example, assume that an Image has been
     * added to the arc, and ends up at the 3 o clock position. If rotate_contents
     * = true, the image will be placed at the 3 o clock position, and will be
     * rotated clockwise through 90 degrees. If rotate_contents = false, the image
     * will be placed at the 3 o clock position, but itself will not be rotated.
     * If not defined, defaults to false.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp rotate_contents = 2;</code>
     * @return The rotateContents.
     */
    androidx.wear.protolayout.proto.TypesProto.BoolProp getRotateContents();
  }
  /**
   * <pre>
   * A container that allows a standard LayoutElement to be added to an Arc.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.ArcAdapter}
   */
  public  static final class ArcAdapter extends
      com.google.protobuf.GeneratedMessageLite<
          ArcAdapter, ArcAdapter.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.ArcAdapter)
      ArcAdapterOrBuilder {
    private ArcAdapter() {
    }
    public static final int CONTENT_FIELD_NUMBER = 1;
    private androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement content_;
    /**
     * <pre>
     * The element to adapt to an Arc.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.LayoutElement content = 1;</code>
     */
    @java.lang.Override
    public boolean hasContent() {
      return content_ != null;
    }
    /**
     * <pre>
     * The element to adapt to an Arc.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.LayoutElement content = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement getContent() {
      return content_ == null ? androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.getDefaultInstance() : content_;
    }
    /**
     * <pre>
     * The element to adapt to an Arc.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.LayoutElement content = 1;</code>
     */
    private void setContent(androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
      value.getClass();
  content_ = value;

      }
    /**
     * <pre>
     * The element to adapt to an Arc.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.LayoutElement content = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeContent(androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
      value.getClass();
  if (content_ != null &&
          content_ != androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.getDefaultInstance()) {
        content_ =
          androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.newBuilder(content_).mergeFrom(value).buildPartial();
      } else {
        content_ = value;
      }

    }
    /**
     * <pre>
     * The element to adapt to an Arc.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.LayoutElement content = 1;</code>
     */
    private void clearContent() {  content_ = null;

    }

    public static final int ROTATE_CONTENTS_FIELD_NUMBER = 2;
    private androidx.wear.protolayout.proto.TypesProto.BoolProp rotateContents_;
    /**
     * <pre>
     * Whether this adapter's contents should be rotated, according to its
     * position in the arc or not. As an example, assume that an Image has been
     * added to the arc, and ends up at the 3 o clock position. If rotate_contents
     * = true, the image will be placed at the 3 o clock position, and will be
     * rotated clockwise through 90 degrees. If rotate_contents = false, the image
     * will be placed at the 3 o clock position, but itself will not be rotated.
     * If not defined, defaults to false.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp rotate_contents = 2;</code>
     */
    @java.lang.Override
    public boolean hasRotateContents() {
      return rotateContents_ != null;
    }
    /**
     * <pre>
     * Whether this adapter's contents should be rotated, according to its
     * position in the arc or not. As an example, assume that an Image has been
     * added to the arc, and ends up at the 3 o clock position. If rotate_contents
     * = true, the image will be placed at the 3 o clock position, and will be
     * rotated clockwise through 90 degrees. If rotate_contents = false, the image
     * will be placed at the 3 o clock position, but itself will not be rotated.
     * If not defined, defaults to false.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp rotate_contents = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.TypesProto.BoolProp getRotateContents() {
      return rotateContents_ == null ? androidx.wear.protolayout.proto.TypesProto.BoolProp.getDefaultInstance() : rotateContents_;
    }
    /**
     * <pre>
     * Whether this adapter's contents should be rotated, according to its
     * position in the arc or not. As an example, assume that an Image has been
     * added to the arc, and ends up at the 3 o clock position. If rotate_contents
     * = true, the image will be placed at the 3 o clock position, and will be
     * rotated clockwise through 90 degrees. If rotate_contents = false, the image
     * will be placed at the 3 o clock position, but itself will not be rotated.
     * If not defined, defaults to false.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp rotate_contents = 2;</code>
     */
    private void setRotateContents(androidx.wear.protolayout.proto.TypesProto.BoolProp value) {
      value.getClass();
  rotateContents_ = value;

      }
    /**
     * <pre>
     * Whether this adapter's contents should be rotated, according to its
     * position in the arc or not. As an example, assume that an Image has been
     * added to the arc, and ends up at the 3 o clock position. If rotate_contents
     * = true, the image will be placed at the 3 o clock position, and will be
     * rotated clockwise through 90 degrees. If rotate_contents = false, the image
     * will be placed at the 3 o clock position, but itself will not be rotated.
     * If not defined, defaults to false.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp rotate_contents = 2;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeRotateContents(androidx.wear.protolayout.proto.TypesProto.BoolProp value) {
      value.getClass();
  if (rotateContents_ != null &&
          rotateContents_ != androidx.wear.protolayout.proto.TypesProto.BoolProp.getDefaultInstance()) {
        rotateContents_ =
          androidx.wear.protolayout.proto.TypesProto.BoolProp.newBuilder(rotateContents_).mergeFrom(value).buildPartial();
      } else {
        rotateContents_ = value;
      }

    }
    /**
     * <pre>
     * Whether this adapter's contents should be rotated, according to its
     * position in the arc or not. As an example, assume that an Image has been
     * added to the arc, and ends up at the 3 o clock position. If rotate_contents
     * = true, the image will be placed at the 3 o clock position, and will be
     * rotated clockwise through 90 degrees. If rotate_contents = false, the image
     * will be placed at the 3 o clock position, but itself will not be rotated.
     * If not defined, defaults to false.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.BoolProp rotate_contents = 2;</code>
     */
    private void clearRotateContents() {  rotateContents_ = null;

    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter 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.proto.LayoutElementProto.ArcAdapter 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.proto.LayoutElementProto.ArcAdapter 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.proto.LayoutElementProto.ArcAdapter parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter 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.proto.LayoutElementProto.ArcAdapter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter 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.proto.LayoutElementProto.ArcAdapter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter 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.proto.LayoutElementProto.ArcAdapter parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter 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.proto.LayoutElementProto.ArcAdapter prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * A container that allows a standard LayoutElement to be added to an Arc.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.ArcAdapter}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.ArcAdapter)
        androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapterOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The element to adapt to an Arc.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.LayoutElement content = 1;</code>
       */
      @java.lang.Override
      public boolean hasContent() {
        return instance.hasContent();
      }
      /**
       * <pre>
       * The element to adapt to an Arc.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.LayoutElement content = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement getContent() {
        return instance.getContent();
      }
      /**
       * <pre>
       * The element to adapt to an Arc.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.LayoutElement content = 1;</code>
       */
      public Builder setContent(androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
        copyOnWrite();
        instance.setContent(value);
        return this;
        }
      /**
       * <pre>
       * The element to adapt to an Arc.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.LayoutElement content = 1;</code>
       */
      public Builder setContent(
          androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.Builder builderForValue) {
        copyOnWrite();
        instance.setContent(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The element to adapt to an Arc.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.LayoutElement content = 1;</code>
       */
      public Builder mergeContent(androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
        copyOnWrite();
        instance.mergeContent(value);
        return this;
      }
      /**
       * <pre>
       * The element to adapt to an Arc.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.LayoutElement content = 1;</code>
       */
      public Builder clearContent() {  copyOnWrite();
        instance.clearContent();
        return this;
      }

      /**
       * <pre>
       * Whether this adapter's contents should be rotated, according to its
       * position in the arc or not. As an example, assume that an Image has been
       * added to the arc, and ends up at the 3 o clock position. If rotate_contents
       * = true, the image will be placed at the 3 o clock position, and will be
       * rotated clockwise through 90 degrees. If rotate_contents = false, the image
       * will be placed at the 3 o clock position, but itself will not be rotated.
       * If not defined, defaults to false.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.BoolProp rotate_contents = 2;</code>
       */
      @java.lang.Override
      public boolean hasRotateContents() {
        return instance.hasRotateContents();
      }
      /**
       * <pre>
       * Whether this adapter's contents should be rotated, according to its
       * position in the arc or not. As an example, assume that an Image has been
       * added to the arc, and ends up at the 3 o clock position. If rotate_contents
       * = true, the image will be placed at the 3 o clock position, and will be
       * rotated clockwise through 90 degrees. If rotate_contents = false, the image
       * will be placed at the 3 o clock position, but itself will not be rotated.
       * If not defined, defaults to false.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.BoolProp rotate_contents = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.TypesProto.BoolProp getRotateContents() {
        return instance.getRotateContents();
      }
      /**
       * <pre>
       * Whether this adapter's contents should be rotated, according to its
       * position in the arc or not. As an example, assume that an Image has been
       * added to the arc, and ends up at the 3 o clock position. If rotate_contents
       * = true, the image will be placed at the 3 o clock position, and will be
       * rotated clockwise through 90 degrees. If rotate_contents = false, the image
       * will be placed at the 3 o clock position, but itself will not be rotated.
       * If not defined, defaults to false.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.BoolProp rotate_contents = 2;</code>
       */
      public Builder setRotateContents(androidx.wear.protolayout.proto.TypesProto.BoolProp value) {
        copyOnWrite();
        instance.setRotateContents(value);
        return this;
        }
      /**
       * <pre>
       * Whether this adapter's contents should be rotated, according to its
       * position in the arc or not. As an example, assume that an Image has been
       * added to the arc, and ends up at the 3 o clock position. If rotate_contents
       * = true, the image will be placed at the 3 o clock position, and will be
       * rotated clockwise through 90 degrees. If rotate_contents = false, the image
       * will be placed at the 3 o clock position, but itself will not be rotated.
       * If not defined, defaults to false.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.BoolProp rotate_contents = 2;</code>
       */
      public Builder setRotateContents(
          androidx.wear.protolayout.proto.TypesProto.BoolProp.Builder builderForValue) {
        copyOnWrite();
        instance.setRotateContents(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Whether this adapter's contents should be rotated, according to its
       * position in the arc or not. As an example, assume that an Image has been
       * added to the arc, and ends up at the 3 o clock position. If rotate_contents
       * = true, the image will be placed at the 3 o clock position, and will be
       * rotated clockwise through 90 degrees. If rotate_contents = false, the image
       * will be placed at the 3 o clock position, but itself will not be rotated.
       * If not defined, defaults to false.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.BoolProp rotate_contents = 2;</code>
       */
      public Builder mergeRotateContents(androidx.wear.protolayout.proto.TypesProto.BoolProp value) {
        copyOnWrite();
        instance.mergeRotateContents(value);
        return this;
      }
      /**
       * <pre>
       * Whether this adapter's contents should be rotated, according to its
       * position in the arc or not. As an example, assume that an Image has been
       * added to the arc, and ends up at the 3 o clock position. If rotate_contents
       * = true, the image will be placed at the 3 o clock position, and will be
       * rotated clockwise through 90 degrees. If rotate_contents = false, the image
       * will be placed at the 3 o clock position, but itself will not be rotated.
       * If not defined, defaults to false.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.BoolProp rotate_contents = 2;</code>
       */
      public Builder clearRotateContents() {  copyOnWrite();
        instance.clearRotateContents();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.ArcAdapter)
    }
    @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.proto.LayoutElementProto.ArcAdapter();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "content_",
              "rotateContents_",
            };
            java.lang.String info =
                "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\t\u0002\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.proto.LayoutElementProto.ArcAdapter> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter>(
                        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.proto.ArcAdapter)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter DEFAULT_INSTANCE;
    static {
      ArcAdapter defaultInstance = new ArcAdapter();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        ArcAdapter.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The arc direction value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirection value = 1;</code>
     * @return The enum numeric value on the wire for value.
     */
    int getValueValue();
    /**
     * <pre>
     * The arc direction value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirection value = 1;</code>
     * @return The value.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.ArcDirection getValue();
  }
  /**
   * <pre>
   * An extensible ArcDirection property that can be set to any curved element to
   * control the drawing direction.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.ArcDirectionProp}
   */
  public  static final class ArcDirectionProp extends
      com.google.protobuf.GeneratedMessageLite<
          ArcDirectionProp, ArcDirectionProp.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.ArcDirectionProp)
      ArcDirectionPropOrBuilder {
    private ArcDirectionProp() {
    }
    public static final int VALUE_FIELD_NUMBER = 1;
    private int value_;
    /**
     * <pre>
     * The arc direction value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirection value = 1;</code>
     * @return The enum numeric value on the wire for value.
     */
    @java.lang.Override
    public int getValueValue() {
      return value_;
    }
    /**
     * <pre>
     * The arc direction value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirection value = 1;</code>
     * @return The value.
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.ArcDirection getValue() {
      androidx.wear.protolayout.proto.LayoutElementProto.ArcDirection result = androidx.wear.protolayout.proto.LayoutElementProto.ArcDirection.forNumber(value_);
      return result == null ? androidx.wear.protolayout.proto.LayoutElementProto.ArcDirection.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * The arc direction value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirection value = 1;</code>
     * @param value The enum numeric value on the wire for value to set.
     */
    private void setValueValue(int value) {
        value_ = value;
    }
    /**
     * <pre>
     * The arc direction value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirection value = 1;</code>
     * @param value The value to set.
     */
    private void setValue(androidx.wear.protolayout.proto.LayoutElementProto.ArcDirection value) {
      value_ = value.getNumber();

    }
    /**
     * <pre>
     * The arc direction value.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ArcDirection value = 1;</code>
     */
    private void clearValue() {

      value_ = 0;
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp 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.proto.LayoutElementProto.ArcDirectionProp 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.proto.LayoutElementProto.ArcDirectionProp 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.proto.LayoutElementProto.ArcDirectionProp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp 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.proto.LayoutElementProto.ArcDirectionProp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp 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.proto.LayoutElementProto.ArcDirectionProp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp 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.proto.LayoutElementProto.ArcDirectionProp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp 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.proto.LayoutElementProto.ArcDirectionProp prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * An extensible ArcDirection property that can be set to any curved element to
     * control the drawing direction.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.ArcDirectionProp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.ArcDirectionProp)
        androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionPropOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The arc direction value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirection value = 1;</code>
       * @return The enum numeric value on the wire for value.
       */
      @java.lang.Override
      public int getValueValue() {
        return instance.getValueValue();
      }
      /**
       * <pre>
       * The arc direction value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirection value = 1;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValueValue(int value) {
        copyOnWrite();
        instance.setValueValue(value);
        return this;
      }
      /**
       * <pre>
       * The arc direction value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirection value = 1;</code>
       * @return The value.
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.ArcDirection getValue() {
        return instance.getValue();
      }
      /**
       * <pre>
       * The arc direction value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirection value = 1;</code>
       * @param value The enum numeric value on the wire for value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(androidx.wear.protolayout.proto.LayoutElementProto.ArcDirection value) {
        copyOnWrite();
        instance.setValue(value);
        return this;
      }
      /**
       * <pre>
       * The arc direction value.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ArcDirection value = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        copyOnWrite();
        instance.clearValue();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.ArcDirectionProp)
    }
    @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.proto.LayoutElementProto.ArcDirectionProp();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "value_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\f";
            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.proto.LayoutElementProto.ArcDirectionProp> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp>(
                        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.proto.ArcDirectionProp)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp DEFAULT_INSTANCE;
    static {
      ArcDirectionProp defaultInstance = new ArcDirectionProp();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        ArcDirectionProp.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcDirectionProp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The content of the renderer extension element. This can be any data; it is
     * expected that the renderer extension knows how to parse this field.
     * </pre>
     *
     * <code>bytes payload = 1;</code>
     * @return The payload.
     */
    com.google.protobuf.ByteString getPayload();

    /**
     * <pre>
     * The ID of the renderer extension that should be used for rendering this
     * layout element.
     * </pre>
     *
     * <code>string extension_id = 2;</code>
     * @return The extensionId.
     */
    java.lang.String getExtensionId();
    /**
     * <pre>
     * The ID of the renderer extension that should be used for rendering this
     * layout element.
     * </pre>
     *
     * <code>string extension_id = 2;</code>
     * @return The bytes for extensionId.
     */
    com.google.protobuf.ByteString
        getExtensionIdBytes();

    /**
     * <pre>
     * The width of this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ExtensionDimension width = 3;</code>
     * @return Whether the width field is set.
     */
    boolean hasWidth();
    /**
     * <pre>
     * The width of this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ExtensionDimension width = 3;</code>
     * @return The width.
     */
    androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension getWidth();

    /**
     * <pre>
     * The height of this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ExtensionDimension height = 4;</code>
     * @return Whether the height field is set.
     */
    boolean hasHeight();
    /**
     * <pre>
     * The height of this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ExtensionDimension height = 4;</code>
     * @return The height.
     */
    androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension getHeight();
  }
  /**
   * <pre>
   * A layout element which can be defined by a renderer extension. The
   * payload in this message will be passed verbatim to any registered renderer
   * extension in the renderer. It is then expected that the extension can
   * parse this message, and emit the relevant element.
   *
   * If a renderer extension is not installed, this resource will not render
   * any element, although the specified space will still be occupied. If the
   * payload cannot be parsed by the renderer extension, then still nothing should
   * be rendered, although this behaviour is defined by the renderer extension.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.ExtensionLayoutElement}
   */
  public  static final class ExtensionLayoutElement extends
      com.google.protobuf.GeneratedMessageLite<
          ExtensionLayoutElement, ExtensionLayoutElement.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.ExtensionLayoutElement)
      ExtensionLayoutElementOrBuilder {
    private ExtensionLayoutElement() {
      payload_ = com.google.protobuf.ByteString.EMPTY;
      extensionId_ = "";
    }
    public static final int PAYLOAD_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString payload_;
    /**
     * <pre>
     * The content of the renderer extension element. This can be any data; it is
     * expected that the renderer extension knows how to parse this field.
     * </pre>
     *
     * <code>bytes payload = 1;</code>
     * @return The payload.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getPayload() {
      return payload_;
    }
    /**
     * <pre>
     * The content of the renderer extension element. This can be any data; it is
     * expected that the renderer extension knows how to parse this field.
     * </pre>
     *
     * <code>bytes payload = 1;</code>
     * @param value The payload to set.
     */
    private void setPayload(com.google.protobuf.ByteString value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      payload_ = value;
    }
    /**
     * <pre>
     * The content of the renderer extension element. This can be any data; it is
     * expected that the renderer extension knows how to parse this field.
     * </pre>
     *
     * <code>bytes payload = 1;</code>
     */
    private void clearPayload() {

      payload_ = getDefaultInstance().getPayload();
    }

    public static final int EXTENSION_ID_FIELD_NUMBER = 2;
    private java.lang.String extensionId_;
    /**
     * <pre>
     * The ID of the renderer extension that should be used for rendering this
     * layout element.
     * </pre>
     *
     * <code>string extension_id = 2;</code>
     * @return The extensionId.
     */
    @java.lang.Override
    public java.lang.String getExtensionId() {
      return extensionId_;
    }
    /**
     * <pre>
     * The ID of the renderer extension that should be used for rendering this
     * layout element.
     * </pre>
     *
     * <code>string extension_id = 2;</code>
     * @return The bytes for extensionId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getExtensionIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(extensionId_);
    }
    /**
     * <pre>
     * The ID of the renderer extension that should be used for rendering this
     * layout element.
     * </pre>
     *
     * <code>string extension_id = 2;</code>
     * @param value The extensionId to set.
     */
    private void setExtensionId(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      extensionId_ = value;
    }
    /**
     * <pre>
     * The ID of the renderer extension that should be used for rendering this
     * layout element.
     * </pre>
     *
     * <code>string extension_id = 2;</code>
     */
    private void clearExtensionId() {

      extensionId_ = getDefaultInstance().getExtensionId();
    }
    /**
     * <pre>
     * The ID of the renderer extension that should be used for rendering this
     * layout element.
     * </pre>
     *
     * <code>string extension_id = 2;</code>
     * @param value The bytes for extensionId to set.
     */
    private void setExtensionIdBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      extensionId_ = value.toStringUtf8();

    }

    public static final int WIDTH_FIELD_NUMBER = 3;
    private androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension width_;
    /**
     * <pre>
     * The width of this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ExtensionDimension width = 3;</code>
     */
    @java.lang.Override
    public boolean hasWidth() {
      return width_ != null;
    }
    /**
     * <pre>
     * The width of this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ExtensionDimension width = 3;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension getWidth() {
      return width_ == null ? androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension.getDefaultInstance() : width_;
    }
    /**
     * <pre>
     * The width of this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ExtensionDimension width = 3;</code>
     */
    private void setWidth(androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension value) {
      value.getClass();
  width_ = value;

      }
    /**
     * <pre>
     * The width of this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ExtensionDimension width = 3;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeWidth(androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension value) {
      value.getClass();
  if (width_ != null &&
          width_ != androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension.getDefaultInstance()) {
        width_ =
          androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension.newBuilder(width_).mergeFrom(value).buildPartial();
      } else {
        width_ = value;
      }

    }
    /**
     * <pre>
     * The width of this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ExtensionDimension width = 3;</code>
     */
    private void clearWidth() {  width_ = null;

    }

    public static final int HEIGHT_FIELD_NUMBER = 4;
    private androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension height_;
    /**
     * <pre>
     * The height of this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ExtensionDimension height = 4;</code>
     */
    @java.lang.Override
    public boolean hasHeight() {
      return height_ != null;
    }
    /**
     * <pre>
     * The height of this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ExtensionDimension height = 4;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension getHeight() {
      return height_ == null ? androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension.getDefaultInstance() : height_;
    }
    /**
     * <pre>
     * The height of this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ExtensionDimension height = 4;</code>
     */
    private void setHeight(androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension value) {
      value.getClass();
  height_ = value;

      }
    /**
     * <pre>
     * The height of this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ExtensionDimension height = 4;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeHeight(androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension value) {
      value.getClass();
  if (height_ != null &&
          height_ != androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension.getDefaultInstance()) {
        height_ =
          androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension.newBuilder(height_).mergeFrom(value).buildPartial();
      } else {
        height_ = value;
      }

    }
    /**
     * <pre>
     * The height of this element.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.ExtensionDimension height = 4;</code>
     */
    private void clearHeight() {  height_ = null;

    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement 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.proto.LayoutElementProto.ExtensionLayoutElement 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.proto.LayoutElementProto.ExtensionLayoutElement 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.proto.LayoutElementProto.ExtensionLayoutElement parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement 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.proto.LayoutElementProto.ExtensionLayoutElement parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement 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.proto.LayoutElementProto.ExtensionLayoutElement parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement 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.proto.LayoutElementProto.ExtensionLayoutElement parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement 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.proto.LayoutElementProto.ExtensionLayoutElement prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * A layout element which can be defined by a renderer extension. The
     * payload in this message will be passed verbatim to any registered renderer
     * extension in the renderer. It is then expected that the extension can
     * parse this message, and emit the relevant element.
     *
     * If a renderer extension is not installed, this resource will not render
     * any element, although the specified space will still be occupied. If the
     * payload cannot be parsed by the renderer extension, then still nothing should
     * be rendered, although this behaviour is defined by the renderer extension.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.ExtensionLayoutElement}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.ExtensionLayoutElement)
        androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElementOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The content of the renderer extension element. This can be any data; it is
       * expected that the renderer extension knows how to parse this field.
       * </pre>
       *
       * <code>bytes payload = 1;</code>
       * @return The payload.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getPayload() {
        return instance.getPayload();
      }
      /**
       * <pre>
       * The content of the renderer extension element. This can be any data; it is
       * expected that the renderer extension knows how to parse this field.
       * </pre>
       *
       * <code>bytes payload = 1;</code>
       * @param value The payload to set.
       * @return This builder for chaining.
       */
      public Builder setPayload(com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setPayload(value);
        return this;
      }
      /**
       * <pre>
       * The content of the renderer extension element. This can be any data; it is
       * expected that the renderer extension knows how to parse this field.
       * </pre>
       *
       * <code>bytes payload = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPayload() {
        copyOnWrite();
        instance.clearPayload();
        return this;
      }

      /**
       * <pre>
       * The ID of the renderer extension that should be used for rendering this
       * layout element.
       * </pre>
       *
       * <code>string extension_id = 2;</code>
       * @return The extensionId.
       */
      @java.lang.Override
      public java.lang.String getExtensionId() {
        return instance.getExtensionId();
      }
      /**
       * <pre>
       * The ID of the renderer extension that should be used for rendering this
       * layout element.
       * </pre>
       *
       * <code>string extension_id = 2;</code>
       * @return The bytes for extensionId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getExtensionIdBytes() {
        return instance.getExtensionIdBytes();
      }
      /**
       * <pre>
       * The ID of the renderer extension that should be used for rendering this
       * layout element.
       * </pre>
       *
       * <code>string extension_id = 2;</code>
       * @param value The extensionId to set.
       * @return This builder for chaining.
       */
      public Builder setExtensionId(
          java.lang.String value) {
        copyOnWrite();
        instance.setExtensionId(value);
        return this;
      }
      /**
       * <pre>
       * The ID of the renderer extension that should be used for rendering this
       * layout element.
       * </pre>
       *
       * <code>string extension_id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearExtensionId() {
        copyOnWrite();
        instance.clearExtensionId();
        return this;
      }
      /**
       * <pre>
       * The ID of the renderer extension that should be used for rendering this
       * layout element.
       * </pre>
       *
       * <code>string extension_id = 2;</code>
       * @param value The bytes for extensionId to set.
       * @return This builder for chaining.
       */
      public Builder setExtensionIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setExtensionIdBytes(value);
        return this;
      }

      /**
       * <pre>
       * The width of this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ExtensionDimension width = 3;</code>
       */
      @java.lang.Override
      public boolean hasWidth() {
        return instance.hasWidth();
      }
      /**
       * <pre>
       * The width of this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ExtensionDimension width = 3;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension getWidth() {
        return instance.getWidth();
      }
      /**
       * <pre>
       * The width of this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ExtensionDimension width = 3;</code>
       */
      public Builder setWidth(androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension value) {
        copyOnWrite();
        instance.setWidth(value);
        return this;
        }
      /**
       * <pre>
       * The width of this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ExtensionDimension width = 3;</code>
       */
      public Builder setWidth(
          androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension.Builder builderForValue) {
        copyOnWrite();
        instance.setWidth(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The width of this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ExtensionDimension width = 3;</code>
       */
      public Builder mergeWidth(androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension value) {
        copyOnWrite();
        instance.mergeWidth(value);
        return this;
      }
      /**
       * <pre>
       * The width of this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ExtensionDimension width = 3;</code>
       */
      public Builder clearWidth() {  copyOnWrite();
        instance.clearWidth();
        return this;
      }

      /**
       * <pre>
       * The height of this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ExtensionDimension height = 4;</code>
       */
      @java.lang.Override
      public boolean hasHeight() {
        return instance.hasHeight();
      }
      /**
       * <pre>
       * The height of this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ExtensionDimension height = 4;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension getHeight() {
        return instance.getHeight();
      }
      /**
       * <pre>
       * The height of this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ExtensionDimension height = 4;</code>
       */
      public Builder setHeight(androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension value) {
        copyOnWrite();
        instance.setHeight(value);
        return this;
        }
      /**
       * <pre>
       * The height of this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ExtensionDimension height = 4;</code>
       */
      public Builder setHeight(
          androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension.Builder builderForValue) {
        copyOnWrite();
        instance.setHeight(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The height of this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ExtensionDimension height = 4;</code>
       */
      public Builder mergeHeight(androidx.wear.protolayout.proto.DimensionProto.ExtensionDimension value) {
        copyOnWrite();
        instance.mergeHeight(value);
        return this;
      }
      /**
       * <pre>
       * The height of this element.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.ExtensionDimension height = 4;</code>
       */
      public Builder clearHeight() {  copyOnWrite();
        instance.clearHeight();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.ExtensionLayoutElement)
    }
    @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.proto.LayoutElementProto.ExtensionLayoutElement();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "payload_",
              "extensionId_",
              "width_",
              "height_",
            };
            java.lang.String info =
                "\u0000\u0004\u0000\u0000\u0001\u0004\u0004\u0000\u0000\u0000\u0001\n\u0002\u0208" +
                "\u0003\t\u0004\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.proto.LayoutElementProto.ExtensionLayoutElement> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement>(
                        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.proto.ExtensionLayoutElement)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement DEFAULT_INSTANCE;
    static {
      ExtensionLayoutElement defaultInstance = new ExtensionLayoutElement();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        ExtensionLayoutElement.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <code>.androidx.wear.protolayout.proto.Column column = 1;</code>
     * @return Whether the column field is set.
     */
    boolean hasColumn();
    /**
     * <code>.androidx.wear.protolayout.proto.Column column = 1;</code>
     * @return The column.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.Column getColumn();

    /**
     * <code>.androidx.wear.protolayout.proto.Row row = 2;</code>
     * @return Whether the row field is set.
     */
    boolean hasRow();
    /**
     * <code>.androidx.wear.protolayout.proto.Row row = 2;</code>
     * @return The row.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.Row getRow();

    /**
     * <code>.androidx.wear.protolayout.proto.Box box = 3;</code>
     * @return Whether the box field is set.
     */
    boolean hasBox();
    /**
     * <code>.androidx.wear.protolayout.proto.Box box = 3;</code>
     * @return The box.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.Box getBox();

    /**
     * <code>.androidx.wear.protolayout.proto.Spacer spacer = 4;</code>
     * @return Whether the spacer field is set.
     */
    boolean hasSpacer();
    /**
     * <code>.androidx.wear.protolayout.proto.Spacer spacer = 4;</code>
     * @return The spacer.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.Spacer getSpacer();

    /**
     * <code>.androidx.wear.protolayout.proto.Text text = 5;</code>
     * @return Whether the text field is set.
     */
    boolean hasText();
    /**
     * <code>.androidx.wear.protolayout.proto.Text text = 5;</code>
     * @return The text.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.Text getText();

    /**
     * <code>.androidx.wear.protolayout.proto.Image image = 6;</code>
     * @return Whether the image field is set.
     */
    boolean hasImage();
    /**
     * <code>.androidx.wear.protolayout.proto.Image image = 6;</code>
     * @return The image.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.Image getImage();

    /**
     * <code>.androidx.wear.protolayout.proto.Arc arc = 7;</code>
     * @return Whether the arc field is set.
     */
    boolean hasArc();
    /**
     * <code>.androidx.wear.protolayout.proto.Arc arc = 7;</code>
     * @return The arc.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.Arc getArc();

    /**
     * <code>.androidx.wear.protolayout.proto.Spannable spannable = 8;</code>
     * @return Whether the spannable field is set.
     */
    boolean hasSpannable();
    /**
     * <code>.androidx.wear.protolayout.proto.Spannable spannable = 8;</code>
     * @return The spannable.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.Spannable getSpannable();

    /**
     * <code>.androidx.wear.protolayout.proto.ExtensionLayoutElement extension = 1000;</code>
     * @return Whether the extension field is set.
     */
    boolean hasExtension();
    /**
     * <code>.androidx.wear.protolayout.proto.ExtensionLayoutElement extension = 1000;</code>
     * @return The extension.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement getExtension();

    public androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.InnerCase getInnerCase();
  }
  /**
   * <pre>
   * The root of all layout elements. This exists to act as a holder for all of
   * the actual layout elements above.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.LayoutElement}
   */
  public  static final class LayoutElement extends
      com.google.protobuf.GeneratedMessageLite<
          LayoutElement, LayoutElement.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.LayoutElement)
      LayoutElementOrBuilder {
    private LayoutElement() {
    }
    private int innerCase_ = 0;
    private java.lang.Object inner_;
    public enum InnerCase {
      COLUMN(1),
      ROW(2),
      BOX(3),
      SPACER(4),
      TEXT(5),
      IMAGE(6),
      ARC(7),
      SPANNABLE(8),
      EXTENSION(1000),
      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 COLUMN;
          case 2: return ROW;
          case 3: return BOX;
          case 4: return SPACER;
          case 5: return TEXT;
          case 6: return IMAGE;
          case 7: return ARC;
          case 8: return SPANNABLE;
          case 1000: return EXTENSION;
          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 COLUMN_FIELD_NUMBER = 1;
    /**
     * <code>.androidx.wear.protolayout.proto.Column column = 1;</code>
     */
    @java.lang.Override
    public boolean hasColumn() {
      return innerCase_ == 1;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Column column = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.Column getColumn() {
      if (innerCase_ == 1) {
         return (androidx.wear.protolayout.proto.LayoutElementProto.Column) inner_;
      }
      return androidx.wear.protolayout.proto.LayoutElementProto.Column.getDefaultInstance();
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Column column = 1;</code>
     */
    private void setColumn(androidx.wear.protolayout.proto.LayoutElementProto.Column value) {
      value.getClass();
  inner_ = value;
      innerCase_ = 1;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Column column = 1;</code>
     */
    private void mergeColumn(androidx.wear.protolayout.proto.LayoutElementProto.Column value) {
      value.getClass();
  if (innerCase_ == 1 &&
          inner_ != androidx.wear.protolayout.proto.LayoutElementProto.Column.getDefaultInstance()) {
        inner_ = androidx.wear.protolayout.proto.LayoutElementProto.Column.newBuilder((androidx.wear.protolayout.proto.LayoutElementProto.Column) inner_)
            .mergeFrom(value).buildPartial();
      } else {
        inner_ = value;
      }
      innerCase_ = 1;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Column column = 1;</code>
     */
    private void clearColumn() {
      if (innerCase_ == 1) {
        innerCase_ = 0;
        inner_ = null;
      }
    }

    public static final int ROW_FIELD_NUMBER = 2;
    /**
     * <code>.androidx.wear.protolayout.proto.Row row = 2;</code>
     */
    @java.lang.Override
    public boolean hasRow() {
      return innerCase_ == 2;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Row row = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.Row getRow() {
      if (innerCase_ == 2) {
         return (androidx.wear.protolayout.proto.LayoutElementProto.Row) inner_;
      }
      return androidx.wear.protolayout.proto.LayoutElementProto.Row.getDefaultInstance();
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Row row = 2;</code>
     */
    private void setRow(androidx.wear.protolayout.proto.LayoutElementProto.Row value) {
      value.getClass();
  inner_ = value;
      innerCase_ = 2;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Row row = 2;</code>
     */
    private void mergeRow(androidx.wear.protolayout.proto.LayoutElementProto.Row value) {
      value.getClass();
  if (innerCase_ == 2 &&
          inner_ != androidx.wear.protolayout.proto.LayoutElementProto.Row.getDefaultInstance()) {
        inner_ = androidx.wear.protolayout.proto.LayoutElementProto.Row.newBuilder((androidx.wear.protolayout.proto.LayoutElementProto.Row) inner_)
            .mergeFrom(value).buildPartial();
      } else {
        inner_ = value;
      }
      innerCase_ = 2;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Row row = 2;</code>
     */
    private void clearRow() {
      if (innerCase_ == 2) {
        innerCase_ = 0;
        inner_ = null;
      }
    }

    public static final int BOX_FIELD_NUMBER = 3;
    /**
     * <code>.androidx.wear.protolayout.proto.Box box = 3;</code>
     */
    @java.lang.Override
    public boolean hasBox() {
      return innerCase_ == 3;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Box box = 3;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.Box getBox() {
      if (innerCase_ == 3) {
         return (androidx.wear.protolayout.proto.LayoutElementProto.Box) inner_;
      }
      return androidx.wear.protolayout.proto.LayoutElementProto.Box.getDefaultInstance();
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Box box = 3;</code>
     */
    private void setBox(androidx.wear.protolayout.proto.LayoutElementProto.Box value) {
      value.getClass();
  inner_ = value;
      innerCase_ = 3;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Box box = 3;</code>
     */
    private void mergeBox(androidx.wear.protolayout.proto.LayoutElementProto.Box value) {
      value.getClass();
  if (innerCase_ == 3 &&
          inner_ != androidx.wear.protolayout.proto.LayoutElementProto.Box.getDefaultInstance()) {
        inner_ = androidx.wear.protolayout.proto.LayoutElementProto.Box.newBuilder((androidx.wear.protolayout.proto.LayoutElementProto.Box) inner_)
            .mergeFrom(value).buildPartial();
      } else {
        inner_ = value;
      }
      innerCase_ = 3;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Box box = 3;</code>
     */
    private void clearBox() {
      if (innerCase_ == 3) {
        innerCase_ = 0;
        inner_ = null;
      }
    }

    public static final int SPACER_FIELD_NUMBER = 4;
    /**
     * <code>.androidx.wear.protolayout.proto.Spacer spacer = 4;</code>
     */
    @java.lang.Override
    public boolean hasSpacer() {
      return innerCase_ == 4;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Spacer spacer = 4;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.Spacer getSpacer() {
      if (innerCase_ == 4) {
         return (androidx.wear.protolayout.proto.LayoutElementProto.Spacer) inner_;
      }
      return androidx.wear.protolayout.proto.LayoutElementProto.Spacer.getDefaultInstance();
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Spacer spacer = 4;</code>
     */
    private void setSpacer(androidx.wear.protolayout.proto.LayoutElementProto.Spacer value) {
      value.getClass();
  inner_ = value;
      innerCase_ = 4;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Spacer spacer = 4;</code>
     */
    private void mergeSpacer(androidx.wear.protolayout.proto.LayoutElementProto.Spacer value) {
      value.getClass();
  if (innerCase_ == 4 &&
          inner_ != androidx.wear.protolayout.proto.LayoutElementProto.Spacer.getDefaultInstance()) {
        inner_ = androidx.wear.protolayout.proto.LayoutElementProto.Spacer.newBuilder((androidx.wear.protolayout.proto.LayoutElementProto.Spacer) inner_)
            .mergeFrom(value).buildPartial();
      } else {
        inner_ = value;
      }
      innerCase_ = 4;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Spacer spacer = 4;</code>
     */
    private void clearSpacer() {
      if (innerCase_ == 4) {
        innerCase_ = 0;
        inner_ = null;
      }
    }

    public static final int TEXT_FIELD_NUMBER = 5;
    /**
     * <code>.androidx.wear.protolayout.proto.Text text = 5;</code>
     */
    @java.lang.Override
    public boolean hasText() {
      return innerCase_ == 5;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Text text = 5;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.Text getText() {
      if (innerCase_ == 5) {
         return (androidx.wear.protolayout.proto.LayoutElementProto.Text) inner_;
      }
      return androidx.wear.protolayout.proto.LayoutElementProto.Text.getDefaultInstance();
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Text text = 5;</code>
     */
    private void setText(androidx.wear.protolayout.proto.LayoutElementProto.Text value) {
      value.getClass();
  inner_ = value;
      innerCase_ = 5;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Text text = 5;</code>
     */
    private void mergeText(androidx.wear.protolayout.proto.LayoutElementProto.Text value) {
      value.getClass();
  if (innerCase_ == 5 &&
          inner_ != androidx.wear.protolayout.proto.LayoutElementProto.Text.getDefaultInstance()) {
        inner_ = androidx.wear.protolayout.proto.LayoutElementProto.Text.newBuilder((androidx.wear.protolayout.proto.LayoutElementProto.Text) inner_)
            .mergeFrom(value).buildPartial();
      } else {
        inner_ = value;
      }
      innerCase_ = 5;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Text text = 5;</code>
     */
    private void clearText() {
      if (innerCase_ == 5) {
        innerCase_ = 0;
        inner_ = null;
      }
    }

    public static final int IMAGE_FIELD_NUMBER = 6;
    /**
     * <code>.androidx.wear.protolayout.proto.Image image = 6;</code>
     */
    @java.lang.Override
    public boolean hasImage() {
      return innerCase_ == 6;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Image image = 6;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.Image getImage() {
      if (innerCase_ == 6) {
         return (androidx.wear.protolayout.proto.LayoutElementProto.Image) inner_;
      }
      return androidx.wear.protolayout.proto.LayoutElementProto.Image.getDefaultInstance();
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Image image = 6;</code>
     */
    private void setImage(androidx.wear.protolayout.proto.LayoutElementProto.Image value) {
      value.getClass();
  inner_ = value;
      innerCase_ = 6;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Image image = 6;</code>
     */
    private void mergeImage(androidx.wear.protolayout.proto.LayoutElementProto.Image value) {
      value.getClass();
  if (innerCase_ == 6 &&
          inner_ != androidx.wear.protolayout.proto.LayoutElementProto.Image.getDefaultInstance()) {
        inner_ = androidx.wear.protolayout.proto.LayoutElementProto.Image.newBuilder((androidx.wear.protolayout.proto.LayoutElementProto.Image) inner_)
            .mergeFrom(value).buildPartial();
      } else {
        inner_ = value;
      }
      innerCase_ = 6;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Image image = 6;</code>
     */
    private void clearImage() {
      if (innerCase_ == 6) {
        innerCase_ = 0;
        inner_ = null;
      }
    }

    public static final int ARC_FIELD_NUMBER = 7;
    /**
     * <code>.androidx.wear.protolayout.proto.Arc arc = 7;</code>
     */
    @java.lang.Override
    public boolean hasArc() {
      return innerCase_ == 7;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Arc arc = 7;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.Arc getArc() {
      if (innerCase_ == 7) {
         return (androidx.wear.protolayout.proto.LayoutElementProto.Arc) inner_;
      }
      return androidx.wear.protolayout.proto.LayoutElementProto.Arc.getDefaultInstance();
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Arc arc = 7;</code>
     */
    private void setArc(androidx.wear.protolayout.proto.LayoutElementProto.Arc value) {
      value.getClass();
  inner_ = value;
      innerCase_ = 7;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Arc arc = 7;</code>
     */
    private void mergeArc(androidx.wear.protolayout.proto.LayoutElementProto.Arc value) {
      value.getClass();
  if (innerCase_ == 7 &&
          inner_ != androidx.wear.protolayout.proto.LayoutElementProto.Arc.getDefaultInstance()) {
        inner_ = androidx.wear.protolayout.proto.LayoutElementProto.Arc.newBuilder((androidx.wear.protolayout.proto.LayoutElementProto.Arc) inner_)
            .mergeFrom(value).buildPartial();
      } else {
        inner_ = value;
      }
      innerCase_ = 7;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Arc arc = 7;</code>
     */
    private void clearArc() {
      if (innerCase_ == 7) {
        innerCase_ = 0;
        inner_ = null;
      }
    }

    public static final int SPANNABLE_FIELD_NUMBER = 8;
    /**
     * <code>.androidx.wear.protolayout.proto.Spannable spannable = 8;</code>
     */
    @java.lang.Override
    public boolean hasSpannable() {
      return innerCase_ == 8;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Spannable spannable = 8;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.Spannable getSpannable() {
      if (innerCase_ == 8) {
         return (androidx.wear.protolayout.proto.LayoutElementProto.Spannable) inner_;
      }
      return androidx.wear.protolayout.proto.LayoutElementProto.Spannable.getDefaultInstance();
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Spannable spannable = 8;</code>
     */
    private void setSpannable(androidx.wear.protolayout.proto.LayoutElementProto.Spannable value) {
      value.getClass();
  inner_ = value;
      innerCase_ = 8;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Spannable spannable = 8;</code>
     */
    private void mergeSpannable(androidx.wear.protolayout.proto.LayoutElementProto.Spannable value) {
      value.getClass();
  if (innerCase_ == 8 &&
          inner_ != androidx.wear.protolayout.proto.LayoutElementProto.Spannable.getDefaultInstance()) {
        inner_ = androidx.wear.protolayout.proto.LayoutElementProto.Spannable.newBuilder((androidx.wear.protolayout.proto.LayoutElementProto.Spannable) inner_)
            .mergeFrom(value).buildPartial();
      } else {
        inner_ = value;
      }
      innerCase_ = 8;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.Spannable spannable = 8;</code>
     */
    private void clearSpannable() {
      if (innerCase_ == 8) {
        innerCase_ = 0;
        inner_ = null;
      }
    }

    public static final int EXTENSION_FIELD_NUMBER = 1000;
    /**
     * <code>.androidx.wear.protolayout.proto.ExtensionLayoutElement extension = 1000;</code>
     */
    @java.lang.Override
    public boolean hasExtension() {
      return innerCase_ == 1000;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.ExtensionLayoutElement extension = 1000;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement getExtension() {
      if (innerCase_ == 1000) {
         return (androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement) inner_;
      }
      return androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement.getDefaultInstance();
    }
    /**
     * <code>.androidx.wear.protolayout.proto.ExtensionLayoutElement extension = 1000;</code>
     */
    private void setExtension(androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement value) {
      value.getClass();
  inner_ = value;
      innerCase_ = 1000;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.ExtensionLayoutElement extension = 1000;</code>
     */
    private void mergeExtension(androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement value) {
      value.getClass();
  if (innerCase_ == 1000 &&
          inner_ != androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement.getDefaultInstance()) {
        inner_ = androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement.newBuilder((androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement) inner_)
            .mergeFrom(value).buildPartial();
      } else {
        inner_ = value;
      }
      innerCase_ = 1000;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.ExtensionLayoutElement extension = 1000;</code>
     */
    private void clearExtension() {
      if (innerCase_ == 1000) {
        innerCase_ = 0;
        inner_ = null;
      }
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement 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.proto.LayoutElementProto.LayoutElement 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.proto.LayoutElementProto.LayoutElement 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.proto.LayoutElementProto.LayoutElement parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement 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.proto.LayoutElementProto.LayoutElement parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement 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.proto.LayoutElementProto.LayoutElement parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement 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.proto.LayoutElementProto.LayoutElement parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement 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.proto.LayoutElementProto.LayoutElement prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * The root of all layout elements. This exists to act as a holder for all of
     * the actual layout elements above.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.LayoutElement}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.LayoutElement)
        androidx.wear.protolayout.proto.LayoutElementProto.LayoutElementOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

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

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


      /**
       * <code>.androidx.wear.protolayout.proto.Column column = 1;</code>
       */
      @java.lang.Override
      public boolean hasColumn() {
        return instance.hasColumn();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Column column = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.Column getColumn() {
        return instance.getColumn();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Column column = 1;</code>
       */
      public Builder setColumn(androidx.wear.protolayout.proto.LayoutElementProto.Column value) {
        copyOnWrite();
        instance.setColumn(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Column column = 1;</code>
       */
      public Builder setColumn(
          androidx.wear.protolayout.proto.LayoutElementProto.Column.Builder builderForValue) {
        copyOnWrite();
        instance.setColumn(builderForValue.build());
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Column column = 1;</code>
       */
      public Builder mergeColumn(androidx.wear.protolayout.proto.LayoutElementProto.Column value) {
        copyOnWrite();
        instance.mergeColumn(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Column column = 1;</code>
       */
      public Builder clearColumn() {
        copyOnWrite();
        instance.clearColumn();
        return this;
      }

      /**
       * <code>.androidx.wear.protolayout.proto.Row row = 2;</code>
       */
      @java.lang.Override
      public boolean hasRow() {
        return instance.hasRow();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Row row = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.Row getRow() {
        return instance.getRow();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Row row = 2;</code>
       */
      public Builder setRow(androidx.wear.protolayout.proto.LayoutElementProto.Row value) {
        copyOnWrite();
        instance.setRow(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Row row = 2;</code>
       */
      public Builder setRow(
          androidx.wear.protolayout.proto.LayoutElementProto.Row.Builder builderForValue) {
        copyOnWrite();
        instance.setRow(builderForValue.build());
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Row row = 2;</code>
       */
      public Builder mergeRow(androidx.wear.protolayout.proto.LayoutElementProto.Row value) {
        copyOnWrite();
        instance.mergeRow(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Row row = 2;</code>
       */
      public Builder clearRow() {
        copyOnWrite();
        instance.clearRow();
        return this;
      }

      /**
       * <code>.androidx.wear.protolayout.proto.Box box = 3;</code>
       */
      @java.lang.Override
      public boolean hasBox() {
        return instance.hasBox();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Box box = 3;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.Box getBox() {
        return instance.getBox();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Box box = 3;</code>
       */
      public Builder setBox(androidx.wear.protolayout.proto.LayoutElementProto.Box value) {
        copyOnWrite();
        instance.setBox(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Box box = 3;</code>
       */
      public Builder setBox(
          androidx.wear.protolayout.proto.LayoutElementProto.Box.Builder builderForValue) {
        copyOnWrite();
        instance.setBox(builderForValue.build());
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Box box = 3;</code>
       */
      public Builder mergeBox(androidx.wear.protolayout.proto.LayoutElementProto.Box value) {
        copyOnWrite();
        instance.mergeBox(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Box box = 3;</code>
       */
      public Builder clearBox() {
        copyOnWrite();
        instance.clearBox();
        return this;
      }

      /**
       * <code>.androidx.wear.protolayout.proto.Spacer spacer = 4;</code>
       */
      @java.lang.Override
      public boolean hasSpacer() {
        return instance.hasSpacer();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Spacer spacer = 4;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.Spacer getSpacer() {
        return instance.getSpacer();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Spacer spacer = 4;</code>
       */
      public Builder setSpacer(androidx.wear.protolayout.proto.LayoutElementProto.Spacer value) {
        copyOnWrite();
        instance.setSpacer(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Spacer spacer = 4;</code>
       */
      public Builder setSpacer(
          androidx.wear.protolayout.proto.LayoutElementProto.Spacer.Builder builderForValue) {
        copyOnWrite();
        instance.setSpacer(builderForValue.build());
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Spacer spacer = 4;</code>
       */
      public Builder mergeSpacer(androidx.wear.protolayout.proto.LayoutElementProto.Spacer value) {
        copyOnWrite();
        instance.mergeSpacer(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Spacer spacer = 4;</code>
       */
      public Builder clearSpacer() {
        copyOnWrite();
        instance.clearSpacer();
        return this;
      }

      /**
       * <code>.androidx.wear.protolayout.proto.Text text = 5;</code>
       */
      @java.lang.Override
      public boolean hasText() {
        return instance.hasText();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Text text = 5;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.Text getText() {
        return instance.getText();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Text text = 5;</code>
       */
      public Builder setText(androidx.wear.protolayout.proto.LayoutElementProto.Text value) {
        copyOnWrite();
        instance.setText(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Text text = 5;</code>
       */
      public Builder setText(
          androidx.wear.protolayout.proto.LayoutElementProto.Text.Builder builderForValue) {
        copyOnWrite();
        instance.setText(builderForValue.build());
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Text text = 5;</code>
       */
      public Builder mergeText(androidx.wear.protolayout.proto.LayoutElementProto.Text value) {
        copyOnWrite();
        instance.mergeText(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Text text = 5;</code>
       */
      public Builder clearText() {
        copyOnWrite();
        instance.clearText();
        return this;
      }

      /**
       * <code>.androidx.wear.protolayout.proto.Image image = 6;</code>
       */
      @java.lang.Override
      public boolean hasImage() {
        return instance.hasImage();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Image image = 6;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.Image getImage() {
        return instance.getImage();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Image image = 6;</code>
       */
      public Builder setImage(androidx.wear.protolayout.proto.LayoutElementProto.Image value) {
        copyOnWrite();
        instance.setImage(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Image image = 6;</code>
       */
      public Builder setImage(
          androidx.wear.protolayout.proto.LayoutElementProto.Image.Builder builderForValue) {
        copyOnWrite();
        instance.setImage(builderForValue.build());
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Image image = 6;</code>
       */
      public Builder mergeImage(androidx.wear.protolayout.proto.LayoutElementProto.Image value) {
        copyOnWrite();
        instance.mergeImage(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Image image = 6;</code>
       */
      public Builder clearImage() {
        copyOnWrite();
        instance.clearImage();
        return this;
      }

      /**
       * <code>.androidx.wear.protolayout.proto.Arc arc = 7;</code>
       */
      @java.lang.Override
      public boolean hasArc() {
        return instance.hasArc();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Arc arc = 7;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.Arc getArc() {
        return instance.getArc();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Arc arc = 7;</code>
       */
      public Builder setArc(androidx.wear.protolayout.proto.LayoutElementProto.Arc value) {
        copyOnWrite();
        instance.setArc(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Arc arc = 7;</code>
       */
      public Builder setArc(
          androidx.wear.protolayout.proto.LayoutElementProto.Arc.Builder builderForValue) {
        copyOnWrite();
        instance.setArc(builderForValue.build());
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Arc arc = 7;</code>
       */
      public Builder mergeArc(androidx.wear.protolayout.proto.LayoutElementProto.Arc value) {
        copyOnWrite();
        instance.mergeArc(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Arc arc = 7;</code>
       */
      public Builder clearArc() {
        copyOnWrite();
        instance.clearArc();
        return this;
      }

      /**
       * <code>.androidx.wear.protolayout.proto.Spannable spannable = 8;</code>
       */
      @java.lang.Override
      public boolean hasSpannable() {
        return instance.hasSpannable();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Spannable spannable = 8;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.Spannable getSpannable() {
        return instance.getSpannable();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Spannable spannable = 8;</code>
       */
      public Builder setSpannable(androidx.wear.protolayout.proto.LayoutElementProto.Spannable value) {
        copyOnWrite();
        instance.setSpannable(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Spannable spannable = 8;</code>
       */
      public Builder setSpannable(
          androidx.wear.protolayout.proto.LayoutElementProto.Spannable.Builder builderForValue) {
        copyOnWrite();
        instance.setSpannable(builderForValue.build());
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Spannable spannable = 8;</code>
       */
      public Builder mergeSpannable(androidx.wear.protolayout.proto.LayoutElementProto.Spannable value) {
        copyOnWrite();
        instance.mergeSpannable(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.Spannable spannable = 8;</code>
       */
      public Builder clearSpannable() {
        copyOnWrite();
        instance.clearSpannable();
        return this;
      }

      /**
       * <code>.androidx.wear.protolayout.proto.ExtensionLayoutElement extension = 1000;</code>
       */
      @java.lang.Override
      public boolean hasExtension() {
        return instance.hasExtension();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ExtensionLayoutElement extension = 1000;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement getExtension() {
        return instance.getExtension();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ExtensionLayoutElement extension = 1000;</code>
       */
      public Builder setExtension(androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement value) {
        copyOnWrite();
        instance.setExtension(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ExtensionLayoutElement extension = 1000;</code>
       */
      public Builder setExtension(
          androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement.Builder builderForValue) {
        copyOnWrite();
        instance.setExtension(builderForValue.build());
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ExtensionLayoutElement extension = 1000;</code>
       */
      public Builder mergeExtension(androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement value) {
        copyOnWrite();
        instance.mergeExtension(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ExtensionLayoutElement extension = 1000;</code>
       */
      public Builder clearExtension() {
        copyOnWrite();
        instance.clearExtension();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.LayoutElement)
    }
    @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.proto.LayoutElementProto.LayoutElement();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "inner_",
              "innerCase_",
              androidx.wear.protolayout.proto.LayoutElementProto.Column.class,
              androidx.wear.protolayout.proto.LayoutElementProto.Row.class,
              androidx.wear.protolayout.proto.LayoutElementProto.Box.class,
              androidx.wear.protolayout.proto.LayoutElementProto.Spacer.class,
              androidx.wear.protolayout.proto.LayoutElementProto.Text.class,
              androidx.wear.protolayout.proto.LayoutElementProto.Image.class,
              androidx.wear.protolayout.proto.LayoutElementProto.Arc.class,
              androidx.wear.protolayout.proto.LayoutElementProto.Spannable.class,
              androidx.wear.protolayout.proto.LayoutElementProto.ExtensionLayoutElement.class,
            };
            java.lang.String info =
                "\u0000\t\u0001\u0000\u0001\u03e8\t\u0000\u0000\u0000\u0001<\u0000\u0002<\u0000\u0003" +
                "<\u0000\u0004<\u0000\u0005<\u0000\u0006<\u0000\u0007<\u0000\b<\u0000\u03e8<\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.proto.LayoutElementProto.LayoutElement> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement>(
                        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.proto.LayoutElement)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement DEFAULT_INSTANCE;
    static {
      LayoutElement defaultInstance = new LayoutElement();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        LayoutElement.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <code>.androidx.wear.protolayout.proto.ArcText text = 1;</code>
     * @return Whether the text field is set.
     */
    boolean hasText();
    /**
     * <code>.androidx.wear.protolayout.proto.ArcText text = 1;</code>
     * @return The text.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.ArcText getText();

    /**
     * <code>.androidx.wear.protolayout.proto.ArcLine line = 2;</code>
     * @return Whether the line field is set.
     */
    boolean hasLine();
    /**
     * <code>.androidx.wear.protolayout.proto.ArcLine line = 2;</code>
     * @return The line.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.ArcLine getLine();

    /**
     * <code>.androidx.wear.protolayout.proto.ArcSpacer spacer = 3;</code>
     * @return Whether the spacer field is set.
     */
    boolean hasSpacer();
    /**
     * <code>.androidx.wear.protolayout.proto.ArcSpacer spacer = 3;</code>
     * @return The spacer.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer getSpacer();

    /**
     * <code>.androidx.wear.protolayout.proto.ArcAdapter adapter = 4;</code>
     * @return Whether the adapter field is set.
     */
    boolean hasAdapter();
    /**
     * <code>.androidx.wear.protolayout.proto.ArcAdapter adapter = 4;</code>
     * @return The adapter.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter getAdapter();

    public androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement.InnerCase getInnerCase();
  }
  /**
   * <pre>
   * The root of all elements that can be used in an Arc. This exists to act as a
   * holder for all of the actual arc layout elements above.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.ArcLayoutElement}
   */
  public  static final class ArcLayoutElement extends
      com.google.protobuf.GeneratedMessageLite<
          ArcLayoutElement, ArcLayoutElement.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.ArcLayoutElement)
      ArcLayoutElementOrBuilder {
    private ArcLayoutElement() {
    }
    private int innerCase_ = 0;
    private java.lang.Object inner_;
    public enum InnerCase {
      TEXT(1),
      LINE(2),
      SPACER(3),
      ADAPTER(4),
      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 TEXT;
          case 2: return LINE;
          case 3: return SPACER;
          case 4: return ADAPTER;
          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 TEXT_FIELD_NUMBER = 1;
    /**
     * <code>.androidx.wear.protolayout.proto.ArcText text = 1;</code>
     */
    @java.lang.Override
    public boolean hasText() {
      return innerCase_ == 1;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.ArcText text = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.ArcText getText() {
      if (innerCase_ == 1) {
         return (androidx.wear.protolayout.proto.LayoutElementProto.ArcText) inner_;
      }
      return androidx.wear.protolayout.proto.LayoutElementProto.ArcText.getDefaultInstance();
    }
    /**
     * <code>.androidx.wear.protolayout.proto.ArcText text = 1;</code>
     */
    private void setText(androidx.wear.protolayout.proto.LayoutElementProto.ArcText value) {
      value.getClass();
  inner_ = value;
      innerCase_ = 1;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.ArcText text = 1;</code>
     */
    private void mergeText(androidx.wear.protolayout.proto.LayoutElementProto.ArcText value) {
      value.getClass();
  if (innerCase_ == 1 &&
          inner_ != androidx.wear.protolayout.proto.LayoutElementProto.ArcText.getDefaultInstance()) {
        inner_ = androidx.wear.protolayout.proto.LayoutElementProto.ArcText.newBuilder((androidx.wear.protolayout.proto.LayoutElementProto.ArcText) inner_)
            .mergeFrom(value).buildPartial();
      } else {
        inner_ = value;
      }
      innerCase_ = 1;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.ArcText text = 1;</code>
     */
    private void clearText() {
      if (innerCase_ == 1) {
        innerCase_ = 0;
        inner_ = null;
      }
    }

    public static final int LINE_FIELD_NUMBER = 2;
    /**
     * <code>.androidx.wear.protolayout.proto.ArcLine line = 2;</code>
     */
    @java.lang.Override
    public boolean hasLine() {
      return innerCase_ == 2;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.ArcLine line = 2;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.ArcLine getLine() {
      if (innerCase_ == 2) {
         return (androidx.wear.protolayout.proto.LayoutElementProto.ArcLine) inner_;
      }
      return androidx.wear.protolayout.proto.LayoutElementProto.ArcLine.getDefaultInstance();
    }
    /**
     * <code>.androidx.wear.protolayout.proto.ArcLine line = 2;</code>
     */
    private void setLine(androidx.wear.protolayout.proto.LayoutElementProto.ArcLine value) {
      value.getClass();
  inner_ = value;
      innerCase_ = 2;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.ArcLine line = 2;</code>
     */
    private void mergeLine(androidx.wear.protolayout.proto.LayoutElementProto.ArcLine value) {
      value.getClass();
  if (innerCase_ == 2 &&
          inner_ != androidx.wear.protolayout.proto.LayoutElementProto.ArcLine.getDefaultInstance()) {
        inner_ = androidx.wear.protolayout.proto.LayoutElementProto.ArcLine.newBuilder((androidx.wear.protolayout.proto.LayoutElementProto.ArcLine) inner_)
            .mergeFrom(value).buildPartial();
      } else {
        inner_ = value;
      }
      innerCase_ = 2;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.ArcLine line = 2;</code>
     */
    private void clearLine() {
      if (innerCase_ == 2) {
        innerCase_ = 0;
        inner_ = null;
      }
    }

    public static final int SPACER_FIELD_NUMBER = 3;
    /**
     * <code>.androidx.wear.protolayout.proto.ArcSpacer spacer = 3;</code>
     */
    @java.lang.Override
    public boolean hasSpacer() {
      return innerCase_ == 3;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.ArcSpacer spacer = 3;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer getSpacer() {
      if (innerCase_ == 3) {
         return (androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer) inner_;
      }
      return androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer.getDefaultInstance();
    }
    /**
     * <code>.androidx.wear.protolayout.proto.ArcSpacer spacer = 3;</code>
     */
    private void setSpacer(androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer value) {
      value.getClass();
  inner_ = value;
      innerCase_ = 3;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.ArcSpacer spacer = 3;</code>
     */
    private void mergeSpacer(androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer value) {
      value.getClass();
  if (innerCase_ == 3 &&
          inner_ != androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer.getDefaultInstance()) {
        inner_ = androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer.newBuilder((androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer) inner_)
            .mergeFrom(value).buildPartial();
      } else {
        inner_ = value;
      }
      innerCase_ = 3;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.ArcSpacer spacer = 3;</code>
     */
    private void clearSpacer() {
      if (innerCase_ == 3) {
        innerCase_ = 0;
        inner_ = null;
      }
    }

    public static final int ADAPTER_FIELD_NUMBER = 4;
    /**
     * <code>.androidx.wear.protolayout.proto.ArcAdapter adapter = 4;</code>
     */
    @java.lang.Override
    public boolean hasAdapter() {
      return innerCase_ == 4;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.ArcAdapter adapter = 4;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter getAdapter() {
      if (innerCase_ == 4) {
         return (androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter) inner_;
      }
      return androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter.getDefaultInstance();
    }
    /**
     * <code>.androidx.wear.protolayout.proto.ArcAdapter adapter = 4;</code>
     */
    private void setAdapter(androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter value) {
      value.getClass();
  inner_ = value;
      innerCase_ = 4;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.ArcAdapter adapter = 4;</code>
     */
    private void mergeAdapter(androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter value) {
      value.getClass();
  if (innerCase_ == 4 &&
          inner_ != androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter.getDefaultInstance()) {
        inner_ = androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter.newBuilder((androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter) inner_)
            .mergeFrom(value).buildPartial();
      } else {
        inner_ = value;
      }
      innerCase_ = 4;
    }
    /**
     * <code>.androidx.wear.protolayout.proto.ArcAdapter adapter = 4;</code>
     */
    private void clearAdapter() {
      if (innerCase_ == 4) {
        innerCase_ = 0;
        inner_ = null;
      }
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement 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.proto.LayoutElementProto.ArcLayoutElement 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.proto.LayoutElementProto.ArcLayoutElement 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.proto.LayoutElementProto.ArcLayoutElement parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement 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.proto.LayoutElementProto.ArcLayoutElement parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement 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.proto.LayoutElementProto.ArcLayoutElement parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement 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.proto.LayoutElementProto.ArcLayoutElement parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement 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.proto.LayoutElementProto.ArcLayoutElement prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * The root of all elements that can be used in an Arc. This exists to act as a
     * holder for all of the actual arc layout elements above.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.ArcLayoutElement}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.ArcLayoutElement)
        androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElementOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

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

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


      /**
       * <code>.androidx.wear.protolayout.proto.ArcText text = 1;</code>
       */
      @java.lang.Override
      public boolean hasText() {
        return instance.hasText();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ArcText text = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.ArcText getText() {
        return instance.getText();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ArcText text = 1;</code>
       */
      public Builder setText(androidx.wear.protolayout.proto.LayoutElementProto.ArcText value) {
        copyOnWrite();
        instance.setText(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ArcText text = 1;</code>
       */
      public Builder setText(
          androidx.wear.protolayout.proto.LayoutElementProto.ArcText.Builder builderForValue) {
        copyOnWrite();
        instance.setText(builderForValue.build());
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ArcText text = 1;</code>
       */
      public Builder mergeText(androidx.wear.protolayout.proto.LayoutElementProto.ArcText value) {
        copyOnWrite();
        instance.mergeText(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ArcText text = 1;</code>
       */
      public Builder clearText() {
        copyOnWrite();
        instance.clearText();
        return this;
      }

      /**
       * <code>.androidx.wear.protolayout.proto.ArcLine line = 2;</code>
       */
      @java.lang.Override
      public boolean hasLine() {
        return instance.hasLine();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ArcLine line = 2;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.ArcLine getLine() {
        return instance.getLine();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ArcLine line = 2;</code>
       */
      public Builder setLine(androidx.wear.protolayout.proto.LayoutElementProto.ArcLine value) {
        copyOnWrite();
        instance.setLine(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ArcLine line = 2;</code>
       */
      public Builder setLine(
          androidx.wear.protolayout.proto.LayoutElementProto.ArcLine.Builder builderForValue) {
        copyOnWrite();
        instance.setLine(builderForValue.build());
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ArcLine line = 2;</code>
       */
      public Builder mergeLine(androidx.wear.protolayout.proto.LayoutElementProto.ArcLine value) {
        copyOnWrite();
        instance.mergeLine(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ArcLine line = 2;</code>
       */
      public Builder clearLine() {
        copyOnWrite();
        instance.clearLine();
        return this;
      }

      /**
       * <code>.androidx.wear.protolayout.proto.ArcSpacer spacer = 3;</code>
       */
      @java.lang.Override
      public boolean hasSpacer() {
        return instance.hasSpacer();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ArcSpacer spacer = 3;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer getSpacer() {
        return instance.getSpacer();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ArcSpacer spacer = 3;</code>
       */
      public Builder setSpacer(androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer value) {
        copyOnWrite();
        instance.setSpacer(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ArcSpacer spacer = 3;</code>
       */
      public Builder setSpacer(
          androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer.Builder builderForValue) {
        copyOnWrite();
        instance.setSpacer(builderForValue.build());
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ArcSpacer spacer = 3;</code>
       */
      public Builder mergeSpacer(androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer value) {
        copyOnWrite();
        instance.mergeSpacer(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ArcSpacer spacer = 3;</code>
       */
      public Builder clearSpacer() {
        copyOnWrite();
        instance.clearSpacer();
        return this;
      }

      /**
       * <code>.androidx.wear.protolayout.proto.ArcAdapter adapter = 4;</code>
       */
      @java.lang.Override
      public boolean hasAdapter() {
        return instance.hasAdapter();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ArcAdapter adapter = 4;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter getAdapter() {
        return instance.getAdapter();
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ArcAdapter adapter = 4;</code>
       */
      public Builder setAdapter(androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter value) {
        copyOnWrite();
        instance.setAdapter(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ArcAdapter adapter = 4;</code>
       */
      public Builder setAdapter(
          androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter.Builder builderForValue) {
        copyOnWrite();
        instance.setAdapter(builderForValue.build());
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ArcAdapter adapter = 4;</code>
       */
      public Builder mergeAdapter(androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter value) {
        copyOnWrite();
        instance.mergeAdapter(value);
        return this;
      }
      /**
       * <code>.androidx.wear.protolayout.proto.ArcAdapter adapter = 4;</code>
       */
      public Builder clearAdapter() {
        copyOnWrite();
        instance.clearAdapter();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.ArcLayoutElement)
    }
    @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.proto.LayoutElementProto.ArcLayoutElement();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "inner_",
              "innerCase_",
              androidx.wear.protolayout.proto.LayoutElementProto.ArcText.class,
              androidx.wear.protolayout.proto.LayoutElementProto.ArcLine.class,
              androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer.class,
              androidx.wear.protolayout.proto.LayoutElementProto.ArcAdapter.class,
            };
            java.lang.String info =
                "\u0000\u0004\u0001\u0000\u0001\u0004\u0004\u0000\u0000\u0000\u0001<\u0000\u0002<" +
                "\u0000\u0003<\u0000\u0004<\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.proto.LayoutElementProto.ArcLayoutElement> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement>(
                        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.proto.ArcLayoutElement)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement DEFAULT_INSTANCE;
    static {
      ArcLayoutElement defaultInstance = new ArcLayoutElement();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        ArcLayoutElement.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    /**
     * <pre>
     * The root element in the layout.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.LayoutElement root = 1;</code>
     * @return Whether the root field is set.
     */
    boolean hasRoot();
    /**
     * <pre>
     * The root element in the layout.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.LayoutElement root = 1;</code>
     * @return The root.
     */
    androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement getRoot();

    /**
     * <pre>
     * The fingerprint for the tree starting at "root".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TreeFingerprint fingerprint = 1000;</code>
     * @return Whether the fingerprint field is set.
     */
    boolean hasFingerprint();
    /**
     * <pre>
     * The fingerprint for the tree starting at "root".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TreeFingerprint fingerprint = 1000;</code>
     * @return The fingerprint.
     */
    androidx.wear.protolayout.proto.FingerprintProto.TreeFingerprint getFingerprint();
  }
  /**
   * <pre>
   * A complete layout.
   * </pre>
   *
   * Protobuf type {@code androidx.wear.protolayout.proto.Layout}
   */
  public  static final class Layout extends
      com.google.protobuf.GeneratedMessageLite<
          Layout, Layout.Builder> implements
      // @@protoc_insertion_point(message_implements:androidx.wear.protolayout.proto.Layout)
      LayoutOrBuilder {
    private Layout() {
    }
    public static final int ROOT_FIELD_NUMBER = 1;
    private androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement root_;
    /**
     * <pre>
     * The root element in the layout.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.LayoutElement root = 1;</code>
     */
    @java.lang.Override
    public boolean hasRoot() {
      return root_ != null;
    }
    /**
     * <pre>
     * The root element in the layout.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.LayoutElement root = 1;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement getRoot() {
      return root_ == null ? androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.getDefaultInstance() : root_;
    }
    /**
     * <pre>
     * The root element in the layout.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.LayoutElement root = 1;</code>
     */
    private void setRoot(androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
      value.getClass();
  root_ = value;

      }
    /**
     * <pre>
     * The root element in the layout.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.LayoutElement root = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeRoot(androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
      value.getClass();
  if (root_ != null &&
          root_ != androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.getDefaultInstance()) {
        root_ =
          androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.newBuilder(root_).mergeFrom(value).buildPartial();
      } else {
        root_ = value;
      }

    }
    /**
     * <pre>
     * The root element in the layout.
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.LayoutElement root = 1;</code>
     */
    private void clearRoot() {  root_ = null;

    }

    public static final int FINGERPRINT_FIELD_NUMBER = 1000;
    private androidx.wear.protolayout.proto.FingerprintProto.TreeFingerprint fingerprint_;
    /**
     * <pre>
     * The fingerprint for the tree starting at "root".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TreeFingerprint fingerprint = 1000;</code>
     */
    @java.lang.Override
    public boolean hasFingerprint() {
      return fingerprint_ != null;
    }
    /**
     * <pre>
     * The fingerprint for the tree starting at "root".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TreeFingerprint fingerprint = 1000;</code>
     */
    @java.lang.Override
    public androidx.wear.protolayout.proto.FingerprintProto.TreeFingerprint getFingerprint() {
      return fingerprint_ == null ? androidx.wear.protolayout.proto.FingerprintProto.TreeFingerprint.getDefaultInstance() : fingerprint_;
    }
    /**
     * <pre>
     * The fingerprint for the tree starting at "root".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TreeFingerprint fingerprint = 1000;</code>
     */
    private void setFingerprint(androidx.wear.protolayout.proto.FingerprintProto.TreeFingerprint value) {
      value.getClass();
  fingerprint_ = value;

      }
    /**
     * <pre>
     * The fingerprint for the tree starting at "root".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TreeFingerprint fingerprint = 1000;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeFingerprint(androidx.wear.protolayout.proto.FingerprintProto.TreeFingerprint value) {
      value.getClass();
  if (fingerprint_ != null &&
          fingerprint_ != androidx.wear.protolayout.proto.FingerprintProto.TreeFingerprint.getDefaultInstance()) {
        fingerprint_ =
          androidx.wear.protolayout.proto.FingerprintProto.TreeFingerprint.newBuilder(fingerprint_).mergeFrom(value).buildPartial();
      } else {
        fingerprint_ = value;
      }

    }
    /**
     * <pre>
     * The fingerprint for the tree starting at "root".
     * </pre>
     *
     * <code>.androidx.wear.protolayout.proto.TreeFingerprint fingerprint = 1000;</code>
     */
    private void clearFingerprint() {  fingerprint_ = null;

    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.Layout parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Layout 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.proto.LayoutElementProto.Layout 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.proto.LayoutElementProto.Layout 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.proto.LayoutElementProto.Layout parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Layout 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.proto.LayoutElementProto.Layout parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Layout 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.proto.LayoutElementProto.Layout parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Layout 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.proto.LayoutElementProto.Layout parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static androidx.wear.protolayout.proto.LayoutElementProto.Layout 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.proto.LayoutElementProto.Layout prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * A complete layout.
     * </pre>
     *
     * Protobuf type {@code androidx.wear.protolayout.proto.Layout}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          androidx.wear.protolayout.proto.LayoutElementProto.Layout, Builder> implements
        // @@protoc_insertion_point(builder_implements:androidx.wear.protolayout.proto.Layout)
        androidx.wear.protolayout.proto.LayoutElementProto.LayoutOrBuilder {
      // Construct using androidx.wear.protolayout.proto.LayoutElementProto.Layout.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * The root element in the layout.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.LayoutElement root = 1;</code>
       */
      @java.lang.Override
      public boolean hasRoot() {
        return instance.hasRoot();
      }
      /**
       * <pre>
       * The root element in the layout.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.LayoutElement root = 1;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement getRoot() {
        return instance.getRoot();
      }
      /**
       * <pre>
       * The root element in the layout.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.LayoutElement root = 1;</code>
       */
      public Builder setRoot(androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
        copyOnWrite();
        instance.setRoot(value);
        return this;
        }
      /**
       * <pre>
       * The root element in the layout.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.LayoutElement root = 1;</code>
       */
      public Builder setRoot(
          androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement.Builder builderForValue) {
        copyOnWrite();
        instance.setRoot(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The root element in the layout.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.LayoutElement root = 1;</code>
       */
      public Builder mergeRoot(androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement value) {
        copyOnWrite();
        instance.mergeRoot(value);
        return this;
      }
      /**
       * <pre>
       * The root element in the layout.
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.LayoutElement root = 1;</code>
       */
      public Builder clearRoot() {  copyOnWrite();
        instance.clearRoot();
        return this;
      }

      /**
       * <pre>
       * The fingerprint for the tree starting at "root".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TreeFingerprint fingerprint = 1000;</code>
       */
      @java.lang.Override
      public boolean hasFingerprint() {
        return instance.hasFingerprint();
      }
      /**
       * <pre>
       * The fingerprint for the tree starting at "root".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TreeFingerprint fingerprint = 1000;</code>
       */
      @java.lang.Override
      public androidx.wear.protolayout.proto.FingerprintProto.TreeFingerprint getFingerprint() {
        return instance.getFingerprint();
      }
      /**
       * <pre>
       * The fingerprint for the tree starting at "root".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TreeFingerprint fingerprint = 1000;</code>
       */
      public Builder setFingerprint(androidx.wear.protolayout.proto.FingerprintProto.TreeFingerprint value) {
        copyOnWrite();
        instance.setFingerprint(value);
        return this;
        }
      /**
       * <pre>
       * The fingerprint for the tree starting at "root".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TreeFingerprint fingerprint = 1000;</code>
       */
      public Builder setFingerprint(
          androidx.wear.protolayout.proto.FingerprintProto.TreeFingerprint.Builder builderForValue) {
        copyOnWrite();
        instance.setFingerprint(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The fingerprint for the tree starting at "root".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TreeFingerprint fingerprint = 1000;</code>
       */
      public Builder mergeFingerprint(androidx.wear.protolayout.proto.FingerprintProto.TreeFingerprint value) {
        copyOnWrite();
        instance.mergeFingerprint(value);
        return this;
      }
      /**
       * <pre>
       * The fingerprint for the tree starting at "root".
       * </pre>
       *
       * <code>.androidx.wear.protolayout.proto.TreeFingerprint fingerprint = 1000;</code>
       */
      public Builder clearFingerprint() {  copyOnWrite();
        instance.clearFingerprint();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:androidx.wear.protolayout.proto.Layout)
    }
    @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.proto.LayoutElementProto.Layout();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "root_",
              "fingerprint_",
            };
            java.lang.String info =
                "\u0000\u0002\u0000\u0000\u0001\u03e8\u0002\u0000\u0000\u0000\u0001\t\u03e8\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.proto.LayoutElementProto.Layout> parser = PARSER;
          if (parser == null) {
            synchronized (androidx.wear.protolayout.proto.LayoutElementProto.Layout.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<androidx.wear.protolayout.proto.LayoutElementProto.Layout>(
                        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.proto.Layout)
    private static final androidx.wear.protolayout.proto.LayoutElementProto.Layout DEFAULT_INSTANCE;
    static {
      Layout defaultInstance = new Layout();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        Layout.class, defaultInstance);
    }

    public static androidx.wear.protolayout.proto.LayoutElementProto.Layout getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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


  static {
  }

  // @@protoc_insertion_point(outer_class_scope)
}