Merge "Remove uses of @hide in room libraries" into androidx-main
diff --git a/appactions/builtintypes/builtintypes-core/api/current.txt b/appactions/builtintypes/builtintypes-core/api/current.txt
index 4033c72..09eaecb 100644
--- a/appactions/builtintypes/builtintypes-core/api/current.txt
+++ b/appactions/builtintypes/builtintypes-core/api/current.txt
@@ -164,6 +164,444 @@
 
 package androidx.appactions.builtintypes.types {
 
+  public abstract class AbstractAlarm<Self extends androidx.appactions.builtintypes.types.AbstractAlarm<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractAlarm.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Alarm {
+    ctor public AbstractAlarm(androidx.appactions.builtintypes.types.Alarm alarm);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final androidx.appactions.builtintypes.types.Schedule? getAlarmSchedule();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final androidx.appactions.builtintypes.types.Schedule? alarmSchedule;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract static class AbstractAlarm.Builder<Self extends androidx.appactions.builtintypes.types.AbstractAlarm.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractAlarm<Built, Self>> implements androidx.appactions.builtintypes.types.Alarm.Builder<Self> {
+    ctor public AbstractAlarm.Builder();
+    method public final Built build();
+    method protected abstract Built buildFromAlarm(androidx.appactions.builtintypes.types.Alarm alarm);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setAlarmSchedule(androidx.appactions.builtintypes.types.Schedule? schedule);
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract class AbstractExecutionStatus<Self extends androidx.appactions.builtintypes.types.AbstractExecutionStatus<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractExecutionStatus.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.ExecutionStatus {
+    ctor public AbstractExecutionStatus(androidx.appactions.builtintypes.types.ExecutionStatus executionStatus);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract static class AbstractExecutionStatus.Builder<Self extends androidx.appactions.builtintypes.types.AbstractExecutionStatus.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractExecutionStatus<Built, Self>> implements androidx.appactions.builtintypes.types.ExecutionStatus.Builder<Self> {
+    ctor public AbstractExecutionStatus.Builder();
+    method public final Built build();
+    method protected abstract Built buildFromExecutionStatus(androidx.appactions.builtintypes.types.ExecutionStatus executionStatus);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract class AbstractGenericErrorStatus<Self extends androidx.appactions.builtintypes.types.AbstractGenericErrorStatus<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractGenericErrorStatus.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.GenericErrorStatus {
+    ctor public AbstractGenericErrorStatus(androidx.appactions.builtintypes.types.GenericErrorStatus genericErrorStatus);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract static class AbstractGenericErrorStatus.Builder<Self extends androidx.appactions.builtintypes.types.AbstractGenericErrorStatus.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractGenericErrorStatus<Built, Self>> implements androidx.appactions.builtintypes.types.GenericErrorStatus.Builder<Self> {
+    ctor public AbstractGenericErrorStatus.Builder();
+    method public final Built build();
+    method protected abstract Built buildFromGenericErrorStatus(androidx.appactions.builtintypes.types.GenericErrorStatus genericErrorStatus);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract class AbstractIntangible<Self extends androidx.appactions.builtintypes.types.AbstractIntangible<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractIntangible.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Intangible {
+    ctor public AbstractIntangible(androidx.appactions.builtintypes.types.Intangible intangible);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract static class AbstractIntangible.Builder<Self extends androidx.appactions.builtintypes.types.AbstractIntangible.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractIntangible<Built, Self>> implements androidx.appactions.builtintypes.types.Intangible.Builder<Self> {
+    ctor public AbstractIntangible.Builder();
+    method public final Built build();
+    method protected abstract Built buildFromIntangible(androidx.appactions.builtintypes.types.Intangible intangible);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract class AbstractObjectCreationLimitReachedStatus<Self extends androidx.appactions.builtintypes.types.AbstractObjectCreationLimitReachedStatus<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractObjectCreationLimitReachedStatus.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.ObjectCreationLimitReachedStatus {
+    ctor public AbstractObjectCreationLimitReachedStatus(androidx.appactions.builtintypes.types.ObjectCreationLimitReachedStatus objectCreationLimitReachedStatus);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract static class AbstractObjectCreationLimitReachedStatus.Builder<Self extends androidx.appactions.builtintypes.types.AbstractObjectCreationLimitReachedStatus.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractObjectCreationLimitReachedStatus<Built, Self>> implements androidx.appactions.builtintypes.types.ObjectCreationLimitReachedStatus.Builder<Self> {
+    ctor public AbstractObjectCreationLimitReachedStatus.Builder();
+    method public final Built build();
+    method protected abstract Built buildFromObjectCreationLimitReachedStatus(androidx.appactions.builtintypes.types.ObjectCreationLimitReachedStatus objectCreationLimitReachedStatus);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract class AbstractPerson<Self extends androidx.appactions.builtintypes.types.AbstractPerson<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractPerson.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Person {
+    ctor public AbstractPerson(androidx.appactions.builtintypes.types.Person person);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final String? getEmail();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final String? email;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract static class AbstractPerson.Builder<Self extends androidx.appactions.builtintypes.types.AbstractPerson.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractPerson<Built, Self>> implements androidx.appactions.builtintypes.types.Person.Builder<Self> {
+    ctor public AbstractPerson.Builder();
+    method public final Built build();
+    method protected abstract Built buildFromPerson(androidx.appactions.builtintypes.types.Person person);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setEmail(String? text);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract class AbstractSchedule<Self extends androidx.appactions.builtintypes.types.AbstractSchedule<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractSchedule.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Schedule {
+    ctor public AbstractSchedule(androidx.appactions.builtintypes.types.Schedule schedule);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final java.util.List<androidx.appactions.builtintypes.properties.ByDay> getByDays();
+    method public final java.util.List<java.lang.Long> getByMonthDays();
+    method public final java.util.List<java.lang.Long> getByMonthWeeks();
+    method public final java.util.List<java.lang.Long> getByMonths();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final androidx.appactions.builtintypes.properties.EndDate? getEndDate();
+    method public final androidx.appactions.builtintypes.properties.EndTime? getEndTime();
+    method public final androidx.appactions.builtintypes.properties.ExceptDate? getExceptDate();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method public final Long? getRepeatCount();
+    method public final androidx.appactions.builtintypes.properties.RepeatFrequency? getRepeatFrequency();
+    method public final String? getScheduleTimezone();
+    method protected abstract String getSelfTypeName();
+    method public final androidx.appactions.builtintypes.properties.StartDate? getStartDate();
+    method public final androidx.appactions.builtintypes.properties.StartTime? getStartTime();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final java.util.List<androidx.appactions.builtintypes.properties.ByDay> byDays;
+    property public final java.util.List<java.lang.Long> byMonthDays;
+    property public final java.util.List<java.lang.Long> byMonthWeeks;
+    property public final java.util.List<java.lang.Long> byMonths;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final androidx.appactions.builtintypes.properties.EndDate? endDate;
+    property public final androidx.appactions.builtintypes.properties.EndTime? endTime;
+    property public final androidx.appactions.builtintypes.properties.ExceptDate? exceptDate;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property public final Long? repeatCount;
+    property public final androidx.appactions.builtintypes.properties.RepeatFrequency? repeatFrequency;
+    property public final String? scheduleTimezone;
+    property protected abstract String selfTypeName;
+    property public final androidx.appactions.builtintypes.properties.StartDate? startDate;
+    property public final androidx.appactions.builtintypes.properties.StartTime? startTime;
+  }
+
+  public abstract static class AbstractSchedule.Builder<Self extends androidx.appactions.builtintypes.types.AbstractSchedule.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractSchedule<Built, Self>> implements androidx.appactions.builtintypes.types.Schedule.Builder<Self> {
+    ctor public AbstractSchedule.Builder();
+    method public final Self addByDay(androidx.appactions.builtintypes.properties.ByDay byDay);
+    method public final Self addByDays(Iterable<androidx.appactions.builtintypes.properties.ByDay> values);
+    method public final Self addByMonth(long integer);
+    method public final Self addByMonthDay(long integer);
+    method public final Self addByMonthDays(Iterable<java.lang.Long> values);
+    method public final Self addByMonthWeek(long integer);
+    method public final Self addByMonthWeeks(Iterable<java.lang.Long> values);
+    method public final Self addByMonths(Iterable<java.lang.Long> values);
+    method public final Built build();
+    method protected abstract Built buildFromSchedule(androidx.appactions.builtintypes.types.Schedule schedule);
+    method public final Self clearByDays();
+    method public final Self clearByMonthDays();
+    method public final Self clearByMonthWeeks();
+    method public final Self clearByMonths();
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setEndDate(androidx.appactions.builtintypes.properties.EndDate? endDate);
+    method public final Self setEndTime(androidx.appactions.builtintypes.properties.EndTime? endTime);
+    method public final Self setExceptDate(androidx.appactions.builtintypes.properties.ExceptDate? exceptDate);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final Self setRepeatCount(Long? integer);
+    method public final Self setRepeatFrequency(androidx.appactions.builtintypes.properties.RepeatFrequency? repeatFrequency);
+    method public final Self setScheduleTimezone(String? text);
+    method public final Self setStartDate(androidx.appactions.builtintypes.properties.StartDate? startDate);
+    method public final Self setStartTime(androidx.appactions.builtintypes.properties.StartTime? startTime);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract class AbstractSuccessStatus<Self extends androidx.appactions.builtintypes.types.AbstractSuccessStatus<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractSuccessStatus.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.SuccessStatus {
+    ctor public AbstractSuccessStatus(androidx.appactions.builtintypes.types.SuccessStatus successStatus);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract static class AbstractSuccessStatus.Builder<Self extends androidx.appactions.builtintypes.types.AbstractSuccessStatus.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractSuccessStatus<Built, Self>> implements androidx.appactions.builtintypes.types.SuccessStatus.Builder<Self> {
+    ctor public AbstractSuccessStatus.Builder();
+    method public final Built build();
+    method protected abstract Built buildFromSuccessStatus(androidx.appactions.builtintypes.types.SuccessStatus successStatus);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract class AbstractThing<Self extends androidx.appactions.builtintypes.types.AbstractThing<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractThing.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Thing {
+    ctor public AbstractThing(androidx.appactions.builtintypes.types.Thing thing);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract static class AbstractThing.Builder<Self extends androidx.appactions.builtintypes.types.AbstractThing.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractThing<Built, Self>> implements androidx.appactions.builtintypes.types.Thing.Builder<Self> {
+    ctor public AbstractThing.Builder();
+    method public final Built build();
+    method protected abstract Built buildFromThing(androidx.appactions.builtintypes.types.Thing thing);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract class AbstractTimer<Self extends androidx.appactions.builtintypes.types.AbstractTimer<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractTimer.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Timer {
+    ctor public AbstractTimer(androidx.appactions.builtintypes.types.Timer timer);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final java.time.Duration? getDuration();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final java.time.Duration? duration;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract static class AbstractTimer.Builder<Self extends androidx.appactions.builtintypes.types.AbstractTimer.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractTimer<Built, Self>> implements androidx.appactions.builtintypes.types.Timer.Builder<Self> {
+    ctor public AbstractTimer.Builder();
+    method public final Built build();
+    method protected abstract Built buildFromTimer(androidx.appactions.builtintypes.types.Timer timer);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setDuration(java.time.Duration? duration);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract class AbstractUnsupportedOperationStatus<Self extends androidx.appactions.builtintypes.types.AbstractUnsupportedOperationStatus<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractUnsupportedOperationStatus.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.UnsupportedOperationStatus {
+    ctor public AbstractUnsupportedOperationStatus(androidx.appactions.builtintypes.types.UnsupportedOperationStatus unsupportedOperationStatus);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract static class AbstractUnsupportedOperationStatus.Builder<Self extends androidx.appactions.builtintypes.types.AbstractUnsupportedOperationStatus.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractUnsupportedOperationStatus<Built, Self>> implements androidx.appactions.builtintypes.types.UnsupportedOperationStatus.Builder<Self> {
+    ctor public AbstractUnsupportedOperationStatus.Builder();
+    method public final Built build();
+    method protected abstract Built buildFromUnsupportedOperationStatus(androidx.appactions.builtintypes.types.UnsupportedOperationStatus unsupportedOperationStatus);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
   public interface Alarm extends androidx.appactions.builtintypes.types.Thing {
     method public default static androidx.appactions.builtintypes.types.Alarm.Builder<?> Builder();
     method public androidx.appactions.builtintypes.types.Schedule? getAlarmSchedule();
@@ -222,267 +660,32 @@
     method public default R wednesday();
   }
 
-  public abstract class GenericAlarm<Self extends androidx.appactions.builtintypes.types.GenericAlarm<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.GenericAlarm.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Alarm {
-    ctor public GenericAlarm(androidx.appactions.builtintypes.types.Alarm alarm);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method public final androidx.appactions.builtintypes.types.Schedule? getAlarmSchedule();
-    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
-    method public final String? getIdentifier();
-    method public final androidx.appactions.builtintypes.properties.Name? getName();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Builder toBuilder();
-    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property public final androidx.appactions.builtintypes.types.Schedule? alarmSchedule;
-    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
-    property public final String? identifier;
-    property public final androidx.appactions.builtintypes.properties.Name? name;
-    property protected abstract String selfTypeName;
+  public interface ExecutionStatus extends androidx.appactions.builtintypes.types.Intangible {
+    method public default static androidx.appactions.builtintypes.types.ExecutionStatus.Builder<?> Builder();
+    method public androidx.appactions.builtintypes.types.ExecutionStatus.Builder<?> toBuilder();
+    field public static final androidx.appactions.builtintypes.types.ExecutionStatus.Companion Companion;
   }
 
-  public abstract static class GenericAlarm.Builder<Self extends androidx.appactions.builtintypes.types.GenericAlarm.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.GenericAlarm<Built, Self>> implements androidx.appactions.builtintypes.types.Alarm.Builder<Self> {
-    ctor public GenericAlarm.Builder();
-    method public final Built build();
-    method protected abstract Built buildFromAlarm(androidx.appactions.builtintypes.types.Alarm alarm);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Self setAlarmSchedule(androidx.appactions.builtintypes.types.Schedule? schedule);
-    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
-    method public final Self setIdentifier(String? text);
-    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property protected abstract String selfTypeName;
+  public static interface ExecutionStatus.Builder<Self extends androidx.appactions.builtintypes.types.ExecutionStatus.Builder<Self>> extends androidx.appactions.builtintypes.types.Intangible.Builder<Self> {
+    method public androidx.appactions.builtintypes.types.ExecutionStatus build();
   }
 
-  public abstract class GenericIntangible<Self extends androidx.appactions.builtintypes.types.GenericIntangible<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.GenericIntangible.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Intangible {
-    ctor public GenericIntangible(androidx.appactions.builtintypes.types.Intangible intangible);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
-    method public final String? getIdentifier();
-    method public final androidx.appactions.builtintypes.properties.Name? getName();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Builder toBuilder();
-    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
-    property public final String? identifier;
-    property public final androidx.appactions.builtintypes.properties.Name? name;
-    property protected abstract String selfTypeName;
+  public static final class ExecutionStatus.Companion {
+    method public androidx.appactions.builtintypes.types.ExecutionStatus.Builder<?> Builder();
   }
 
-  public abstract static class GenericIntangible.Builder<Self extends androidx.appactions.builtintypes.types.GenericIntangible.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.GenericIntangible<Built, Self>> implements androidx.appactions.builtintypes.types.Intangible.Builder<Self> {
-    ctor public GenericIntangible.Builder();
-    method public final Built build();
-    method protected abstract Built buildFromIntangible(androidx.appactions.builtintypes.types.Intangible intangible);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
-    method public final Self setIdentifier(String? text);
-    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property protected abstract String selfTypeName;
+  public interface GenericErrorStatus extends androidx.appactions.builtintypes.types.ExecutionStatus {
+    method public default static androidx.appactions.builtintypes.types.GenericErrorStatus.Builder<?> Builder();
+    method public androidx.appactions.builtintypes.types.GenericErrorStatus.Builder<?> toBuilder();
+    field public static final androidx.appactions.builtintypes.types.GenericErrorStatus.Companion Companion;
   }
 
-  public abstract class GenericPerson<Self extends androidx.appactions.builtintypes.types.GenericPerson<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.GenericPerson.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Person {
-    ctor public GenericPerson(androidx.appactions.builtintypes.types.Person person);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
-    method public final String? getEmail();
-    method public final String? getIdentifier();
-    method public final androidx.appactions.builtintypes.properties.Name? getName();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Builder toBuilder();
-    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
-    property public final String? email;
-    property public final String? identifier;
-    property public final androidx.appactions.builtintypes.properties.Name? name;
-    property protected abstract String selfTypeName;
+  public static interface GenericErrorStatus.Builder<Self extends androidx.appactions.builtintypes.types.GenericErrorStatus.Builder<Self>> extends androidx.appactions.builtintypes.types.ExecutionStatus.Builder<Self> {
+    method public androidx.appactions.builtintypes.types.GenericErrorStatus build();
   }
 
-  public abstract static class GenericPerson.Builder<Self extends androidx.appactions.builtintypes.types.GenericPerson.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.GenericPerson<Built, Self>> implements androidx.appactions.builtintypes.types.Person.Builder<Self> {
-    ctor public GenericPerson.Builder();
-    method public final Built build();
-    method protected abstract Built buildFromPerson(androidx.appactions.builtintypes.types.Person person);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
-    method public final Self setEmail(String? text);
-    method public final Self setIdentifier(String? text);
-    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property protected abstract String selfTypeName;
-  }
-
-  public abstract class GenericSchedule<Self extends androidx.appactions.builtintypes.types.GenericSchedule<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.GenericSchedule.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Schedule {
-    ctor public GenericSchedule(androidx.appactions.builtintypes.types.Schedule schedule);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method public final java.util.List<androidx.appactions.builtintypes.properties.ByDay> getByDays();
-    method public final java.util.List<java.lang.Long> getByMonthDays();
-    method public final java.util.List<java.lang.Long> getByMonthWeeks();
-    method public final java.util.List<java.lang.Long> getByMonths();
-    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
-    method public final androidx.appactions.builtintypes.properties.EndDate? getEndDate();
-    method public final androidx.appactions.builtintypes.properties.EndTime? getEndTime();
-    method public final androidx.appactions.builtintypes.properties.ExceptDate? getExceptDate();
-    method public final String? getIdentifier();
-    method public final androidx.appactions.builtintypes.properties.Name? getName();
-    method public final Long? getRepeatCount();
-    method public final androidx.appactions.builtintypes.properties.RepeatFrequency? getRepeatFrequency();
-    method public final String? getScheduleTimezone();
-    method protected abstract String getSelfTypeName();
-    method public final androidx.appactions.builtintypes.properties.StartDate? getStartDate();
-    method public final androidx.appactions.builtintypes.properties.StartTime? getStartTime();
-    method public final int hashCode();
-    method public final Builder toBuilder();
-    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property public final java.util.List<androidx.appactions.builtintypes.properties.ByDay> byDays;
-    property public final java.util.List<java.lang.Long> byMonthDays;
-    property public final java.util.List<java.lang.Long> byMonthWeeks;
-    property public final java.util.List<java.lang.Long> byMonths;
-    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
-    property public final androidx.appactions.builtintypes.properties.EndDate? endDate;
-    property public final androidx.appactions.builtintypes.properties.EndTime? endTime;
-    property public final androidx.appactions.builtintypes.properties.ExceptDate? exceptDate;
-    property public final String? identifier;
-    property public final androidx.appactions.builtintypes.properties.Name? name;
-    property public final Long? repeatCount;
-    property public final androidx.appactions.builtintypes.properties.RepeatFrequency? repeatFrequency;
-    property public final String? scheduleTimezone;
-    property protected abstract String selfTypeName;
-    property public final androidx.appactions.builtintypes.properties.StartDate? startDate;
-    property public final androidx.appactions.builtintypes.properties.StartTime? startTime;
-  }
-
-  public abstract static class GenericSchedule.Builder<Self extends androidx.appactions.builtintypes.types.GenericSchedule.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.GenericSchedule<Built, Self>> implements androidx.appactions.builtintypes.types.Schedule.Builder<Self> {
-    ctor public GenericSchedule.Builder();
-    method public final Self addByDay(androidx.appactions.builtintypes.properties.ByDay byDay);
-    method public final Self addByDays(Iterable<androidx.appactions.builtintypes.properties.ByDay> values);
-    method public final Self addByMonth(long integer);
-    method public final Self addByMonthDay(long integer);
-    method public final Self addByMonthDays(Iterable<java.lang.Long> values);
-    method public final Self addByMonthWeek(long integer);
-    method public final Self addByMonthWeeks(Iterable<java.lang.Long> values);
-    method public final Self addByMonths(Iterable<java.lang.Long> values);
-    method public final Built build();
-    method protected abstract Built buildFromSchedule(androidx.appactions.builtintypes.types.Schedule schedule);
-    method public final Self clearByDays();
-    method public final Self clearByMonthDays();
-    method public final Self clearByMonthWeeks();
-    method public final Self clearByMonths();
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
-    method public final Self setEndDate(androidx.appactions.builtintypes.properties.EndDate? endDate);
-    method public final Self setEndTime(androidx.appactions.builtintypes.properties.EndTime? endTime);
-    method public final Self setExceptDate(androidx.appactions.builtintypes.properties.ExceptDate? exceptDate);
-    method public final Self setIdentifier(String? text);
-    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
-    method public final Self setRepeatCount(Long? integer);
-    method public final Self setRepeatFrequency(androidx.appactions.builtintypes.properties.RepeatFrequency? repeatFrequency);
-    method public final Self setScheduleTimezone(String? text);
-    method public final Self setStartDate(androidx.appactions.builtintypes.properties.StartDate? startDate);
-    method public final Self setStartTime(androidx.appactions.builtintypes.properties.StartTime? startTime);
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property protected abstract String selfTypeName;
-  }
-
-  public abstract class GenericThing<Self extends androidx.appactions.builtintypes.types.GenericThing<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.GenericThing.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Thing {
-    ctor public GenericThing(androidx.appactions.builtintypes.types.Thing thing);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
-    method public final String? getIdentifier();
-    method public final androidx.appactions.builtintypes.properties.Name? getName();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Builder toBuilder();
-    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
-    property public final String? identifier;
-    property public final androidx.appactions.builtintypes.properties.Name? name;
-    property protected abstract String selfTypeName;
-  }
-
-  public abstract static class GenericThing.Builder<Self extends androidx.appactions.builtintypes.types.GenericThing.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.GenericThing<Built, Self>> implements androidx.appactions.builtintypes.types.Thing.Builder<Self> {
-    ctor public GenericThing.Builder();
-    method public final Built build();
-    method protected abstract Built buildFromThing(androidx.appactions.builtintypes.types.Thing thing);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
-    method public final Self setIdentifier(String? text);
-    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property protected abstract String selfTypeName;
-  }
-
-  public abstract class GenericTimer<Self extends androidx.appactions.builtintypes.types.GenericTimer<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.GenericTimer.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Timer {
-    ctor public GenericTimer(androidx.appactions.builtintypes.types.Timer timer);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
-    method public final java.time.Duration? getDuration();
-    method public final String? getIdentifier();
-    method public final androidx.appactions.builtintypes.properties.Name? getName();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Builder toBuilder();
-    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
-    property public final java.time.Duration? duration;
-    property public final String? identifier;
-    property public final androidx.appactions.builtintypes.properties.Name? name;
-    property protected abstract String selfTypeName;
-  }
-
-  public abstract static class GenericTimer.Builder<Self extends androidx.appactions.builtintypes.types.GenericTimer.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.GenericTimer<Built, Self>> implements androidx.appactions.builtintypes.types.Timer.Builder<Self> {
-    ctor public GenericTimer.Builder();
-    method public final Built build();
-    method protected abstract Built buildFromTimer(androidx.appactions.builtintypes.types.Timer timer);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
-    method public final Self setDuration(java.time.Duration? duration);
-    method public final Self setIdentifier(String? text);
-    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property protected abstract String selfTypeName;
+  public static final class GenericErrorStatus.Companion {
+    method public androidx.appactions.builtintypes.types.GenericErrorStatus.Builder<?> Builder();
   }
 
   public interface Intangible extends androidx.appactions.builtintypes.types.Thing {
@@ -499,6 +702,20 @@
     method public androidx.appactions.builtintypes.types.Intangible.Builder<?> Builder();
   }
 
+  public interface ObjectCreationLimitReachedStatus extends androidx.appactions.builtintypes.types.ExecutionStatus {
+    method public default static androidx.appactions.builtintypes.types.ObjectCreationLimitReachedStatus.Builder<?> Builder();
+    method public androidx.appactions.builtintypes.types.ObjectCreationLimitReachedStatus.Builder<?> toBuilder();
+    field public static final androidx.appactions.builtintypes.types.ObjectCreationLimitReachedStatus.Companion Companion;
+  }
+
+  public static interface ObjectCreationLimitReachedStatus.Builder<Self extends androidx.appactions.builtintypes.types.ObjectCreationLimitReachedStatus.Builder<Self>> extends androidx.appactions.builtintypes.types.ExecutionStatus.Builder<Self> {
+    method public androidx.appactions.builtintypes.types.ObjectCreationLimitReachedStatus build();
+  }
+
+  public static final class ObjectCreationLimitReachedStatus.Companion {
+    method public androidx.appactions.builtintypes.types.ObjectCreationLimitReachedStatus.Builder<?> Builder();
+  }
+
   public interface Person extends androidx.appactions.builtintypes.types.Thing {
     method public default static androidx.appactions.builtintypes.types.Person.Builder<?> Builder();
     method public String? getEmail();
@@ -593,6 +810,20 @@
     method public androidx.appactions.builtintypes.types.Schedule.Builder<?> Builder();
   }
 
+  public interface SuccessStatus extends androidx.appactions.builtintypes.types.ExecutionStatus {
+    method public default static androidx.appactions.builtintypes.types.SuccessStatus.Builder<?> Builder();
+    method public androidx.appactions.builtintypes.types.SuccessStatus.Builder<?> toBuilder();
+    field public static final androidx.appactions.builtintypes.types.SuccessStatus.Companion Companion;
+  }
+
+  public static interface SuccessStatus.Builder<Self extends androidx.appactions.builtintypes.types.SuccessStatus.Builder<Self>> extends androidx.appactions.builtintypes.types.ExecutionStatus.Builder<Self> {
+    method public androidx.appactions.builtintypes.types.SuccessStatus build();
+  }
+
+  public static final class SuccessStatus.Companion {
+    method public androidx.appactions.builtintypes.types.SuccessStatus.Builder<?> Builder();
+  }
+
   public interface Thing {
     method public default static androidx.appactions.builtintypes.types.Thing.Builder<?> Builder();
     method public androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
@@ -635,5 +866,19 @@
     method public androidx.appactions.builtintypes.types.Timer.Builder<?> Builder();
   }
 
+  public interface UnsupportedOperationStatus extends androidx.appactions.builtintypes.types.ExecutionStatus {
+    method public default static androidx.appactions.builtintypes.types.UnsupportedOperationStatus.Builder<?> Builder();
+    method public androidx.appactions.builtintypes.types.UnsupportedOperationStatus.Builder<?> toBuilder();
+    field public static final androidx.appactions.builtintypes.types.UnsupportedOperationStatus.Companion Companion;
+  }
+
+  public static interface UnsupportedOperationStatus.Builder<Self extends androidx.appactions.builtintypes.types.UnsupportedOperationStatus.Builder<Self>> extends androidx.appactions.builtintypes.types.ExecutionStatus.Builder<Self> {
+    method public androidx.appactions.builtintypes.types.UnsupportedOperationStatus build();
+  }
+
+  public static final class UnsupportedOperationStatus.Companion {
+    method public androidx.appactions.builtintypes.types.UnsupportedOperationStatus.Builder<?> Builder();
+  }
+
 }
 
diff --git a/appactions/builtintypes/builtintypes-core/api/restricted_current.txt b/appactions/builtintypes/builtintypes-core/api/restricted_current.txt
index 4033c72..09eaecb 100644
--- a/appactions/builtintypes/builtintypes-core/api/restricted_current.txt
+++ b/appactions/builtintypes/builtintypes-core/api/restricted_current.txt
@@ -164,6 +164,444 @@
 
 package androidx.appactions.builtintypes.types {
 
+  public abstract class AbstractAlarm<Self extends androidx.appactions.builtintypes.types.AbstractAlarm<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractAlarm.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Alarm {
+    ctor public AbstractAlarm(androidx.appactions.builtintypes.types.Alarm alarm);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final androidx.appactions.builtintypes.types.Schedule? getAlarmSchedule();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final androidx.appactions.builtintypes.types.Schedule? alarmSchedule;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract static class AbstractAlarm.Builder<Self extends androidx.appactions.builtintypes.types.AbstractAlarm.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractAlarm<Built, Self>> implements androidx.appactions.builtintypes.types.Alarm.Builder<Self> {
+    ctor public AbstractAlarm.Builder();
+    method public final Built build();
+    method protected abstract Built buildFromAlarm(androidx.appactions.builtintypes.types.Alarm alarm);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setAlarmSchedule(androidx.appactions.builtintypes.types.Schedule? schedule);
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract class AbstractExecutionStatus<Self extends androidx.appactions.builtintypes.types.AbstractExecutionStatus<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractExecutionStatus.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.ExecutionStatus {
+    ctor public AbstractExecutionStatus(androidx.appactions.builtintypes.types.ExecutionStatus executionStatus);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract static class AbstractExecutionStatus.Builder<Self extends androidx.appactions.builtintypes.types.AbstractExecutionStatus.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractExecutionStatus<Built, Self>> implements androidx.appactions.builtintypes.types.ExecutionStatus.Builder<Self> {
+    ctor public AbstractExecutionStatus.Builder();
+    method public final Built build();
+    method protected abstract Built buildFromExecutionStatus(androidx.appactions.builtintypes.types.ExecutionStatus executionStatus);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract class AbstractGenericErrorStatus<Self extends androidx.appactions.builtintypes.types.AbstractGenericErrorStatus<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractGenericErrorStatus.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.GenericErrorStatus {
+    ctor public AbstractGenericErrorStatus(androidx.appactions.builtintypes.types.GenericErrorStatus genericErrorStatus);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract static class AbstractGenericErrorStatus.Builder<Self extends androidx.appactions.builtintypes.types.AbstractGenericErrorStatus.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractGenericErrorStatus<Built, Self>> implements androidx.appactions.builtintypes.types.GenericErrorStatus.Builder<Self> {
+    ctor public AbstractGenericErrorStatus.Builder();
+    method public final Built build();
+    method protected abstract Built buildFromGenericErrorStatus(androidx.appactions.builtintypes.types.GenericErrorStatus genericErrorStatus);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract class AbstractIntangible<Self extends androidx.appactions.builtintypes.types.AbstractIntangible<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractIntangible.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Intangible {
+    ctor public AbstractIntangible(androidx.appactions.builtintypes.types.Intangible intangible);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract static class AbstractIntangible.Builder<Self extends androidx.appactions.builtintypes.types.AbstractIntangible.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractIntangible<Built, Self>> implements androidx.appactions.builtintypes.types.Intangible.Builder<Self> {
+    ctor public AbstractIntangible.Builder();
+    method public final Built build();
+    method protected abstract Built buildFromIntangible(androidx.appactions.builtintypes.types.Intangible intangible);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract class AbstractObjectCreationLimitReachedStatus<Self extends androidx.appactions.builtintypes.types.AbstractObjectCreationLimitReachedStatus<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractObjectCreationLimitReachedStatus.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.ObjectCreationLimitReachedStatus {
+    ctor public AbstractObjectCreationLimitReachedStatus(androidx.appactions.builtintypes.types.ObjectCreationLimitReachedStatus objectCreationLimitReachedStatus);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract static class AbstractObjectCreationLimitReachedStatus.Builder<Self extends androidx.appactions.builtintypes.types.AbstractObjectCreationLimitReachedStatus.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractObjectCreationLimitReachedStatus<Built, Self>> implements androidx.appactions.builtintypes.types.ObjectCreationLimitReachedStatus.Builder<Self> {
+    ctor public AbstractObjectCreationLimitReachedStatus.Builder();
+    method public final Built build();
+    method protected abstract Built buildFromObjectCreationLimitReachedStatus(androidx.appactions.builtintypes.types.ObjectCreationLimitReachedStatus objectCreationLimitReachedStatus);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract class AbstractPerson<Self extends androidx.appactions.builtintypes.types.AbstractPerson<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractPerson.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Person {
+    ctor public AbstractPerson(androidx.appactions.builtintypes.types.Person person);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final String? getEmail();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final String? email;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract static class AbstractPerson.Builder<Self extends androidx.appactions.builtintypes.types.AbstractPerson.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractPerson<Built, Self>> implements androidx.appactions.builtintypes.types.Person.Builder<Self> {
+    ctor public AbstractPerson.Builder();
+    method public final Built build();
+    method protected abstract Built buildFromPerson(androidx.appactions.builtintypes.types.Person person);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setEmail(String? text);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract class AbstractSchedule<Self extends androidx.appactions.builtintypes.types.AbstractSchedule<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractSchedule.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Schedule {
+    ctor public AbstractSchedule(androidx.appactions.builtintypes.types.Schedule schedule);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final java.util.List<androidx.appactions.builtintypes.properties.ByDay> getByDays();
+    method public final java.util.List<java.lang.Long> getByMonthDays();
+    method public final java.util.List<java.lang.Long> getByMonthWeeks();
+    method public final java.util.List<java.lang.Long> getByMonths();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final androidx.appactions.builtintypes.properties.EndDate? getEndDate();
+    method public final androidx.appactions.builtintypes.properties.EndTime? getEndTime();
+    method public final androidx.appactions.builtintypes.properties.ExceptDate? getExceptDate();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method public final Long? getRepeatCount();
+    method public final androidx.appactions.builtintypes.properties.RepeatFrequency? getRepeatFrequency();
+    method public final String? getScheduleTimezone();
+    method protected abstract String getSelfTypeName();
+    method public final androidx.appactions.builtintypes.properties.StartDate? getStartDate();
+    method public final androidx.appactions.builtintypes.properties.StartTime? getStartTime();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final java.util.List<androidx.appactions.builtintypes.properties.ByDay> byDays;
+    property public final java.util.List<java.lang.Long> byMonthDays;
+    property public final java.util.List<java.lang.Long> byMonthWeeks;
+    property public final java.util.List<java.lang.Long> byMonths;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final androidx.appactions.builtintypes.properties.EndDate? endDate;
+    property public final androidx.appactions.builtintypes.properties.EndTime? endTime;
+    property public final androidx.appactions.builtintypes.properties.ExceptDate? exceptDate;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property public final Long? repeatCount;
+    property public final androidx.appactions.builtintypes.properties.RepeatFrequency? repeatFrequency;
+    property public final String? scheduleTimezone;
+    property protected abstract String selfTypeName;
+    property public final androidx.appactions.builtintypes.properties.StartDate? startDate;
+    property public final androidx.appactions.builtintypes.properties.StartTime? startTime;
+  }
+
+  public abstract static class AbstractSchedule.Builder<Self extends androidx.appactions.builtintypes.types.AbstractSchedule.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractSchedule<Built, Self>> implements androidx.appactions.builtintypes.types.Schedule.Builder<Self> {
+    ctor public AbstractSchedule.Builder();
+    method public final Self addByDay(androidx.appactions.builtintypes.properties.ByDay byDay);
+    method public final Self addByDays(Iterable<androidx.appactions.builtintypes.properties.ByDay> values);
+    method public final Self addByMonth(long integer);
+    method public final Self addByMonthDay(long integer);
+    method public final Self addByMonthDays(Iterable<java.lang.Long> values);
+    method public final Self addByMonthWeek(long integer);
+    method public final Self addByMonthWeeks(Iterable<java.lang.Long> values);
+    method public final Self addByMonths(Iterable<java.lang.Long> values);
+    method public final Built build();
+    method protected abstract Built buildFromSchedule(androidx.appactions.builtintypes.types.Schedule schedule);
+    method public final Self clearByDays();
+    method public final Self clearByMonthDays();
+    method public final Self clearByMonthWeeks();
+    method public final Self clearByMonths();
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setEndDate(androidx.appactions.builtintypes.properties.EndDate? endDate);
+    method public final Self setEndTime(androidx.appactions.builtintypes.properties.EndTime? endTime);
+    method public final Self setExceptDate(androidx.appactions.builtintypes.properties.ExceptDate? exceptDate);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final Self setRepeatCount(Long? integer);
+    method public final Self setRepeatFrequency(androidx.appactions.builtintypes.properties.RepeatFrequency? repeatFrequency);
+    method public final Self setScheduleTimezone(String? text);
+    method public final Self setStartDate(androidx.appactions.builtintypes.properties.StartDate? startDate);
+    method public final Self setStartTime(androidx.appactions.builtintypes.properties.StartTime? startTime);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract class AbstractSuccessStatus<Self extends androidx.appactions.builtintypes.types.AbstractSuccessStatus<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractSuccessStatus.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.SuccessStatus {
+    ctor public AbstractSuccessStatus(androidx.appactions.builtintypes.types.SuccessStatus successStatus);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract static class AbstractSuccessStatus.Builder<Self extends androidx.appactions.builtintypes.types.AbstractSuccessStatus.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractSuccessStatus<Built, Self>> implements androidx.appactions.builtintypes.types.SuccessStatus.Builder<Self> {
+    ctor public AbstractSuccessStatus.Builder();
+    method public final Built build();
+    method protected abstract Built buildFromSuccessStatus(androidx.appactions.builtintypes.types.SuccessStatus successStatus);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract class AbstractThing<Self extends androidx.appactions.builtintypes.types.AbstractThing<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractThing.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Thing {
+    ctor public AbstractThing(androidx.appactions.builtintypes.types.Thing thing);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract static class AbstractThing.Builder<Self extends androidx.appactions.builtintypes.types.AbstractThing.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractThing<Built, Self>> implements androidx.appactions.builtintypes.types.Thing.Builder<Self> {
+    ctor public AbstractThing.Builder();
+    method public final Built build();
+    method protected abstract Built buildFromThing(androidx.appactions.builtintypes.types.Thing thing);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract class AbstractTimer<Self extends androidx.appactions.builtintypes.types.AbstractTimer<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractTimer.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Timer {
+    ctor public AbstractTimer(androidx.appactions.builtintypes.types.Timer timer);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final java.time.Duration? getDuration();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final java.time.Duration? duration;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract static class AbstractTimer.Builder<Self extends androidx.appactions.builtintypes.types.AbstractTimer.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractTimer<Built, Self>> implements androidx.appactions.builtintypes.types.Timer.Builder<Self> {
+    ctor public AbstractTimer.Builder();
+    method public final Built build();
+    method protected abstract Built buildFromTimer(androidx.appactions.builtintypes.types.Timer timer);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setDuration(java.time.Duration? duration);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract class AbstractUnsupportedOperationStatus<Self extends androidx.appactions.builtintypes.types.AbstractUnsupportedOperationStatus<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.AbstractUnsupportedOperationStatus.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.UnsupportedOperationStatus {
+    ctor public AbstractUnsupportedOperationStatus(androidx.appactions.builtintypes.types.UnsupportedOperationStatus unsupportedOperationStatus);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
+    method public final String? getIdentifier();
+    method public final androidx.appactions.builtintypes.properties.Name? getName();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Builder toBuilder();
+    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
+    property public final String? identifier;
+    property public final androidx.appactions.builtintypes.properties.Name? name;
+    property protected abstract String selfTypeName;
+  }
+
+  public abstract static class AbstractUnsupportedOperationStatus.Builder<Self extends androidx.appactions.builtintypes.types.AbstractUnsupportedOperationStatus.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.AbstractUnsupportedOperationStatus<Built, Self>> implements androidx.appactions.builtintypes.types.UnsupportedOperationStatus.Builder<Self> {
+    ctor public AbstractUnsupportedOperationStatus.Builder();
+    method public final Built build();
+    method protected abstract Built buildFromUnsupportedOperationStatus(androidx.appactions.builtintypes.types.UnsupportedOperationStatus unsupportedOperationStatus);
+    method public final boolean equals(Object? other);
+    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
+    method protected abstract String getSelfTypeName();
+    method public final int hashCode();
+    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
+    method public final Self setIdentifier(String? text);
+    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
+    method public final String toString();
+    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
+    property protected abstract String selfTypeName;
+  }
+
   public interface Alarm extends androidx.appactions.builtintypes.types.Thing {
     method public default static androidx.appactions.builtintypes.types.Alarm.Builder<?> Builder();
     method public androidx.appactions.builtintypes.types.Schedule? getAlarmSchedule();
@@ -222,267 +660,32 @@
     method public default R wednesday();
   }
 
-  public abstract class GenericAlarm<Self extends androidx.appactions.builtintypes.types.GenericAlarm<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.GenericAlarm.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Alarm {
-    ctor public GenericAlarm(androidx.appactions.builtintypes.types.Alarm alarm);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method public final androidx.appactions.builtintypes.types.Schedule? getAlarmSchedule();
-    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
-    method public final String? getIdentifier();
-    method public final androidx.appactions.builtintypes.properties.Name? getName();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Builder toBuilder();
-    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property public final androidx.appactions.builtintypes.types.Schedule? alarmSchedule;
-    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
-    property public final String? identifier;
-    property public final androidx.appactions.builtintypes.properties.Name? name;
-    property protected abstract String selfTypeName;
+  public interface ExecutionStatus extends androidx.appactions.builtintypes.types.Intangible {
+    method public default static androidx.appactions.builtintypes.types.ExecutionStatus.Builder<?> Builder();
+    method public androidx.appactions.builtintypes.types.ExecutionStatus.Builder<?> toBuilder();
+    field public static final androidx.appactions.builtintypes.types.ExecutionStatus.Companion Companion;
   }
 
-  public abstract static class GenericAlarm.Builder<Self extends androidx.appactions.builtintypes.types.GenericAlarm.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.GenericAlarm<Built, Self>> implements androidx.appactions.builtintypes.types.Alarm.Builder<Self> {
-    ctor public GenericAlarm.Builder();
-    method public final Built build();
-    method protected abstract Built buildFromAlarm(androidx.appactions.builtintypes.types.Alarm alarm);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Self setAlarmSchedule(androidx.appactions.builtintypes.types.Schedule? schedule);
-    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
-    method public final Self setIdentifier(String? text);
-    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property protected abstract String selfTypeName;
+  public static interface ExecutionStatus.Builder<Self extends androidx.appactions.builtintypes.types.ExecutionStatus.Builder<Self>> extends androidx.appactions.builtintypes.types.Intangible.Builder<Self> {
+    method public androidx.appactions.builtintypes.types.ExecutionStatus build();
   }
 
-  public abstract class GenericIntangible<Self extends androidx.appactions.builtintypes.types.GenericIntangible<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.GenericIntangible.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Intangible {
-    ctor public GenericIntangible(androidx.appactions.builtintypes.types.Intangible intangible);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
-    method public final String? getIdentifier();
-    method public final androidx.appactions.builtintypes.properties.Name? getName();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Builder toBuilder();
-    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
-    property public final String? identifier;
-    property public final androidx.appactions.builtintypes.properties.Name? name;
-    property protected abstract String selfTypeName;
+  public static final class ExecutionStatus.Companion {
+    method public androidx.appactions.builtintypes.types.ExecutionStatus.Builder<?> Builder();
   }
 
-  public abstract static class GenericIntangible.Builder<Self extends androidx.appactions.builtintypes.types.GenericIntangible.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.GenericIntangible<Built, Self>> implements androidx.appactions.builtintypes.types.Intangible.Builder<Self> {
-    ctor public GenericIntangible.Builder();
-    method public final Built build();
-    method protected abstract Built buildFromIntangible(androidx.appactions.builtintypes.types.Intangible intangible);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
-    method public final Self setIdentifier(String? text);
-    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property protected abstract String selfTypeName;
+  public interface GenericErrorStatus extends androidx.appactions.builtintypes.types.ExecutionStatus {
+    method public default static androidx.appactions.builtintypes.types.GenericErrorStatus.Builder<?> Builder();
+    method public androidx.appactions.builtintypes.types.GenericErrorStatus.Builder<?> toBuilder();
+    field public static final androidx.appactions.builtintypes.types.GenericErrorStatus.Companion Companion;
   }
 
-  public abstract class GenericPerson<Self extends androidx.appactions.builtintypes.types.GenericPerson<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.GenericPerson.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Person {
-    ctor public GenericPerson(androidx.appactions.builtintypes.types.Person person);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
-    method public final String? getEmail();
-    method public final String? getIdentifier();
-    method public final androidx.appactions.builtintypes.properties.Name? getName();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Builder toBuilder();
-    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
-    property public final String? email;
-    property public final String? identifier;
-    property public final androidx.appactions.builtintypes.properties.Name? name;
-    property protected abstract String selfTypeName;
+  public static interface GenericErrorStatus.Builder<Self extends androidx.appactions.builtintypes.types.GenericErrorStatus.Builder<Self>> extends androidx.appactions.builtintypes.types.ExecutionStatus.Builder<Self> {
+    method public androidx.appactions.builtintypes.types.GenericErrorStatus build();
   }
 
-  public abstract static class GenericPerson.Builder<Self extends androidx.appactions.builtintypes.types.GenericPerson.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.GenericPerson<Built, Self>> implements androidx.appactions.builtintypes.types.Person.Builder<Self> {
-    ctor public GenericPerson.Builder();
-    method public final Built build();
-    method protected abstract Built buildFromPerson(androidx.appactions.builtintypes.types.Person person);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
-    method public final Self setEmail(String? text);
-    method public final Self setIdentifier(String? text);
-    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property protected abstract String selfTypeName;
-  }
-
-  public abstract class GenericSchedule<Self extends androidx.appactions.builtintypes.types.GenericSchedule<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.GenericSchedule.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Schedule {
-    ctor public GenericSchedule(androidx.appactions.builtintypes.types.Schedule schedule);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method public final java.util.List<androidx.appactions.builtintypes.properties.ByDay> getByDays();
-    method public final java.util.List<java.lang.Long> getByMonthDays();
-    method public final java.util.List<java.lang.Long> getByMonthWeeks();
-    method public final java.util.List<java.lang.Long> getByMonths();
-    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
-    method public final androidx.appactions.builtintypes.properties.EndDate? getEndDate();
-    method public final androidx.appactions.builtintypes.properties.EndTime? getEndTime();
-    method public final androidx.appactions.builtintypes.properties.ExceptDate? getExceptDate();
-    method public final String? getIdentifier();
-    method public final androidx.appactions.builtintypes.properties.Name? getName();
-    method public final Long? getRepeatCount();
-    method public final androidx.appactions.builtintypes.properties.RepeatFrequency? getRepeatFrequency();
-    method public final String? getScheduleTimezone();
-    method protected abstract String getSelfTypeName();
-    method public final androidx.appactions.builtintypes.properties.StartDate? getStartDate();
-    method public final androidx.appactions.builtintypes.properties.StartTime? getStartTime();
-    method public final int hashCode();
-    method public final Builder toBuilder();
-    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property public final java.util.List<androidx.appactions.builtintypes.properties.ByDay> byDays;
-    property public final java.util.List<java.lang.Long> byMonthDays;
-    property public final java.util.List<java.lang.Long> byMonthWeeks;
-    property public final java.util.List<java.lang.Long> byMonths;
-    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
-    property public final androidx.appactions.builtintypes.properties.EndDate? endDate;
-    property public final androidx.appactions.builtintypes.properties.EndTime? endTime;
-    property public final androidx.appactions.builtintypes.properties.ExceptDate? exceptDate;
-    property public final String? identifier;
-    property public final androidx.appactions.builtintypes.properties.Name? name;
-    property public final Long? repeatCount;
-    property public final androidx.appactions.builtintypes.properties.RepeatFrequency? repeatFrequency;
-    property public final String? scheduleTimezone;
-    property protected abstract String selfTypeName;
-    property public final androidx.appactions.builtintypes.properties.StartDate? startDate;
-    property public final androidx.appactions.builtintypes.properties.StartTime? startTime;
-  }
-
-  public abstract static class GenericSchedule.Builder<Self extends androidx.appactions.builtintypes.types.GenericSchedule.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.GenericSchedule<Built, Self>> implements androidx.appactions.builtintypes.types.Schedule.Builder<Self> {
-    ctor public GenericSchedule.Builder();
-    method public final Self addByDay(androidx.appactions.builtintypes.properties.ByDay byDay);
-    method public final Self addByDays(Iterable<androidx.appactions.builtintypes.properties.ByDay> values);
-    method public final Self addByMonth(long integer);
-    method public final Self addByMonthDay(long integer);
-    method public final Self addByMonthDays(Iterable<java.lang.Long> values);
-    method public final Self addByMonthWeek(long integer);
-    method public final Self addByMonthWeeks(Iterable<java.lang.Long> values);
-    method public final Self addByMonths(Iterable<java.lang.Long> values);
-    method public final Built build();
-    method protected abstract Built buildFromSchedule(androidx.appactions.builtintypes.types.Schedule schedule);
-    method public final Self clearByDays();
-    method public final Self clearByMonthDays();
-    method public final Self clearByMonthWeeks();
-    method public final Self clearByMonths();
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
-    method public final Self setEndDate(androidx.appactions.builtintypes.properties.EndDate? endDate);
-    method public final Self setEndTime(androidx.appactions.builtintypes.properties.EndTime? endTime);
-    method public final Self setExceptDate(androidx.appactions.builtintypes.properties.ExceptDate? exceptDate);
-    method public final Self setIdentifier(String? text);
-    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
-    method public final Self setRepeatCount(Long? integer);
-    method public final Self setRepeatFrequency(androidx.appactions.builtintypes.properties.RepeatFrequency? repeatFrequency);
-    method public final Self setScheduleTimezone(String? text);
-    method public final Self setStartDate(androidx.appactions.builtintypes.properties.StartDate? startDate);
-    method public final Self setStartTime(androidx.appactions.builtintypes.properties.StartTime? startTime);
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property protected abstract String selfTypeName;
-  }
-
-  public abstract class GenericThing<Self extends androidx.appactions.builtintypes.types.GenericThing<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.GenericThing.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Thing {
-    ctor public GenericThing(androidx.appactions.builtintypes.types.Thing thing);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
-    method public final String? getIdentifier();
-    method public final androidx.appactions.builtintypes.properties.Name? getName();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Builder toBuilder();
-    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
-    property public final String? identifier;
-    property public final androidx.appactions.builtintypes.properties.Name? name;
-    property protected abstract String selfTypeName;
-  }
-
-  public abstract static class GenericThing.Builder<Self extends androidx.appactions.builtintypes.types.GenericThing.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.GenericThing<Built, Self>> implements androidx.appactions.builtintypes.types.Thing.Builder<Self> {
-    ctor public GenericThing.Builder();
-    method public final Built build();
-    method protected abstract Built buildFromThing(androidx.appactions.builtintypes.types.Thing thing);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
-    method public final Self setIdentifier(String? text);
-    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property protected abstract String selfTypeName;
-  }
-
-  public abstract class GenericTimer<Self extends androidx.appactions.builtintypes.types.GenericTimer<Self, Builder>, Builder extends androidx.appactions.builtintypes.types.GenericTimer.Builder<Builder, Self>> implements androidx.appactions.builtintypes.types.Timer {
-    ctor public GenericTimer(androidx.appactions.builtintypes.types.Timer timer);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
-    method public final java.time.Duration? getDuration();
-    method public final String? getIdentifier();
-    method public final androidx.appactions.builtintypes.properties.Name? getName();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Builder toBuilder();
-    method protected abstract Builder toBuilderWithAdditionalPropertiesOnly();
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property public final androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription;
-    property public final java.time.Duration? duration;
-    property public final String? identifier;
-    property public final androidx.appactions.builtintypes.properties.Name? name;
-    property protected abstract String selfTypeName;
-  }
-
-  public abstract static class GenericTimer.Builder<Self extends androidx.appactions.builtintypes.types.GenericTimer.Builder<Self, Built>, Built extends androidx.appactions.builtintypes.types.GenericTimer<Built, Self>> implements androidx.appactions.builtintypes.types.Timer.Builder<Self> {
-    ctor public GenericTimer.Builder();
-    method public final Built build();
-    method protected abstract Built buildFromTimer(androidx.appactions.builtintypes.types.Timer timer);
-    method public final boolean equals(Object? other);
-    method protected abstract java.util.Map<java.lang.String,java.lang.Object> getAdditionalProperties();
-    method protected abstract String getSelfTypeName();
-    method public final int hashCode();
-    method public final Self setDisambiguatingDescription(androidx.appactions.builtintypes.properties.DisambiguatingDescription? disambiguatingDescription);
-    method public final Self setDuration(java.time.Duration? duration);
-    method public final Self setIdentifier(String? text);
-    method public final Self setName(androidx.appactions.builtintypes.properties.Name? name);
-    method public final String toString();
-    property protected abstract java.util.Map<java.lang.String,java.lang.Object> additionalProperties;
-    property protected abstract String selfTypeName;
+  public static final class GenericErrorStatus.Companion {
+    method public androidx.appactions.builtintypes.types.GenericErrorStatus.Builder<?> Builder();
   }
 
   public interface Intangible extends androidx.appactions.builtintypes.types.Thing {
@@ -499,6 +702,20 @@
     method public androidx.appactions.builtintypes.types.Intangible.Builder<?> Builder();
   }
 
+  public interface ObjectCreationLimitReachedStatus extends androidx.appactions.builtintypes.types.ExecutionStatus {
+    method public default static androidx.appactions.builtintypes.types.ObjectCreationLimitReachedStatus.Builder<?> Builder();
+    method public androidx.appactions.builtintypes.types.ObjectCreationLimitReachedStatus.Builder<?> toBuilder();
+    field public static final androidx.appactions.builtintypes.types.ObjectCreationLimitReachedStatus.Companion Companion;
+  }
+
+  public static interface ObjectCreationLimitReachedStatus.Builder<Self extends androidx.appactions.builtintypes.types.ObjectCreationLimitReachedStatus.Builder<Self>> extends androidx.appactions.builtintypes.types.ExecutionStatus.Builder<Self> {
+    method public androidx.appactions.builtintypes.types.ObjectCreationLimitReachedStatus build();
+  }
+
+  public static final class ObjectCreationLimitReachedStatus.Companion {
+    method public androidx.appactions.builtintypes.types.ObjectCreationLimitReachedStatus.Builder<?> Builder();
+  }
+
   public interface Person extends androidx.appactions.builtintypes.types.Thing {
     method public default static androidx.appactions.builtintypes.types.Person.Builder<?> Builder();
     method public String? getEmail();
@@ -593,6 +810,20 @@
     method public androidx.appactions.builtintypes.types.Schedule.Builder<?> Builder();
   }
 
+  public interface SuccessStatus extends androidx.appactions.builtintypes.types.ExecutionStatus {
+    method public default static androidx.appactions.builtintypes.types.SuccessStatus.Builder<?> Builder();
+    method public androidx.appactions.builtintypes.types.SuccessStatus.Builder<?> toBuilder();
+    field public static final androidx.appactions.builtintypes.types.SuccessStatus.Companion Companion;
+  }
+
+  public static interface SuccessStatus.Builder<Self extends androidx.appactions.builtintypes.types.SuccessStatus.Builder<Self>> extends androidx.appactions.builtintypes.types.ExecutionStatus.Builder<Self> {
+    method public androidx.appactions.builtintypes.types.SuccessStatus build();
+  }
+
+  public static final class SuccessStatus.Companion {
+    method public androidx.appactions.builtintypes.types.SuccessStatus.Builder<?> Builder();
+  }
+
   public interface Thing {
     method public default static androidx.appactions.builtintypes.types.Thing.Builder<?> Builder();
     method public androidx.appactions.builtintypes.properties.DisambiguatingDescription? getDisambiguatingDescription();
@@ -635,5 +866,19 @@
     method public androidx.appactions.builtintypes.types.Timer.Builder<?> Builder();
   }
 
+  public interface UnsupportedOperationStatus extends androidx.appactions.builtintypes.types.ExecutionStatus {
+    method public default static androidx.appactions.builtintypes.types.UnsupportedOperationStatus.Builder<?> Builder();
+    method public androidx.appactions.builtintypes.types.UnsupportedOperationStatus.Builder<?> toBuilder();
+    field public static final androidx.appactions.builtintypes.types.UnsupportedOperationStatus.Companion Companion;
+  }
+
+  public static interface UnsupportedOperationStatus.Builder<Self extends androidx.appactions.builtintypes.types.UnsupportedOperationStatus.Builder<Self>> extends androidx.appactions.builtintypes.types.ExecutionStatus.Builder<Self> {
+    method public androidx.appactions.builtintypes.types.UnsupportedOperationStatus build();
+  }
+
+  public static final class UnsupportedOperationStatus.Companion {
+    method public androidx.appactions.builtintypes.types.UnsupportedOperationStatus.Builder<?> Builder();
+  }
+
 }
 
diff --git a/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Alarm.kt b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Alarm.kt
index fff77c1..6f1a4dd 100644
--- a/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Alarm.kt
+++ b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Alarm.kt
@@ -36,10 +36,14 @@
  * See http://schema.googleapis.com/Alarm for context.
  *
  * Should not be directly implemented. More properties may be added over time. Instead consider
- * using [Companion.Builder] or see [GenericAlarm] if you need to extend this type.
+ * using [Companion.Builder] or see [AbstractAlarm] if you need to extend this type.
  */
 public interface Alarm : Thing {
-  /** Associates an Alarm with a Schedule. */
+  /**
+   * Associates an Alarm with a Schedule.
+   *
+   * See http://schema.googleapis.com/alarmSchedule for more context.
+   */
   public val alarmSchedule: Schedule?
 
   /** Converts this [Alarm] to its builder with all the properties copied over. */
@@ -54,7 +58,7 @@
    * Builder for [Alarm].
    *
    * Should not be directly implemented. More methods may be added over time. See
-   * [GenericAlarm.Builder] if you need to extend this builder.
+   * [AbstractAlarm.Builder] if you need to extend this builder.
    */
   public interface Builder<Self : Builder<Self>> : Thing.Builder<Self> {
     /** Returns a built [Alarm]. */
@@ -90,7 +94,7 @@
 }
 
 /**
- * A generic implementation of [Alarm].
+ * An abstract implementation of [Alarm].
  *
  * Allows for extension like:
  * ```kt
@@ -98,7 +102,7 @@
  *   alarm: Alarm,
  *   val foo: String,
  *   val bars: List<Int>,
- * ) : GenericAlarm<
+ * ) : AbstractAlarm<
  *   MyAlarm,
  *   MyAlarm.Builder
  * >(alarm) {
@@ -116,17 +120,17 @@
  *   }
  *
  *   class Builder :
- *     GenericAlarm.Builder<
+ *     AbstractAlarm.Builder<
  *       Builder,
  *       MyAlarm> {...}
  * }
  * ```
  *
- * Also see [GenericAlarm.Builder].
+ * Also see [AbstractAlarm.Builder].
  */
 @Suppress("UNCHECKED_CAST")
-public abstract class GenericAlarm<
-  Self : GenericAlarm<Self, Builder>, Builder : GenericAlarm.Builder<Builder, Self>>
+public abstract class AbstractAlarm<
+  Self : AbstractAlarm<Self, Builder>, Builder : AbstractAlarm.Builder<Builder, Self>>
 internal constructor(
   public final override val alarmSchedule: Schedule?,
   public final override val disambiguatingDescription: DisambiguatingDescription?,
@@ -198,12 +202,12 @@
   }
 
   /**
-   * A generic implementation of [Alarm.Builder].
+   * An abstract implementation of [Alarm.Builder].
    *
    * Allows for extension like:
    * ```kt
    * class MyAlarm :
-   *   : GenericAlarm<
+   *   : AbstractAlarm<
    *     MyAlarm,
    *     MyAlarm.Builder>(...) {
    *
@@ -246,10 +250,10 @@
    * }
    * ```
    *
-   * Also see [GenericAlarm].
+   * Also see [AbstractAlarm].
    */
   @Suppress("StaticFinalBuilder")
-  public abstract class Builder<Self : Builder<Self, Built>, Built : GenericAlarm<Built, Self>> :
+  public abstract class Builder<Self : Builder<Self, Built>, Built : AbstractAlarm<Built, Self>> :
     Alarm.Builder<Self> {
     /**
      * Human readable name for the concrete [Self] class.
@@ -349,7 +353,7 @@
   }
 }
 
-internal class AlarmImpl : GenericAlarm<AlarmImpl, AlarmImpl.Builder> {
+internal class AlarmImpl : AbstractAlarm<AlarmImpl, AlarmImpl.Builder> {
   protected override val selfTypeName: String
     get() = "Alarm"
 
@@ -367,7 +371,7 @@
 
   protected override fun toBuilderWithAdditionalPropertiesOnly(): Builder = Builder()
 
-  internal class Builder : GenericAlarm.Builder<Builder, AlarmImpl>() {
+  internal class Builder : AbstractAlarm.Builder<Builder, AlarmImpl>() {
     protected override val selfTypeName: String
       get() = "Alarm.Builder"
 
diff --git a/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/ExecutionStatus.kt b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/ExecutionStatus.kt
new file mode 100644
index 0000000..fcd7b3a
--- /dev/null
+++ b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/ExecutionStatus.kt
@@ -0,0 +1,343 @@
+// Copyright 2023 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package androidx.appactions.builtintypes.types
+
+import androidx.appactions.builtintypes.properties.DisambiguatingDescription
+import androidx.appactions.builtintypes.properties.Name
+import java.util.Objects
+import kotlin.Any
+import kotlin.Boolean
+import kotlin.Int
+import kotlin.String
+import kotlin.Suppress
+import kotlin.collections.Map
+import kotlin.collections.emptyMap
+import kotlin.collections.joinToString
+import kotlin.collections.map
+import kotlin.collections.mutableMapOf
+import kotlin.collections.plusAssign
+import kotlin.jvm.JvmStatic
+
+/**
+ * Status of a task that was pending execution.
+ *
+ * See http://schema.googleapis.com/ExecutionStatus for context.
+ *
+ * Should not be directly implemented. More properties may be added over time. Instead consider
+ * using [Companion.Builder] or see [AbstractExecutionStatus] if you need to extend this type.
+ */
+public interface ExecutionStatus : Intangible {
+  /** Converts this [ExecutionStatus] to its builder with all the properties copied over. */
+  public override fun toBuilder(): Builder<*>
+
+  public companion object {
+    /** Returns a default implementation of [Builder] with no properties set. */
+    @JvmStatic public fun Builder(): Builder<*> = ExecutionStatusImpl.Builder()
+  }
+
+  /**
+   * Builder for [ExecutionStatus].
+   *
+   * Should not be directly implemented. More methods may be added over time. See
+   * [AbstractExecutionStatus.Builder] if you need to extend this builder.
+   */
+  public interface Builder<Self : Builder<Self>> : Intangible.Builder<Self> {
+    /** Returns a built [ExecutionStatus]. */
+    public override fun build(): ExecutionStatus
+  }
+}
+
+/**
+ * An abstract implementation of [ExecutionStatus].
+ *
+ * Allows for extension like:
+ * ```kt
+ * class MyExecutionStatus internal constructor(
+ *   executionStatus: ExecutionStatus,
+ *   val foo: String,
+ *   val bars: List<Int>,
+ * ) : AbstractExecutionStatus<
+ *   MyExecutionStatus,
+ *   MyExecutionStatus.Builder
+ * >(executionStatus) {
+ *
+ *   override val selfTypeName =
+ *     "MyExecutionStatus"
+ *
+ *   override val additionalProperties: Map<String, Any?>
+ *     get() = mapOf("foo" to foo, "bars" to bars)
+ *
+ *   override fun toBuilderWithAdditionalPropertiesOnly(): Builder {
+ *     return Builder()
+ *       .setFoo(foo)
+ *       .addBars(bars)
+ *   }
+ *
+ *   class Builder :
+ *     AbstractExecutionStatus.Builder<
+ *       Builder,
+ *       MyExecutionStatus> {...}
+ * }
+ * ```
+ *
+ * Also see [AbstractExecutionStatus.Builder].
+ */
+@Suppress("UNCHECKED_CAST")
+public abstract class AbstractExecutionStatus<
+  Self : AbstractExecutionStatus<Self, Builder>,
+  Builder : AbstractExecutionStatus.Builder<Builder, Self>>
+internal constructor(
+  public final override val disambiguatingDescription: DisambiguatingDescription?,
+  public final override val identifier: String?,
+  public final override val name: Name?,
+) : ExecutionStatus {
+  /**
+   * Human readable name for the concrete [Self] class.
+   *
+   * Used in the [toString] output.
+   */
+  protected abstract val selfTypeName: String
+
+  /**
+   * The additional properties that exist on the concrete [Self] class.
+   *
+   * Used for equality comparison and computing the hash code.
+   */
+  protected abstract val additionalProperties: Map<String, Any?>
+
+  /** A copy-constructor that copies over properties from another [ExecutionStatus] instance. */
+  public constructor(
+    executionStatus: ExecutionStatus
+  ) : this(
+    executionStatus.disambiguatingDescription,
+    executionStatus.identifier,
+    executionStatus.name
+  )
+
+  /**
+   * Returns a concrete [Builder] with the additional, non-[ExecutionStatus] properties copied over.
+   */
+  protected abstract fun toBuilderWithAdditionalPropertiesOnly(): Builder
+
+  public final override fun toBuilder(): Builder =
+    toBuilderWithAdditionalPropertiesOnly()
+      .setDisambiguatingDescription(disambiguatingDescription)
+      .setIdentifier(identifier)
+      .setName(name)
+
+  public final override fun equals(other: Any?): Boolean {
+    if (this === other) return true
+    if (other == null || this::class.java != other::class.java) return false
+    other as Self
+    if (disambiguatingDescription != other.disambiguatingDescription) return false
+    if (identifier != other.identifier) return false
+    if (name != other.name) return false
+    if (additionalProperties != other.additionalProperties) return false
+    return true
+  }
+
+  public final override fun hashCode(): Int =
+    Objects.hash(disambiguatingDescription, identifier, name, additionalProperties)
+
+  public final override fun toString(): String {
+    val attributes = mutableMapOf<String, String>()
+    if (disambiguatingDescription != null) {
+      attributes["disambiguatingDescription"] =
+        disambiguatingDescription.toString(includeWrapperName = false)
+    }
+    if (identifier != null) {
+      attributes["identifier"] = identifier
+    }
+    if (name != null) {
+      attributes["name"] = name.toString(includeWrapperName = false)
+    }
+    attributes += additionalProperties.map { (k, v) -> k to v.toString() }
+    val commaSeparated = attributes.entries.joinToString(separator = ", ") { (k, v) -> """$k=$v""" }
+    return """$selfTypeName($commaSeparated)"""
+  }
+
+  /**
+   * An abstract implementation of [ExecutionStatus.Builder].
+   *
+   * Allows for extension like:
+   * ```kt
+   * class MyExecutionStatus :
+   *   : AbstractExecutionStatus<
+   *     MyExecutionStatus,
+   *     MyExecutionStatus.Builder>(...) {
+   *
+   *   class Builder
+   *   : Builder<
+   *       Builder,
+   *       MyExecutionStatus
+   *   >() {
+   *     private var foo: String? = null
+   *     private val bars = mutableListOf<Int>()
+   *
+   *     override val selfTypeName =
+   *       "MyExecutionStatus.Builder"
+   *
+   *     override val additionalProperties: Map<String, Any?>
+   *       get() = mapOf("foo" to foo, "bars" to bars)
+   *
+   *     override fun buildFromExecutionStatus(
+   *       executionStatus: ExecutionStatus
+   *     ): MyExecutionStatus {
+   *       return MyExecutionStatus(
+   *         executionStatus,
+   *         foo,
+   *         bars.toList()
+   *       )
+   *     }
+   *
+   *     fun setFoo(string: String): Builder {
+   *       return apply { foo = string }
+   *     }
+   *
+   *     fun addBar(int: Int): Builder {
+   *       return apply { bars += int }
+   *     }
+   *
+   *     fun addBars(values: Iterable<Int>): Builder {
+   *       return apply { bars += values }
+   *     }
+   *   }
+   * }
+   * ```
+   *
+   * Also see [AbstractExecutionStatus].
+   */
+  @Suppress("StaticFinalBuilder")
+  public abstract class Builder<
+    Self : Builder<Self, Built>, Built : AbstractExecutionStatus<Built, Self>> :
+    ExecutionStatus.Builder<Self> {
+    /**
+     * Human readable name for the concrete [Self] class.
+     *
+     * Used in the [toString] output.
+     */
+    @get:Suppress("GetterOnBuilder") protected abstract val selfTypeName: String
+
+    /**
+     * The additional properties that exist on the concrete [Self] class.
+     *
+     * Used for equality comparison and computing the hash code.
+     */
+    @get:Suppress("GetterOnBuilder") protected abstract val additionalProperties: Map<String, Any?>
+
+    private var disambiguatingDescription: DisambiguatingDescription? = null
+
+    private var identifier: String? = null
+
+    private var name: Name? = null
+
+    /**
+     * Builds a concrete [Built] instance, given a built [ExecutionStatus].
+     *
+     * Subclasses should override this method to build a concrete [Built] instance that holds both
+     * the [ExecutionStatus]-specific properties and the subclass specific [additionalProperties].
+     *
+     * See the sample code in the documentation of this class for more context.
+     */
+    @Suppress("BuilderSetStyle")
+    protected abstract fun buildFromExecutionStatus(executionStatus: ExecutionStatus): Built
+
+    public final override fun build(): Built =
+      buildFromExecutionStatus(ExecutionStatusImpl(disambiguatingDescription, identifier, name))
+
+    public final override fun setDisambiguatingDescription(
+      disambiguatingDescription: DisambiguatingDescription?
+    ): Self {
+      this.disambiguatingDescription = disambiguatingDescription
+      return this as Self
+    }
+
+    public final override fun setIdentifier(text: String?): Self {
+      this.identifier = text
+      return this as Self
+    }
+
+    public final override fun setName(name: Name?): Self {
+      this.name = name
+      return this as Self
+    }
+
+    @Suppress("BuilderSetStyle")
+    public final override fun equals(other: Any?): Boolean {
+      if (this === other) return true
+      if (other == null || this::class.java != other::class.java) return false
+      other as Self
+      if (disambiguatingDescription != other.disambiguatingDescription) return false
+      if (identifier != other.identifier) return false
+      if (name != other.name) return false
+      if (additionalProperties != other.additionalProperties) return false
+      return true
+    }
+
+    @Suppress("BuilderSetStyle")
+    public final override fun hashCode(): Int =
+      Objects.hash(disambiguatingDescription, identifier, name, additionalProperties)
+
+    @Suppress("BuilderSetStyle")
+    public final override fun toString(): String {
+      val attributes = mutableMapOf<String, String>()
+      if (disambiguatingDescription != null) {
+        attributes["disambiguatingDescription"] =
+          disambiguatingDescription!!.toString(includeWrapperName = false)
+      }
+      if (identifier != null) {
+        attributes["identifier"] = identifier!!
+      }
+      if (name != null) {
+        attributes["name"] = name!!.toString(includeWrapperName = false)
+      }
+      attributes += additionalProperties.map { (k, v) -> k to v.toString() }
+      val commaSeparated =
+        attributes.entries.joinToString(separator = ", ") { (k, v) -> """$k=$v""" }
+      return """$selfTypeName($commaSeparated)"""
+    }
+  }
+}
+
+internal class ExecutionStatusImpl :
+  AbstractExecutionStatus<ExecutionStatusImpl, ExecutionStatusImpl.Builder> {
+  protected override val selfTypeName: String
+    get() = "ExecutionStatus"
+
+  protected override val additionalProperties: Map<String, Any?>
+    get() = emptyMap()
+
+  public constructor(
+    disambiguatingDescription: DisambiguatingDescription?,
+    identifier: String?,
+    name: Name?,
+  ) : super(disambiguatingDescription, identifier, name)
+
+  public constructor(executionStatus: ExecutionStatus) : super(executionStatus)
+
+  protected override fun toBuilderWithAdditionalPropertiesOnly(): Builder = Builder()
+
+  internal class Builder : AbstractExecutionStatus.Builder<Builder, ExecutionStatusImpl>() {
+    protected override val selfTypeName: String
+      get() = "ExecutionStatus.Builder"
+
+    protected override val additionalProperties: Map<String, Any?>
+      get() = emptyMap()
+
+    protected override fun buildFromExecutionStatus(
+      executionStatus: ExecutionStatus
+    ): ExecutionStatusImpl =
+      executionStatus as? ExecutionStatusImpl ?: ExecutionStatusImpl(executionStatus)
+  }
+}
diff --git a/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/GenericErrorStatus.kt b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/GenericErrorStatus.kt
new file mode 100644
index 0000000..028c76a
--- /dev/null
+++ b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/GenericErrorStatus.kt
@@ -0,0 +1,349 @@
+// Copyright 2023 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package androidx.appactions.builtintypes.types
+
+import androidx.appactions.builtintypes.properties.DisambiguatingDescription
+import androidx.appactions.builtintypes.properties.Name
+import java.util.Objects
+import kotlin.Any
+import kotlin.Boolean
+import kotlin.Int
+import kotlin.String
+import kotlin.Suppress
+import kotlin.collections.Map
+import kotlin.collections.emptyMap
+import kotlin.collections.joinToString
+import kotlin.collections.map
+import kotlin.collections.mutableMapOf
+import kotlin.collections.plusAssign
+import kotlin.jvm.JvmStatic
+
+/**
+ * Status indicating that the task was not executed successfully.
+ *
+ * See http://schema.googleapis.com/GenericErrorStatus for context.
+ *
+ * Should not be directly implemented. More properties may be added over time. Instead consider
+ * using [Companion.Builder] or see [AbstractGenericErrorStatus] if you need to extend this type.
+ */
+public interface GenericErrorStatus : ExecutionStatus {
+  /** Converts this [GenericErrorStatus] to its builder with all the properties copied over. */
+  public override fun toBuilder(): Builder<*>
+
+  public companion object {
+    /** Returns a default implementation of [Builder] with no properties set. */
+    @JvmStatic public fun Builder(): Builder<*> = GenericErrorStatusImpl.Builder()
+  }
+
+  /**
+   * Builder for [GenericErrorStatus].
+   *
+   * Should not be directly implemented. More methods may be added over time. See
+   * [AbstractGenericErrorStatus.Builder] if you need to extend this builder.
+   */
+  public interface Builder<Self : Builder<Self>> : ExecutionStatus.Builder<Self> {
+    /** Returns a built [GenericErrorStatus]. */
+    public override fun build(): GenericErrorStatus
+  }
+}
+
+/**
+ * An abstract implementation of [GenericErrorStatus].
+ *
+ * Allows for extension like:
+ * ```kt
+ * class MyGenericErrorStatus internal constructor(
+ *   genericErrorStatus: GenericErrorStatus,
+ *   val foo: String,
+ *   val bars: List<Int>,
+ * ) : AbstractGenericErrorStatus<
+ *   MyGenericErrorStatus,
+ *   MyGenericErrorStatus.Builder
+ * >(genericErrorStatus) {
+ *
+ *   override val selfTypeName =
+ *     "MyGenericErrorStatus"
+ *
+ *   override val additionalProperties: Map<String, Any?>
+ *     get() = mapOf("foo" to foo, "bars" to bars)
+ *
+ *   override fun toBuilderWithAdditionalPropertiesOnly(): Builder {
+ *     return Builder()
+ *       .setFoo(foo)
+ *       .addBars(bars)
+ *   }
+ *
+ *   class Builder :
+ *     AbstractGenericErrorStatus.Builder<
+ *       Builder,
+ *       MyGenericErrorStatus> {...}
+ * }
+ * ```
+ *
+ * Also see [AbstractGenericErrorStatus.Builder].
+ */
+@Suppress("UNCHECKED_CAST")
+public abstract class AbstractGenericErrorStatus<
+  Self : AbstractGenericErrorStatus<Self, Builder>,
+  Builder : AbstractGenericErrorStatus.Builder<Builder, Self>>
+internal constructor(
+  public final override val disambiguatingDescription: DisambiguatingDescription?,
+  public final override val identifier: String?,
+  public final override val name: Name?,
+) : GenericErrorStatus {
+  /**
+   * Human readable name for the concrete [Self] class.
+   *
+   * Used in the [toString] output.
+   */
+  protected abstract val selfTypeName: String
+
+  /**
+   * The additional properties that exist on the concrete [Self] class.
+   *
+   * Used for equality comparison and computing the hash code.
+   */
+  protected abstract val additionalProperties: Map<String, Any?>
+
+  /** A copy-constructor that copies over properties from another [GenericErrorStatus] instance. */
+  public constructor(
+    genericErrorStatus: GenericErrorStatus
+  ) : this(
+    genericErrorStatus.disambiguatingDescription,
+    genericErrorStatus.identifier,
+    genericErrorStatus.name
+  )
+
+  /**
+   * Returns a concrete [Builder] with the additional, non-[GenericErrorStatus] properties copied
+   * over.
+   */
+  protected abstract fun toBuilderWithAdditionalPropertiesOnly(): Builder
+
+  public final override fun toBuilder(): Builder =
+    toBuilderWithAdditionalPropertiesOnly()
+      .setDisambiguatingDescription(disambiguatingDescription)
+      .setIdentifier(identifier)
+      .setName(name)
+
+  public final override fun equals(other: Any?): Boolean {
+    if (this === other) return true
+    if (other == null || this::class.java != other::class.java) return false
+    other as Self
+    if (disambiguatingDescription != other.disambiguatingDescription) return false
+    if (identifier != other.identifier) return false
+    if (name != other.name) return false
+    if (additionalProperties != other.additionalProperties) return false
+    return true
+  }
+
+  public final override fun hashCode(): Int =
+    Objects.hash(disambiguatingDescription, identifier, name, additionalProperties)
+
+  public final override fun toString(): String {
+    val attributes = mutableMapOf<String, String>()
+    if (disambiguatingDescription != null) {
+      attributes["disambiguatingDescription"] =
+        disambiguatingDescription.toString(includeWrapperName = false)
+    }
+    if (identifier != null) {
+      attributes["identifier"] = identifier
+    }
+    if (name != null) {
+      attributes["name"] = name.toString(includeWrapperName = false)
+    }
+    attributes += additionalProperties.map { (k, v) -> k to v.toString() }
+    val commaSeparated = attributes.entries.joinToString(separator = ", ") { (k, v) -> """$k=$v""" }
+    return """$selfTypeName($commaSeparated)"""
+  }
+
+  /**
+   * An abstract implementation of [GenericErrorStatus.Builder].
+   *
+   * Allows for extension like:
+   * ```kt
+   * class MyGenericErrorStatus :
+   *   : AbstractGenericErrorStatus<
+   *     MyGenericErrorStatus,
+   *     MyGenericErrorStatus.Builder>(...) {
+   *
+   *   class Builder
+   *   : Builder<
+   *       Builder,
+   *       MyGenericErrorStatus
+   *   >() {
+   *     private var foo: String? = null
+   *     private val bars = mutableListOf<Int>()
+   *
+   *     override val selfTypeName =
+   *       "MyGenericErrorStatus.Builder"
+   *
+   *     override val additionalProperties: Map<String, Any?>
+   *       get() = mapOf("foo" to foo, "bars" to bars)
+   *
+   *     override fun buildFromGenericErrorStatus(
+   *       genericErrorStatus: GenericErrorStatus
+   *     ): MyGenericErrorStatus {
+   *       return MyGenericErrorStatus(
+   *         genericErrorStatus,
+   *         foo,
+   *         bars.toList()
+   *       )
+   *     }
+   *
+   *     fun setFoo(string: String): Builder {
+   *       return apply { foo = string }
+   *     }
+   *
+   *     fun addBar(int: Int): Builder {
+   *       return apply { bars += int }
+   *     }
+   *
+   *     fun addBars(values: Iterable<Int>): Builder {
+   *       return apply { bars += values }
+   *     }
+   *   }
+   * }
+   * ```
+   *
+   * Also see [AbstractGenericErrorStatus].
+   */
+  @Suppress("StaticFinalBuilder")
+  public abstract class Builder<
+    Self : Builder<Self, Built>, Built : AbstractGenericErrorStatus<Built, Self>> :
+    GenericErrorStatus.Builder<Self> {
+    /**
+     * Human readable name for the concrete [Self] class.
+     *
+     * Used in the [toString] output.
+     */
+    @get:Suppress("GetterOnBuilder") protected abstract val selfTypeName: String
+
+    /**
+     * The additional properties that exist on the concrete [Self] class.
+     *
+     * Used for equality comparison and computing the hash code.
+     */
+    @get:Suppress("GetterOnBuilder") protected abstract val additionalProperties: Map<String, Any?>
+
+    private var disambiguatingDescription: DisambiguatingDescription? = null
+
+    private var identifier: String? = null
+
+    private var name: Name? = null
+
+    /**
+     * Builds a concrete [Built] instance, given a built [GenericErrorStatus].
+     *
+     * Subclasses should override this method to build a concrete [Built] instance that holds both
+     * the [GenericErrorStatus]-specific properties and the subclass specific
+     * [additionalProperties].
+     *
+     * See the sample code in the documentation of this class for more context.
+     */
+    @Suppress("BuilderSetStyle")
+    protected abstract fun buildFromGenericErrorStatus(
+      genericErrorStatus: GenericErrorStatus
+    ): Built
+
+    public final override fun build(): Built =
+      buildFromGenericErrorStatus(
+        GenericErrorStatusImpl(disambiguatingDescription, identifier, name)
+      )
+
+    public final override fun setDisambiguatingDescription(
+      disambiguatingDescription: DisambiguatingDescription?
+    ): Self {
+      this.disambiguatingDescription = disambiguatingDescription
+      return this as Self
+    }
+
+    public final override fun setIdentifier(text: String?): Self {
+      this.identifier = text
+      return this as Self
+    }
+
+    public final override fun setName(name: Name?): Self {
+      this.name = name
+      return this as Self
+    }
+
+    @Suppress("BuilderSetStyle")
+    public final override fun equals(other: Any?): Boolean {
+      if (this === other) return true
+      if (other == null || this::class.java != other::class.java) return false
+      other as Self
+      if (disambiguatingDescription != other.disambiguatingDescription) return false
+      if (identifier != other.identifier) return false
+      if (name != other.name) return false
+      if (additionalProperties != other.additionalProperties) return false
+      return true
+    }
+
+    @Suppress("BuilderSetStyle")
+    public final override fun hashCode(): Int =
+      Objects.hash(disambiguatingDescription, identifier, name, additionalProperties)
+
+    @Suppress("BuilderSetStyle")
+    public final override fun toString(): String {
+      val attributes = mutableMapOf<String, String>()
+      if (disambiguatingDescription != null) {
+        attributes["disambiguatingDescription"] =
+          disambiguatingDescription!!.toString(includeWrapperName = false)
+      }
+      if (identifier != null) {
+        attributes["identifier"] = identifier!!
+      }
+      if (name != null) {
+        attributes["name"] = name!!.toString(includeWrapperName = false)
+      }
+      attributes += additionalProperties.map { (k, v) -> k to v.toString() }
+      val commaSeparated =
+        attributes.entries.joinToString(separator = ", ") { (k, v) -> """$k=$v""" }
+      return """$selfTypeName($commaSeparated)"""
+    }
+  }
+}
+
+internal class GenericErrorStatusImpl :
+  AbstractGenericErrorStatus<GenericErrorStatusImpl, GenericErrorStatusImpl.Builder> {
+  protected override val selfTypeName: String
+    get() = "GenericErrorStatus"
+
+  protected override val additionalProperties: Map<String, Any?>
+    get() = emptyMap()
+
+  public constructor(
+    disambiguatingDescription: DisambiguatingDescription?,
+    identifier: String?,
+    name: Name?,
+  ) : super(disambiguatingDescription, identifier, name)
+
+  public constructor(genericErrorStatus: GenericErrorStatus) : super(genericErrorStatus)
+
+  protected override fun toBuilderWithAdditionalPropertiesOnly(): Builder = Builder()
+
+  internal class Builder : AbstractGenericErrorStatus.Builder<Builder, GenericErrorStatusImpl>() {
+    protected override val selfTypeName: String
+      get() = "GenericErrorStatus.Builder"
+
+    protected override val additionalProperties: Map<String, Any?>
+      get() = emptyMap()
+
+    protected override fun buildFromGenericErrorStatus(
+      genericErrorStatus: GenericErrorStatus
+    ): GenericErrorStatusImpl =
+      genericErrorStatus as? GenericErrorStatusImpl ?: GenericErrorStatusImpl(genericErrorStatus)
+  }
+}
diff --git a/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Intangible.kt b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Intangible.kt
index e1d1386..e862f93 100644
--- a/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Intangible.kt
+++ b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Intangible.kt
@@ -36,7 +36,7 @@
  * See http://schema.org/Intangible for context.
  *
  * Should not be directly implemented. More properties may be added over time. Instead consider
- * using [Companion.Builder] or see [GenericIntangible] if you need to extend this type.
+ * using [Companion.Builder] or see [AbstractIntangible] if you need to extend this type.
  */
 public interface Intangible : Thing {
   /** Converts this [Intangible] to its builder with all the properties copied over. */
@@ -51,7 +51,7 @@
    * Builder for [Intangible].
    *
    * Should not be directly implemented. More methods may be added over time. See
-   * [GenericIntangible.Builder] if you need to extend this builder.
+   * [AbstractIntangible.Builder] if you need to extend this builder.
    */
   public interface Builder<Self : Builder<Self>> : Thing.Builder<Self> {
     /** Returns a built [Intangible]. */
@@ -60,7 +60,7 @@
 }
 
 /**
- * A generic implementation of [Intangible].
+ * An abstract implementation of [Intangible].
  *
  * Allows for extension like:
  * ```kt
@@ -68,7 +68,7 @@
  *   intangible: Intangible,
  *   val foo: String,
  *   val bars: List<Int>,
- * ) : GenericIntangible<
+ * ) : AbstractIntangible<
  *   MyIntangible,
  *   MyIntangible.Builder
  * >(intangible) {
@@ -86,17 +86,17 @@
  *   }
  *
  *   class Builder :
- *     GenericIntangible.Builder<
+ *     AbstractIntangible.Builder<
  *       Builder,
  *       MyIntangible> {...}
  * }
  * ```
  *
- * Also see [GenericIntangible.Builder].
+ * Also see [AbstractIntangible.Builder].
  */
 @Suppress("UNCHECKED_CAST")
-public abstract class GenericIntangible<
-  Self : GenericIntangible<Self, Builder>, Builder : GenericIntangible.Builder<Builder, Self>>
+public abstract class AbstractIntangible<
+  Self : AbstractIntangible<Self, Builder>, Builder : AbstractIntangible.Builder<Builder, Self>>
 internal constructor(
   public final override val disambiguatingDescription: DisambiguatingDescription?,
   public final override val identifier: String?,
@@ -162,12 +162,12 @@
   }
 
   /**
-   * A generic implementation of [Intangible.Builder].
+   * An abstract implementation of [Intangible.Builder].
    *
    * Allows for extension like:
    * ```kt
    * class MyIntangible :
-   *   : GenericIntangible<
+   *   : AbstractIntangible<
    *     MyIntangible,
    *     MyIntangible.Builder>(...) {
    *
@@ -210,11 +210,11 @@
    * }
    * ```
    *
-   * Also see [GenericIntangible].
+   * Also see [AbstractIntangible].
    */
   @Suppress("StaticFinalBuilder")
   public abstract class Builder<
-    Self : Builder<Self, Built>, Built : GenericIntangible<Built, Self>> :
+    Self : Builder<Self, Built>, Built : AbstractIntangible<Built, Self>> :
     Intangible.Builder<Self> {
     /**
      * Human readable name for the concrete [Self] class.
@@ -304,7 +304,7 @@
   }
 }
 
-internal class IntangibleImpl : GenericIntangible<IntangibleImpl, IntangibleImpl.Builder> {
+internal class IntangibleImpl : AbstractIntangible<IntangibleImpl, IntangibleImpl.Builder> {
   protected override val selfTypeName: String
     get() = "Intangible"
 
@@ -321,7 +321,7 @@
 
   protected override fun toBuilderWithAdditionalPropertiesOnly(): Builder = Builder()
 
-  internal class Builder : GenericIntangible.Builder<Builder, IntangibleImpl>() {
+  internal class Builder : AbstractIntangible.Builder<Builder, IntangibleImpl>() {
     protected override val selfTypeName: String
       get() = "Intangible.Builder"
 
diff --git a/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/ObjectCreationLimitReachedStatus.kt b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/ObjectCreationLimitReachedStatus.kt
new file mode 100644
index 0000000..9504c94
--- /dev/null
+++ b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/ObjectCreationLimitReachedStatus.kt
@@ -0,0 +1,365 @@
+// Copyright 2023 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package androidx.appactions.builtintypes.types
+
+import androidx.appactions.builtintypes.properties.DisambiguatingDescription
+import androidx.appactions.builtintypes.properties.Name
+import java.util.Objects
+import kotlin.Any
+import kotlin.Boolean
+import kotlin.Int
+import kotlin.String
+import kotlin.Suppress
+import kotlin.collections.Map
+import kotlin.collections.emptyMap
+import kotlin.collections.joinToString
+import kotlin.collections.map
+import kotlin.collections.mutableMapOf
+import kotlin.collections.plusAssign
+import kotlin.jvm.JvmStatic
+
+/**
+ * Status indicating that the number of objects have reached the limit and more objects cannot be
+ * created.
+ *
+ * See http://schema.googleapis.com/ObjectCreationLimitReachedStatus for context.
+ *
+ * Should not be directly implemented. More properties may be added over time. Instead consider
+ * using [Companion.Builder] or see [AbstractObjectCreationLimitReachedStatus] if you need to extend
+ * this type.
+ */
+public interface ObjectCreationLimitReachedStatus : ExecutionStatus {
+  /**
+   * Converts this [ObjectCreationLimitReachedStatus] to its builder with all the properties copied
+   * over.
+   */
+  public override fun toBuilder(): Builder<*>
+
+  public companion object {
+    /** Returns a default implementation of [Builder] with no properties set. */
+    @JvmStatic public fun Builder(): Builder<*> = ObjectCreationLimitReachedStatusImpl.Builder()
+  }
+
+  /**
+   * Builder for [ObjectCreationLimitReachedStatus].
+   *
+   * Should not be directly implemented. More methods may be added over time. See
+   * [AbstractObjectCreationLimitReachedStatus.Builder] if you need to extend this builder.
+   */
+  public interface Builder<Self : Builder<Self>> : ExecutionStatus.Builder<Self> {
+    /** Returns a built [ObjectCreationLimitReachedStatus]. */
+    public override fun build(): ObjectCreationLimitReachedStatus
+  }
+}
+
+/**
+ * An abstract implementation of [ObjectCreationLimitReachedStatus].
+ *
+ * Allows for extension like:
+ * ```kt
+ * class MyObjectCreationLimitReachedStatus internal constructor(
+ *   objectCreationLimitReachedStatus: ObjectCreationLimitReachedStatus,
+ *   val foo: String,
+ *   val bars: List<Int>,
+ * ) : AbstractObjectCreationLimitReachedStatus<
+ *   MyObjectCreationLimitReachedStatus,
+ *   MyObjectCreationLimitReachedStatus.Builder
+ * >(objectCreationLimitReachedStatus) {
+ *
+ *   override val selfTypeName =
+ *     "MyObjectCreationLimitReachedStatus"
+ *
+ *   override val additionalProperties: Map<String, Any?>
+ *     get() = mapOf("foo" to foo, "bars" to bars)
+ *
+ *   override fun toBuilderWithAdditionalPropertiesOnly(): Builder {
+ *     return Builder()
+ *       .setFoo(foo)
+ *       .addBars(bars)
+ *   }
+ *
+ *   class Builder :
+ *     AbstractObjectCreationLimitReachedStatus.Builder<
+ *       Builder,
+ *       MyObjectCreationLimitReachedStatus> {...}
+ * }
+ * ```
+ *
+ * Also see [AbstractObjectCreationLimitReachedStatus.Builder].
+ */
+@Suppress("UNCHECKED_CAST")
+public abstract class AbstractObjectCreationLimitReachedStatus<
+  Self : AbstractObjectCreationLimitReachedStatus<Self, Builder>,
+  Builder : AbstractObjectCreationLimitReachedStatus.Builder<Builder, Self>>
+internal constructor(
+  public final override val disambiguatingDescription: DisambiguatingDescription?,
+  public final override val identifier: String?,
+  public final override val name: Name?,
+) : ObjectCreationLimitReachedStatus {
+  /**
+   * Human readable name for the concrete [Self] class.
+   *
+   * Used in the [toString] output.
+   */
+  protected abstract val selfTypeName: String
+
+  /**
+   * The additional properties that exist on the concrete [Self] class.
+   *
+   * Used for equality comparison and computing the hash code.
+   */
+  protected abstract val additionalProperties: Map<String, Any?>
+
+  /**
+   * A copy-constructor that copies over properties from another [ObjectCreationLimitReachedStatus]
+   * instance.
+   */
+  public constructor(
+    objectCreationLimitReachedStatus: ObjectCreationLimitReachedStatus
+  ) : this(
+    objectCreationLimitReachedStatus.disambiguatingDescription,
+    objectCreationLimitReachedStatus.identifier,
+    objectCreationLimitReachedStatus.name
+  )
+
+  /**
+   * Returns a concrete [Builder] with the additional, non-[ObjectCreationLimitReachedStatus]
+   * properties copied over.
+   */
+  protected abstract fun toBuilderWithAdditionalPropertiesOnly(): Builder
+
+  public final override fun toBuilder(): Builder =
+    toBuilderWithAdditionalPropertiesOnly()
+      .setDisambiguatingDescription(disambiguatingDescription)
+      .setIdentifier(identifier)
+      .setName(name)
+
+  public final override fun equals(other: Any?): Boolean {
+    if (this === other) return true
+    if (other == null || this::class.java != other::class.java) return false
+    other as Self
+    if (disambiguatingDescription != other.disambiguatingDescription) return false
+    if (identifier != other.identifier) return false
+    if (name != other.name) return false
+    if (additionalProperties != other.additionalProperties) return false
+    return true
+  }
+
+  public final override fun hashCode(): Int =
+    Objects.hash(disambiguatingDescription, identifier, name, additionalProperties)
+
+  public final override fun toString(): String {
+    val attributes = mutableMapOf<String, String>()
+    if (disambiguatingDescription != null) {
+      attributes["disambiguatingDescription"] =
+        disambiguatingDescription.toString(includeWrapperName = false)
+    }
+    if (identifier != null) {
+      attributes["identifier"] = identifier
+    }
+    if (name != null) {
+      attributes["name"] = name.toString(includeWrapperName = false)
+    }
+    attributes += additionalProperties.map { (k, v) -> k to v.toString() }
+    val commaSeparated = attributes.entries.joinToString(separator = ", ") { (k, v) -> """$k=$v""" }
+    return """$selfTypeName($commaSeparated)"""
+  }
+
+  /**
+   * An abstract implementation of [ObjectCreationLimitReachedStatus.Builder].
+   *
+   * Allows for extension like:
+   * ```kt
+   * class MyObjectCreationLimitReachedStatus :
+   *   : AbstractObjectCreationLimitReachedStatus<
+   *     MyObjectCreationLimitReachedStatus,
+   *     MyObjectCreationLimitReachedStatus.Builder>(...) {
+   *
+   *   class Builder
+   *   : Builder<
+   *       Builder,
+   *       MyObjectCreationLimitReachedStatus
+   *   >() {
+   *     private var foo: String? = null
+   *     private val bars = mutableListOf<Int>()
+   *
+   *     override val selfTypeName =
+   *       "MyObjectCreationLimitReachedStatus.Builder"
+   *
+   *     override val additionalProperties: Map<String, Any?>
+   *       get() = mapOf("foo" to foo, "bars" to bars)
+   *
+   *     override fun buildFromObjectCreationLimitReachedStatus(
+   *       objectCreationLimitReachedStatus: ObjectCreationLimitReachedStatus
+   *     ): MyObjectCreationLimitReachedStatus {
+   *       return MyObjectCreationLimitReachedStatus(
+   *         objectCreationLimitReachedStatus,
+   *         foo,
+   *         bars.toList()
+   *       )
+   *     }
+   *
+   *     fun setFoo(string: String): Builder {
+   *       return apply { foo = string }
+   *     }
+   *
+   *     fun addBar(int: Int): Builder {
+   *       return apply { bars += int }
+   *     }
+   *
+   *     fun addBars(values: Iterable<Int>): Builder {
+   *       return apply { bars += values }
+   *     }
+   *   }
+   * }
+   * ```
+   *
+   * Also see [AbstractObjectCreationLimitReachedStatus].
+   */
+  @Suppress("StaticFinalBuilder")
+  public abstract class Builder<
+    Self : Builder<Self, Built>, Built : AbstractObjectCreationLimitReachedStatus<Built, Self>> :
+    ObjectCreationLimitReachedStatus.Builder<Self> {
+    /**
+     * Human readable name for the concrete [Self] class.
+     *
+     * Used in the [toString] output.
+     */
+    @get:Suppress("GetterOnBuilder") protected abstract val selfTypeName: String
+
+    /**
+     * The additional properties that exist on the concrete [Self] class.
+     *
+     * Used for equality comparison and computing the hash code.
+     */
+    @get:Suppress("GetterOnBuilder") protected abstract val additionalProperties: Map<String, Any?>
+
+    private var disambiguatingDescription: DisambiguatingDescription? = null
+
+    private var identifier: String? = null
+
+    private var name: Name? = null
+
+    /**
+     * Builds a concrete [Built] instance, given a built [ObjectCreationLimitReachedStatus].
+     *
+     * Subclasses should override this method to build a concrete [Built] instance that holds both
+     * the [ObjectCreationLimitReachedStatus]-specific properties and the subclass specific
+     * [additionalProperties].
+     *
+     * See the sample code in the documentation of this class for more context.
+     */
+    @Suppress("BuilderSetStyle")
+    protected abstract fun buildFromObjectCreationLimitReachedStatus(
+      objectCreationLimitReachedStatus: ObjectCreationLimitReachedStatus
+    ): Built
+
+    public final override fun build(): Built =
+      buildFromObjectCreationLimitReachedStatus(
+        ObjectCreationLimitReachedStatusImpl(disambiguatingDescription, identifier, name)
+      )
+
+    public final override fun setDisambiguatingDescription(
+      disambiguatingDescription: DisambiguatingDescription?
+    ): Self {
+      this.disambiguatingDescription = disambiguatingDescription
+      return this as Self
+    }
+
+    public final override fun setIdentifier(text: String?): Self {
+      this.identifier = text
+      return this as Self
+    }
+
+    public final override fun setName(name: Name?): Self {
+      this.name = name
+      return this as Self
+    }
+
+    @Suppress("BuilderSetStyle")
+    public final override fun equals(other: Any?): Boolean {
+      if (this === other) return true
+      if (other == null || this::class.java != other::class.java) return false
+      other as Self
+      if (disambiguatingDescription != other.disambiguatingDescription) return false
+      if (identifier != other.identifier) return false
+      if (name != other.name) return false
+      if (additionalProperties != other.additionalProperties) return false
+      return true
+    }
+
+    @Suppress("BuilderSetStyle")
+    public final override fun hashCode(): Int =
+      Objects.hash(disambiguatingDescription, identifier, name, additionalProperties)
+
+    @Suppress("BuilderSetStyle")
+    public final override fun toString(): String {
+      val attributes = mutableMapOf<String, String>()
+      if (disambiguatingDescription != null) {
+        attributes["disambiguatingDescription"] =
+          disambiguatingDescription!!.toString(includeWrapperName = false)
+      }
+      if (identifier != null) {
+        attributes["identifier"] = identifier!!
+      }
+      if (name != null) {
+        attributes["name"] = name!!.toString(includeWrapperName = false)
+      }
+      attributes += additionalProperties.map { (k, v) -> k to v.toString() }
+      val commaSeparated =
+        attributes.entries.joinToString(separator = ", ") { (k, v) -> """$k=$v""" }
+      return """$selfTypeName($commaSeparated)"""
+    }
+  }
+}
+
+internal class ObjectCreationLimitReachedStatusImpl :
+  AbstractObjectCreationLimitReachedStatus<
+    ObjectCreationLimitReachedStatusImpl, ObjectCreationLimitReachedStatusImpl.Builder
+  > {
+  protected override val selfTypeName: String
+    get() = "ObjectCreationLimitReachedStatus"
+
+  protected override val additionalProperties: Map<String, Any?>
+    get() = emptyMap()
+
+  public constructor(
+    disambiguatingDescription: DisambiguatingDescription?,
+    identifier: String?,
+    name: Name?,
+  ) : super(disambiguatingDescription, identifier, name)
+
+  public constructor(
+    objectCreationLimitReachedStatus: ObjectCreationLimitReachedStatus
+  ) : super(objectCreationLimitReachedStatus)
+
+  protected override fun toBuilderWithAdditionalPropertiesOnly(): Builder = Builder()
+
+  internal class Builder :
+    AbstractObjectCreationLimitReachedStatus.Builder<
+      Builder, ObjectCreationLimitReachedStatusImpl
+    >() {
+    protected override val selfTypeName: String
+      get() = "ObjectCreationLimitReachedStatus.Builder"
+
+    protected override val additionalProperties: Map<String, Any?>
+      get() = emptyMap()
+
+    protected override fun buildFromObjectCreationLimitReachedStatus(
+      objectCreationLimitReachedStatus: ObjectCreationLimitReachedStatus
+    ): ObjectCreationLimitReachedStatusImpl =
+      objectCreationLimitReachedStatus as? ObjectCreationLimitReachedStatusImpl
+        ?: ObjectCreationLimitReachedStatusImpl(objectCreationLimitReachedStatus)
+  }
+}
diff --git a/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Person.kt b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Person.kt
index 37403bb..dc96036 100644
--- a/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Person.kt
+++ b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Person.kt
@@ -35,10 +35,14 @@
  * See http://schema.org/Person for context.
  *
  * Should not be directly implemented. More properties may be added over time. Instead consider
- * using [Companion.Builder] or see [GenericPerson] if you need to extend this type.
+ * using [Companion.Builder] or see [AbstractPerson] if you need to extend this type.
  */
 public interface Person : Thing {
-  /** Email address. */
+  /**
+   * Email address.
+   *
+   * See http://schema.org/email for more context.
+   */
   public val email: String?
 
   /** Converts this [Person] to its builder with all the properties copied over. */
@@ -53,7 +57,7 @@
    * Builder for [Person].
    *
    * Should not be directly implemented. More methods may be added over time. See
-   * [GenericPerson.Builder] if you need to extend this builder.
+   * [AbstractPerson.Builder] if you need to extend this builder.
    */
   public interface Builder<Self : Builder<Self>> : Thing.Builder<Self> {
     /** Returns a built [Person]. */
@@ -65,7 +69,7 @@
 }
 
 /**
- * A generic implementation of [Person].
+ * An abstract implementation of [Person].
  *
  * Allows for extension like:
  * ```kt
@@ -73,7 +77,7 @@
  *   person: Person,
  *   val foo: String,
  *   val bars: List<Int>,
- * ) : GenericPerson<
+ * ) : AbstractPerson<
  *   MyPerson,
  *   MyPerson.Builder
  * >(person) {
@@ -91,17 +95,17 @@
  *   }
  *
  *   class Builder :
- *     GenericPerson.Builder<
+ *     AbstractPerson.Builder<
  *       Builder,
  *       MyPerson> {...}
  * }
  * ```
  *
- * Also see [GenericPerson.Builder].
+ * Also see [AbstractPerson.Builder].
  */
 @Suppress("UNCHECKED_CAST")
-public abstract class GenericPerson<
-  Self : GenericPerson<Self, Builder>, Builder : GenericPerson.Builder<Builder, Self>>
+public abstract class AbstractPerson<
+  Self : AbstractPerson<Self, Builder>, Builder : AbstractPerson.Builder<Builder, Self>>
 internal constructor(
   public final override val email: String?,
   public final override val disambiguatingDescription: DisambiguatingDescription?,
@@ -173,12 +177,12 @@
   }
 
   /**
-   * A generic implementation of [Person.Builder].
+   * An abstract implementation of [Person.Builder].
    *
    * Allows for extension like:
    * ```kt
    * class MyPerson :
-   *   : GenericPerson<
+   *   : AbstractPerson<
    *     MyPerson,
    *     MyPerson.Builder>(...) {
    *
@@ -221,10 +225,10 @@
    * }
    * ```
    *
-   * Also see [GenericPerson].
+   * Also see [AbstractPerson].
    */
   @Suppress("StaticFinalBuilder")
-  public abstract class Builder<Self : Builder<Self, Built>, Built : GenericPerson<Built, Self>> :
+  public abstract class Builder<Self : Builder<Self, Built>, Built : AbstractPerson<Built, Self>> :
     Person.Builder<Self> {
     /**
      * Human readable name for the concrete [Self] class.
@@ -324,7 +328,7 @@
   }
 }
 
-internal class PersonImpl : GenericPerson<PersonImpl, PersonImpl.Builder> {
+internal class PersonImpl : AbstractPerson<PersonImpl, PersonImpl.Builder> {
   protected override val selfTypeName: String
     get() = "Person"
 
@@ -342,7 +346,7 @@
 
   protected override fun toBuilderWithAdditionalPropertiesOnly(): Builder = Builder()
 
-  internal class Builder : GenericPerson.Builder<Builder, PersonImpl>() {
+  internal class Builder : AbstractPerson.Builder<Builder, PersonImpl>() {
     protected override val selfTypeName: String
       get() = "Person.Builder"
 
diff --git a/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Schedule.kt b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Schedule.kt
index 216380d..73525a2 100644
--- a/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Schedule.kt
+++ b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Schedule.kt
@@ -59,21 +59,29 @@
  * See http://schema.org/Schedule for context.
  *
  * Should not be directly implemented. More properties may be added over time. Instead consider
- * using [Companion.Builder] or see [GenericSchedule] if you need to extend this type.
+ * using [Companion.Builder] or see [AbstractSchedule] if you need to extend this type.
  */
 public interface Schedule : Intangible {
-  /** Defines the day(s) of the week on which a recurring Event takes place. */
+  /**
+   * Defines the day(s) of the week on which a recurring Event takes place.
+   *
+   * See http://schema.org/byDay for more context.
+   */
   public val byDays: List<ByDay>
 
   /**
    * Defines the month(s) of the year on which a recurring Event takes place. Specified as an
    * Integer between 1-12. January is 1.
+   *
+   * See http://schema.org/byMonth for more context.
    */
   public val byMonths: List<Long>
 
   /**
    * Defines the day(s) of the month on which a recurring Event takes place. Specified as an Integer
    * between 1-31.
+   *
+   * See http://schema.org/byMonthDay for more context.
    */
   public val byMonthDays: List<Long>
 
@@ -81,10 +89,16 @@
    * Defines the week(s) of the month on which a recurring Event takes place. Specified as an
    * Integer between 1-5. For clarity, byMonthWeek is best used in conjunction with byDay to
    * indicate concepts like the first and third Mondays of a month.
+   *
+   * See http://schema.org/byMonthWeek for more context.
    */
   public val byMonthWeeks: List<Long>
 
-  /** The end date and time of the item. */
+  /**
+   * The end date and time of the item.
+   *
+   * See http://schema.org/endDate for more context.
+   */
   public val endDate: EndDate?
 
   /**
@@ -94,6 +108,8 @@
    * expected to end. For actions that span a period of time, when the action was performed. E.g.
    * John wrote a book from January to *December*. For media, including audio and video, it's the
    * time offset of the end of a clip within a larger file.
+   *
+   * See http://schema.org/endTime for more context.
    */
   public val endTime: EndTime?
 
@@ -104,25 +120,39 @@
    * excluded from the schedule. If an exception is specified as a `Date` then any event that is
    * scheduled for that 24 hour period should be excluded from the schedule. This allows a whole day
    * to be excluded from the schedule without having to itemise every scheduled event.
+   *
+   * See http://schema.org/exceptDate for more context.
    */
   public val exceptDate: ExceptDate?
 
-  /** Defines the number of times a recurring `Event` will take place. */
+  /**
+   * Defines the number of times a recurring `Event` will take place.
+   *
+   * See http://schema.org/repeatCount for more context.
+   */
   @get:Suppress("AutoBoxing") public val repeatCount: Long?
 
   /**
    * Defines the frequency at which `Event`s will occur according to a schedule `Schedule`. The
    * intervals between events should be defined as a `Duration` of time.
+   *
+   * See http://schema.org/repeatFrequency for more context.
    */
   public val repeatFrequency: RepeatFrequency?
 
   /**
    * Indicates the timezone for which the time(s) indicated in the `Schedule` are given. The value
    * provided should be among those listed in the IANA Time Zone Database.
+   *
+   * See http://schema.org/scheduleTimezone for more context.
    */
   public val scheduleTimezone: String?
 
-  /** The start date and time of the item. */
+  /**
+   * The start date and time of the item.
+   *
+   * See http://schema.org/startDate for more context.
+   */
   public val startDate: StartDate?
 
   /**
@@ -132,6 +162,8 @@
    * expected to start. For actions that span a period of time, when the action was performed. E.g.
    * John wrote a book from *January* to December. For media, including audio and video, it's the
    * time offset of the start of a clip within a larger file.
+   *
+   * See http://schema.org/startTime for more context.
    */
   public val startTime: StartTime?
 
@@ -147,7 +179,7 @@
    * Builder for [Schedule].
    *
    * Should not be directly implemented. More methods may be added over time. See
-   * [GenericSchedule.Builder] if you need to extend this builder.
+   * [AbstractSchedule.Builder] if you need to extend this builder.
    */
   public interface Builder<Self : Builder<Self>> : Intangible.Builder<Self> {
     /** Returns a built [Schedule]. */
@@ -280,7 +312,7 @@
 }
 
 /**
- * A generic implementation of [Schedule].
+ * An abstract implementation of [Schedule].
  *
  * Allows for extension like:
  * ```kt
@@ -288,7 +320,7 @@
  *   schedule: Schedule,
  *   val foo: String,
  *   val bars: List<Int>,
- * ) : GenericSchedule<
+ * ) : AbstractSchedule<
  *   MySchedule,
  *   MySchedule.Builder
  * >(schedule) {
@@ -306,17 +338,17 @@
  *   }
  *
  *   class Builder :
- *     GenericSchedule.Builder<
+ *     AbstractSchedule.Builder<
  *       Builder,
  *       MySchedule> {...}
  * }
  * ```
  *
- * Also see [GenericSchedule.Builder].
+ * Also see [AbstractSchedule.Builder].
  */
 @Suppress("UNCHECKED_CAST")
-public abstract class GenericSchedule<
-  Self : GenericSchedule<Self, Builder>, Builder : GenericSchedule.Builder<Builder, Self>>
+public abstract class AbstractSchedule<
+  Self : AbstractSchedule<Self, Builder>, Builder : AbstractSchedule.Builder<Builder, Self>>
 internal constructor(
   public final override val byDays: List<ByDay>,
   public final override val byMonths: List<Long>,
@@ -487,12 +519,12 @@
   }
 
   /**
-   * A generic implementation of [Schedule.Builder].
+   * An abstract implementation of [Schedule.Builder].
    *
    * Allows for extension like:
    * ```kt
    * class MySchedule :
-   *   : GenericSchedule<
+   *   : AbstractSchedule<
    *     MySchedule,
    *     MySchedule.Builder>(...) {
    *
@@ -535,11 +567,11 @@
    * }
    * ```
    *
-   * Also see [GenericSchedule].
+   * Also see [AbstractSchedule].
    */
   @Suppress("StaticFinalBuilder")
-  public abstract class Builder<Self : Builder<Self, Built>, Built : GenericSchedule<Built, Self>> :
-    Schedule.Builder<Self> {
+  public abstract class Builder<
+    Self : Builder<Self, Built>, Built : AbstractSchedule<Built, Self>> : Schedule.Builder<Self> {
     /**
      * Human readable name for the concrete [Self] class.
      *
@@ -834,7 +866,7 @@
   }
 }
 
-internal class ScheduleImpl : GenericSchedule<ScheduleImpl, ScheduleImpl.Builder> {
+internal class ScheduleImpl : AbstractSchedule<ScheduleImpl, ScheduleImpl.Builder> {
   protected override val selfTypeName: String
     get() = "Schedule"
 
@@ -879,7 +911,7 @@
 
   protected override fun toBuilderWithAdditionalPropertiesOnly(): Builder = Builder()
 
-  internal class Builder : GenericSchedule.Builder<Builder, ScheduleImpl>() {
+  internal class Builder : AbstractSchedule.Builder<Builder, ScheduleImpl>() {
     protected override val selfTypeName: String
       get() = "Schedule.Builder"
 
diff --git a/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/SuccessStatus.kt b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/SuccessStatus.kt
new file mode 100644
index 0000000..539acaf
--- /dev/null
+++ b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/SuccessStatus.kt
@@ -0,0 +1,337 @@
+// Copyright 2023 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package androidx.appactions.builtintypes.types
+
+import androidx.appactions.builtintypes.properties.DisambiguatingDescription
+import androidx.appactions.builtintypes.properties.Name
+import java.util.Objects
+import kotlin.Any
+import kotlin.Boolean
+import kotlin.Int
+import kotlin.String
+import kotlin.Suppress
+import kotlin.collections.Map
+import kotlin.collections.emptyMap
+import kotlin.collections.joinToString
+import kotlin.collections.map
+import kotlin.collections.mutableMapOf
+import kotlin.collections.plusAssign
+import kotlin.jvm.JvmStatic
+
+/**
+ * Status indicating that the task was executed successfully.
+ *
+ * See http://schema.googleapis.com/SuccessStatus for context.
+ *
+ * Should not be directly implemented. More properties may be added over time. Instead consider
+ * using [Companion.Builder] or see [AbstractSuccessStatus] if you need to extend this type.
+ */
+public interface SuccessStatus : ExecutionStatus {
+  /** Converts this [SuccessStatus] to its builder with all the properties copied over. */
+  public override fun toBuilder(): Builder<*>
+
+  public companion object {
+    /** Returns a default implementation of [Builder] with no properties set. */
+    @JvmStatic public fun Builder(): Builder<*> = SuccessStatusImpl.Builder()
+  }
+
+  /**
+   * Builder for [SuccessStatus].
+   *
+   * Should not be directly implemented. More methods may be added over time. See
+   * [AbstractSuccessStatus.Builder] if you need to extend this builder.
+   */
+  public interface Builder<Self : Builder<Self>> : ExecutionStatus.Builder<Self> {
+    /** Returns a built [SuccessStatus]. */
+    public override fun build(): SuccessStatus
+  }
+}
+
+/**
+ * An abstract implementation of [SuccessStatus].
+ *
+ * Allows for extension like:
+ * ```kt
+ * class MySuccessStatus internal constructor(
+ *   successStatus: SuccessStatus,
+ *   val foo: String,
+ *   val bars: List<Int>,
+ * ) : AbstractSuccessStatus<
+ *   MySuccessStatus,
+ *   MySuccessStatus.Builder
+ * >(successStatus) {
+ *
+ *   override val selfTypeName =
+ *     "MySuccessStatus"
+ *
+ *   override val additionalProperties: Map<String, Any?>
+ *     get() = mapOf("foo" to foo, "bars" to bars)
+ *
+ *   override fun toBuilderWithAdditionalPropertiesOnly(): Builder {
+ *     return Builder()
+ *       .setFoo(foo)
+ *       .addBars(bars)
+ *   }
+ *
+ *   class Builder :
+ *     AbstractSuccessStatus.Builder<
+ *       Builder,
+ *       MySuccessStatus> {...}
+ * }
+ * ```
+ *
+ * Also see [AbstractSuccessStatus.Builder].
+ */
+@Suppress("UNCHECKED_CAST")
+public abstract class AbstractSuccessStatus<
+  Self : AbstractSuccessStatus<Self, Builder>,
+  Builder : AbstractSuccessStatus.Builder<Builder, Self>>
+internal constructor(
+  public final override val disambiguatingDescription: DisambiguatingDescription?,
+  public final override val identifier: String?,
+  public final override val name: Name?,
+) : SuccessStatus {
+  /**
+   * Human readable name for the concrete [Self] class.
+   *
+   * Used in the [toString] output.
+   */
+  protected abstract val selfTypeName: String
+
+  /**
+   * The additional properties that exist on the concrete [Self] class.
+   *
+   * Used for equality comparison and computing the hash code.
+   */
+  protected abstract val additionalProperties: Map<String, Any?>
+
+  /** A copy-constructor that copies over properties from another [SuccessStatus] instance. */
+  public constructor(
+    successStatus: SuccessStatus
+  ) : this(successStatus.disambiguatingDescription, successStatus.identifier, successStatus.name)
+
+  /**
+   * Returns a concrete [Builder] with the additional, non-[SuccessStatus] properties copied over.
+   */
+  protected abstract fun toBuilderWithAdditionalPropertiesOnly(): Builder
+
+  public final override fun toBuilder(): Builder =
+    toBuilderWithAdditionalPropertiesOnly()
+      .setDisambiguatingDescription(disambiguatingDescription)
+      .setIdentifier(identifier)
+      .setName(name)
+
+  public final override fun equals(other: Any?): Boolean {
+    if (this === other) return true
+    if (other == null || this::class.java != other::class.java) return false
+    other as Self
+    if (disambiguatingDescription != other.disambiguatingDescription) return false
+    if (identifier != other.identifier) return false
+    if (name != other.name) return false
+    if (additionalProperties != other.additionalProperties) return false
+    return true
+  }
+
+  public final override fun hashCode(): Int =
+    Objects.hash(disambiguatingDescription, identifier, name, additionalProperties)
+
+  public final override fun toString(): String {
+    val attributes = mutableMapOf<String, String>()
+    if (disambiguatingDescription != null) {
+      attributes["disambiguatingDescription"] =
+        disambiguatingDescription.toString(includeWrapperName = false)
+    }
+    if (identifier != null) {
+      attributes["identifier"] = identifier
+    }
+    if (name != null) {
+      attributes["name"] = name.toString(includeWrapperName = false)
+    }
+    attributes += additionalProperties.map { (k, v) -> k to v.toString() }
+    val commaSeparated = attributes.entries.joinToString(separator = ", ") { (k, v) -> """$k=$v""" }
+    return """$selfTypeName($commaSeparated)"""
+  }
+
+  /**
+   * An abstract implementation of [SuccessStatus.Builder].
+   *
+   * Allows for extension like:
+   * ```kt
+   * class MySuccessStatus :
+   *   : AbstractSuccessStatus<
+   *     MySuccessStatus,
+   *     MySuccessStatus.Builder>(...) {
+   *
+   *   class Builder
+   *   : Builder<
+   *       Builder,
+   *       MySuccessStatus
+   *   >() {
+   *     private var foo: String? = null
+   *     private val bars = mutableListOf<Int>()
+   *
+   *     override val selfTypeName =
+   *       "MySuccessStatus.Builder"
+   *
+   *     override val additionalProperties: Map<String, Any?>
+   *       get() = mapOf("foo" to foo, "bars" to bars)
+   *
+   *     override fun buildFromSuccessStatus(
+   *       successStatus: SuccessStatus
+   *     ): MySuccessStatus {
+   *       return MySuccessStatus(
+   *         successStatus,
+   *         foo,
+   *         bars.toList()
+   *       )
+   *     }
+   *
+   *     fun setFoo(string: String): Builder {
+   *       return apply { foo = string }
+   *     }
+   *
+   *     fun addBar(int: Int): Builder {
+   *       return apply { bars += int }
+   *     }
+   *
+   *     fun addBars(values: Iterable<Int>): Builder {
+   *       return apply { bars += values }
+   *     }
+   *   }
+   * }
+   * ```
+   *
+   * Also see [AbstractSuccessStatus].
+   */
+  @Suppress("StaticFinalBuilder")
+  public abstract class Builder<
+    Self : Builder<Self, Built>, Built : AbstractSuccessStatus<Built, Self>> :
+    SuccessStatus.Builder<Self> {
+    /**
+     * Human readable name for the concrete [Self] class.
+     *
+     * Used in the [toString] output.
+     */
+    @get:Suppress("GetterOnBuilder") protected abstract val selfTypeName: String
+
+    /**
+     * The additional properties that exist on the concrete [Self] class.
+     *
+     * Used for equality comparison and computing the hash code.
+     */
+    @get:Suppress("GetterOnBuilder") protected abstract val additionalProperties: Map<String, Any?>
+
+    private var disambiguatingDescription: DisambiguatingDescription? = null
+
+    private var identifier: String? = null
+
+    private var name: Name? = null
+
+    /**
+     * Builds a concrete [Built] instance, given a built [SuccessStatus].
+     *
+     * Subclasses should override this method to build a concrete [Built] instance that holds both
+     * the [SuccessStatus]-specific properties and the subclass specific [additionalProperties].
+     *
+     * See the sample code in the documentation of this class for more context.
+     */
+    @Suppress("BuilderSetStyle")
+    protected abstract fun buildFromSuccessStatus(successStatus: SuccessStatus): Built
+
+    public final override fun build(): Built =
+      buildFromSuccessStatus(SuccessStatusImpl(disambiguatingDescription, identifier, name))
+
+    public final override fun setDisambiguatingDescription(
+      disambiguatingDescription: DisambiguatingDescription?
+    ): Self {
+      this.disambiguatingDescription = disambiguatingDescription
+      return this as Self
+    }
+
+    public final override fun setIdentifier(text: String?): Self {
+      this.identifier = text
+      return this as Self
+    }
+
+    public final override fun setName(name: Name?): Self {
+      this.name = name
+      return this as Self
+    }
+
+    @Suppress("BuilderSetStyle")
+    public final override fun equals(other: Any?): Boolean {
+      if (this === other) return true
+      if (other == null || this::class.java != other::class.java) return false
+      other as Self
+      if (disambiguatingDescription != other.disambiguatingDescription) return false
+      if (identifier != other.identifier) return false
+      if (name != other.name) return false
+      if (additionalProperties != other.additionalProperties) return false
+      return true
+    }
+
+    @Suppress("BuilderSetStyle")
+    public final override fun hashCode(): Int =
+      Objects.hash(disambiguatingDescription, identifier, name, additionalProperties)
+
+    @Suppress("BuilderSetStyle")
+    public final override fun toString(): String {
+      val attributes = mutableMapOf<String, String>()
+      if (disambiguatingDescription != null) {
+        attributes["disambiguatingDescription"] =
+          disambiguatingDescription!!.toString(includeWrapperName = false)
+      }
+      if (identifier != null) {
+        attributes["identifier"] = identifier!!
+      }
+      if (name != null) {
+        attributes["name"] = name!!.toString(includeWrapperName = false)
+      }
+      attributes += additionalProperties.map { (k, v) -> k to v.toString() }
+      val commaSeparated =
+        attributes.entries.joinToString(separator = ", ") { (k, v) -> """$k=$v""" }
+      return """$selfTypeName($commaSeparated)"""
+    }
+  }
+}
+
+internal class SuccessStatusImpl :
+  AbstractSuccessStatus<SuccessStatusImpl, SuccessStatusImpl.Builder> {
+  protected override val selfTypeName: String
+    get() = "SuccessStatus"
+
+  protected override val additionalProperties: Map<String, Any?>
+    get() = emptyMap()
+
+  public constructor(
+    disambiguatingDescription: DisambiguatingDescription?,
+    identifier: String?,
+    name: Name?,
+  ) : super(disambiguatingDescription, identifier, name)
+
+  public constructor(successStatus: SuccessStatus) : super(successStatus)
+
+  protected override fun toBuilderWithAdditionalPropertiesOnly(): Builder = Builder()
+
+  internal class Builder : AbstractSuccessStatus.Builder<Builder, SuccessStatusImpl>() {
+    protected override val selfTypeName: String
+      get() = "SuccessStatus.Builder"
+
+    protected override val additionalProperties: Map<String, Any?>
+      get() = emptyMap()
+
+    protected override fun buildFromSuccessStatus(successStatus: SuccessStatus): SuccessStatusImpl =
+      successStatus as? SuccessStatusImpl ?: SuccessStatusImpl(successStatus)
+  }
+}
diff --git a/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Thing.kt b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Thing.kt
index 3080c42..d39cd73 100644
--- a/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Thing.kt
+++ b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Thing.kt
@@ -35,23 +35,31 @@
  * See http://schema.org/Thing for context.
  *
  * Should not be directly implemented. More properties may be added over time. Instead consider
- * using [Companion.Builder] or see [GenericThing] if you need to extend this type.
+ * using [Companion.Builder] or see [AbstractThing] if you need to extend this type.
  */
 public interface Thing {
   /**
    * A sub property of description. A short description of the item used to disambiguate from other,
    * similar items. Information from other properties (in particular, name) may be necessary for the
    * description to be useful for disambiguation.
+   *
+   * See http://schema.org/disambiguatingDescription for more context.
    */
   public val disambiguatingDescription: DisambiguatingDescription?
 
   /**
    * The identifier property represents any kind of identifier for any kind of Thing, such as ISBNs,
    * GTIN codes, UUIDs etc.
+   *
+   * See http://schema.org/identifier for more context.
    */
   public val identifier: String?
 
-  /** The name of the item. */
+  /**
+   * The name of the item.
+   *
+   * See http://schema.org/name for more context.
+   */
   public val name: Name?
 
   /** Converts this [Thing] to its builder with all the properties copied over. */
@@ -66,7 +74,7 @@
    * Builder for [Thing].
    *
    * Should not be directly implemented. More methods may be added over time. See
-   * [GenericThing.Builder] if you need to extend this builder.
+   * [AbstractThing.Builder] if you need to extend this builder.
    */
   @Suppress("StaticFinalBuilder")
   public interface Builder<Self : Builder<Self>> {
@@ -94,7 +102,7 @@
 }
 
 /**
- * A generic implementation of [Thing].
+ * An abstract implementation of [Thing].
  *
  * Allows for extension like:
  * ```kt
@@ -102,7 +110,7 @@
  *   thing: Thing,
  *   val foo: String,
  *   val bars: List<Int>,
- * ) : GenericThing<
+ * ) : AbstractThing<
  *   MyThing,
  *   MyThing.Builder
  * >(thing) {
@@ -120,17 +128,17 @@
  *   }
  *
  *   class Builder :
- *     GenericThing.Builder<
+ *     AbstractThing.Builder<
  *       Builder,
  *       MyThing> {...}
  * }
  * ```
  *
- * Also see [GenericThing.Builder].
+ * Also see [AbstractThing.Builder].
  */
 @Suppress("UNCHECKED_CAST")
-public abstract class GenericThing<
-  Self : GenericThing<Self, Builder>, Builder : GenericThing.Builder<Builder, Self>>
+public abstract class AbstractThing<
+  Self : AbstractThing<Self, Builder>, Builder : AbstractThing.Builder<Builder, Self>>
 internal constructor(
   public final override val disambiguatingDescription: DisambiguatingDescription?,
   public final override val identifier: String?,
@@ -196,12 +204,12 @@
   }
 
   /**
-   * A generic implementation of [Thing.Builder].
+   * An abstract implementation of [Thing.Builder].
    *
    * Allows for extension like:
    * ```kt
    * class MyThing :
-   *   : GenericThing<
+   *   : AbstractThing<
    *     MyThing,
    *     MyThing.Builder>(...) {
    *
@@ -244,10 +252,10 @@
    * }
    * ```
    *
-   * Also see [GenericThing].
+   * Also see [AbstractThing].
    */
   @Suppress("StaticFinalBuilder")
-  public abstract class Builder<Self : Builder<Self, Built>, Built : GenericThing<Built, Self>> :
+  public abstract class Builder<Self : Builder<Self, Built>, Built : AbstractThing<Built, Self>> :
     Thing.Builder<Self> {
     /**
      * Human readable name for the concrete [Self] class.
@@ -336,7 +344,7 @@
   }
 }
 
-internal class ThingImpl : GenericThing<ThingImpl, ThingImpl.Builder> {
+internal class ThingImpl : AbstractThing<ThingImpl, ThingImpl.Builder> {
   protected override val selfTypeName: String
     get() = "Thing"
 
@@ -353,7 +361,7 @@
 
   protected override fun toBuilderWithAdditionalPropertiesOnly(): Builder = Builder()
 
-  internal class Builder : GenericThing.Builder<Builder, ThingImpl>() {
+  internal class Builder : AbstractThing.Builder<Builder, ThingImpl>() {
     protected override val selfTypeName: String
       get() = "Thing.Builder"
 
diff --git a/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Timer.kt b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Timer.kt
index b9d5de4..434fdf6 100644
--- a/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Timer.kt
+++ b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/Timer.kt
@@ -36,10 +36,14 @@
  * See http://schema.googleapis.com/Timer for context.
  *
  * Should not be directly implemented. More properties may be added over time. Instead consider
- * using [Companion.Builder] or see [GenericTimer] if you need to extend this type.
+ * using [Companion.Builder] or see [AbstractTimer] if you need to extend this type.
  */
 public interface Timer : Thing {
-  /** The duration of the item (movie, audio recording, event, etc.). */
+  /**
+   * The duration of the item (movie, audio recording, event, etc.).
+   *
+   * See http://schema.org/duration for more context.
+   */
   public val duration: Duration?
 
   /** Converts this [Timer] to its builder with all the properties copied over. */
@@ -54,7 +58,7 @@
    * Builder for [Timer].
    *
    * Should not be directly implemented. More methods may be added over time. See
-   * [GenericTimer.Builder] if you need to extend this builder.
+   * [AbstractTimer.Builder] if you need to extend this builder.
    */
   public interface Builder<Self : Builder<Self>> : Thing.Builder<Self> {
     /** Returns a built [Timer]. */
@@ -66,7 +70,7 @@
 }
 
 /**
- * A generic implementation of [Timer].
+ * An abstract implementation of [Timer].
  *
  * Allows for extension like:
  * ```kt
@@ -74,7 +78,7 @@
  *   timer: Timer,
  *   val foo: String,
  *   val bars: List<Int>,
- * ) : GenericTimer<
+ * ) : AbstractTimer<
  *   MyTimer,
  *   MyTimer.Builder
  * >(timer) {
@@ -92,17 +96,17 @@
  *   }
  *
  *   class Builder :
- *     GenericTimer.Builder<
+ *     AbstractTimer.Builder<
  *       Builder,
  *       MyTimer> {...}
  * }
  * ```
  *
- * Also see [GenericTimer.Builder].
+ * Also see [AbstractTimer.Builder].
  */
 @Suppress("UNCHECKED_CAST")
-public abstract class GenericTimer<
-  Self : GenericTimer<Self, Builder>, Builder : GenericTimer.Builder<Builder, Self>>
+public abstract class AbstractTimer<
+  Self : AbstractTimer<Self, Builder>, Builder : AbstractTimer.Builder<Builder, Self>>
 internal constructor(
   public final override val duration: Duration?,
   public final override val disambiguatingDescription: DisambiguatingDescription?,
@@ -174,12 +178,12 @@
   }
 
   /**
-   * A generic implementation of [Timer.Builder].
+   * An abstract implementation of [Timer.Builder].
    *
    * Allows for extension like:
    * ```kt
    * class MyTimer :
-   *   : GenericTimer<
+   *   : AbstractTimer<
    *     MyTimer,
    *     MyTimer.Builder>(...) {
    *
@@ -222,10 +226,10 @@
    * }
    * ```
    *
-   * Also see [GenericTimer].
+   * Also see [AbstractTimer].
    */
   @Suppress("StaticFinalBuilder")
-  public abstract class Builder<Self : Builder<Self, Built>, Built : GenericTimer<Built, Self>> :
+  public abstract class Builder<Self : Builder<Self, Built>, Built : AbstractTimer<Built, Self>> :
     Timer.Builder<Self> {
     /**
      * Human readable name for the concrete [Self] class.
@@ -325,7 +329,7 @@
   }
 }
 
-internal class TimerImpl : GenericTimer<TimerImpl, TimerImpl.Builder> {
+internal class TimerImpl : AbstractTimer<TimerImpl, TimerImpl.Builder> {
   protected override val selfTypeName: String
     get() = "Timer"
 
@@ -343,7 +347,7 @@
 
   protected override fun toBuilderWithAdditionalPropertiesOnly(): Builder = Builder()
 
-  internal class Builder : GenericTimer.Builder<Builder, TimerImpl>() {
+  internal class Builder : AbstractTimer.Builder<Builder, TimerImpl>() {
     protected override val selfTypeName: String
       get() = "Timer.Builder"
 
diff --git a/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/UnsupportedOperationStatus.kt b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/UnsupportedOperationStatus.kt
new file mode 100644
index 0000000..173eda4
--- /dev/null
+++ b/appactions/builtintypes/builtintypes-core/src/main/java/androidx/appactions/builtintypes/types/UnsupportedOperationStatus.kt
@@ -0,0 +1,361 @@
+// Copyright 2023 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package androidx.appactions.builtintypes.types
+
+import androidx.appactions.builtintypes.properties.DisambiguatingDescription
+import androidx.appactions.builtintypes.properties.Name
+import java.util.Objects
+import kotlin.Any
+import kotlin.Boolean
+import kotlin.Int
+import kotlin.String
+import kotlin.Suppress
+import kotlin.collections.Map
+import kotlin.collections.emptyMap
+import kotlin.collections.joinToString
+import kotlin.collections.map
+import kotlin.collections.mutableMapOf
+import kotlin.collections.plusAssign
+import kotlin.jvm.JvmStatic
+
+/**
+ * Status indicating that the operation is not supported, e.g. updating an unsupported field.
+ *
+ * See http://schema.googleapis.com/UnsupportedOperationStatus for context.
+ *
+ * Should not be directly implemented. More properties may be added over time. Instead consider
+ * using [Companion.Builder] or see [AbstractUnsupportedOperationStatus] if you need to extend this
+ * type.
+ */
+public interface UnsupportedOperationStatus : ExecutionStatus {
+  /**
+   * Converts this [UnsupportedOperationStatus] to its builder with all the properties copied over.
+   */
+  public override fun toBuilder(): Builder<*>
+
+  public companion object {
+    /** Returns a default implementation of [Builder] with no properties set. */
+    @JvmStatic public fun Builder(): Builder<*> = UnsupportedOperationStatusImpl.Builder()
+  }
+
+  /**
+   * Builder for [UnsupportedOperationStatus].
+   *
+   * Should not be directly implemented. More methods may be added over time. See
+   * [AbstractUnsupportedOperationStatus.Builder] if you need to extend this builder.
+   */
+  public interface Builder<Self : Builder<Self>> : ExecutionStatus.Builder<Self> {
+    /** Returns a built [UnsupportedOperationStatus]. */
+    public override fun build(): UnsupportedOperationStatus
+  }
+}
+
+/**
+ * An abstract implementation of [UnsupportedOperationStatus].
+ *
+ * Allows for extension like:
+ * ```kt
+ * class MyUnsupportedOperationStatus internal constructor(
+ *   unsupportedOperationStatus: UnsupportedOperationStatus,
+ *   val foo: String,
+ *   val bars: List<Int>,
+ * ) : AbstractUnsupportedOperationStatus<
+ *   MyUnsupportedOperationStatus,
+ *   MyUnsupportedOperationStatus.Builder
+ * >(unsupportedOperationStatus) {
+ *
+ *   override val selfTypeName =
+ *     "MyUnsupportedOperationStatus"
+ *
+ *   override val additionalProperties: Map<String, Any?>
+ *     get() = mapOf("foo" to foo, "bars" to bars)
+ *
+ *   override fun toBuilderWithAdditionalPropertiesOnly(): Builder {
+ *     return Builder()
+ *       .setFoo(foo)
+ *       .addBars(bars)
+ *   }
+ *
+ *   class Builder :
+ *     AbstractUnsupportedOperationStatus.Builder<
+ *       Builder,
+ *       MyUnsupportedOperationStatus> {...}
+ * }
+ * ```
+ *
+ * Also see [AbstractUnsupportedOperationStatus.Builder].
+ */
+@Suppress("UNCHECKED_CAST")
+public abstract class AbstractUnsupportedOperationStatus<
+  Self : AbstractUnsupportedOperationStatus<Self, Builder>,
+  Builder : AbstractUnsupportedOperationStatus.Builder<Builder, Self>>
+internal constructor(
+  public final override val disambiguatingDescription: DisambiguatingDescription?,
+  public final override val identifier: String?,
+  public final override val name: Name?,
+) : UnsupportedOperationStatus {
+  /**
+   * Human readable name for the concrete [Self] class.
+   *
+   * Used in the [toString] output.
+   */
+  protected abstract val selfTypeName: String
+
+  /**
+   * The additional properties that exist on the concrete [Self] class.
+   *
+   * Used for equality comparison and computing the hash code.
+   */
+  protected abstract val additionalProperties: Map<String, Any?>
+
+  /**
+   * A copy-constructor that copies over properties from another [UnsupportedOperationStatus]
+   * instance.
+   */
+  public constructor(
+    unsupportedOperationStatus: UnsupportedOperationStatus
+  ) : this(
+    unsupportedOperationStatus.disambiguatingDescription,
+    unsupportedOperationStatus.identifier,
+    unsupportedOperationStatus.name
+  )
+
+  /**
+   * Returns a concrete [Builder] with the additional, non-[UnsupportedOperationStatus] properties
+   * copied over.
+   */
+  protected abstract fun toBuilderWithAdditionalPropertiesOnly(): Builder
+
+  public final override fun toBuilder(): Builder =
+    toBuilderWithAdditionalPropertiesOnly()
+      .setDisambiguatingDescription(disambiguatingDescription)
+      .setIdentifier(identifier)
+      .setName(name)
+
+  public final override fun equals(other: Any?): Boolean {
+    if (this === other) return true
+    if (other == null || this::class.java != other::class.java) return false
+    other as Self
+    if (disambiguatingDescription != other.disambiguatingDescription) return false
+    if (identifier != other.identifier) return false
+    if (name != other.name) return false
+    if (additionalProperties != other.additionalProperties) return false
+    return true
+  }
+
+  public final override fun hashCode(): Int =
+    Objects.hash(disambiguatingDescription, identifier, name, additionalProperties)
+
+  public final override fun toString(): String {
+    val attributes = mutableMapOf<String, String>()
+    if (disambiguatingDescription != null) {
+      attributes["disambiguatingDescription"] =
+        disambiguatingDescription.toString(includeWrapperName = false)
+    }
+    if (identifier != null) {
+      attributes["identifier"] = identifier
+    }
+    if (name != null) {
+      attributes["name"] = name.toString(includeWrapperName = false)
+    }
+    attributes += additionalProperties.map { (k, v) -> k to v.toString() }
+    val commaSeparated = attributes.entries.joinToString(separator = ", ") { (k, v) -> """$k=$v""" }
+    return """$selfTypeName($commaSeparated)"""
+  }
+
+  /**
+   * An abstract implementation of [UnsupportedOperationStatus.Builder].
+   *
+   * Allows for extension like:
+   * ```kt
+   * class MyUnsupportedOperationStatus :
+   *   : AbstractUnsupportedOperationStatus<
+   *     MyUnsupportedOperationStatus,
+   *     MyUnsupportedOperationStatus.Builder>(...) {
+   *
+   *   class Builder
+   *   : Builder<
+   *       Builder,
+   *       MyUnsupportedOperationStatus
+   *   >() {
+   *     private var foo: String? = null
+   *     private val bars = mutableListOf<Int>()
+   *
+   *     override val selfTypeName =
+   *       "MyUnsupportedOperationStatus.Builder"
+   *
+   *     override val additionalProperties: Map<String, Any?>
+   *       get() = mapOf("foo" to foo, "bars" to bars)
+   *
+   *     override fun buildFromUnsupportedOperationStatus(
+   *       unsupportedOperationStatus: UnsupportedOperationStatus
+   *     ): MyUnsupportedOperationStatus {
+   *       return MyUnsupportedOperationStatus(
+   *         unsupportedOperationStatus,
+   *         foo,
+   *         bars.toList()
+   *       )
+   *     }
+   *
+   *     fun setFoo(string: String): Builder {
+   *       return apply { foo = string }
+   *     }
+   *
+   *     fun addBar(int: Int): Builder {
+   *       return apply { bars += int }
+   *     }
+   *
+   *     fun addBars(values: Iterable<Int>): Builder {
+   *       return apply { bars += values }
+   *     }
+   *   }
+   * }
+   * ```
+   *
+   * Also see [AbstractUnsupportedOperationStatus].
+   */
+  @Suppress("StaticFinalBuilder")
+  public abstract class Builder<
+    Self : Builder<Self, Built>, Built : AbstractUnsupportedOperationStatus<Built, Self>> :
+    UnsupportedOperationStatus.Builder<Self> {
+    /**
+     * Human readable name for the concrete [Self] class.
+     *
+     * Used in the [toString] output.
+     */
+    @get:Suppress("GetterOnBuilder") protected abstract val selfTypeName: String
+
+    /**
+     * The additional properties that exist on the concrete [Self] class.
+     *
+     * Used for equality comparison and computing the hash code.
+     */
+    @get:Suppress("GetterOnBuilder") protected abstract val additionalProperties: Map<String, Any?>
+
+    private var disambiguatingDescription: DisambiguatingDescription? = null
+
+    private var identifier: String? = null
+
+    private var name: Name? = null
+
+    /**
+     * Builds a concrete [Built] instance, given a built [UnsupportedOperationStatus].
+     *
+     * Subclasses should override this method to build a concrete [Built] instance that holds both
+     * the [UnsupportedOperationStatus]-specific properties and the subclass specific
+     * [additionalProperties].
+     *
+     * See the sample code in the documentation of this class for more context.
+     */
+    @Suppress("BuilderSetStyle")
+    protected abstract fun buildFromUnsupportedOperationStatus(
+      unsupportedOperationStatus: UnsupportedOperationStatus
+    ): Built
+
+    public final override fun build(): Built =
+      buildFromUnsupportedOperationStatus(
+        UnsupportedOperationStatusImpl(disambiguatingDescription, identifier, name)
+      )
+
+    public final override fun setDisambiguatingDescription(
+      disambiguatingDescription: DisambiguatingDescription?
+    ): Self {
+      this.disambiguatingDescription = disambiguatingDescription
+      return this as Self
+    }
+
+    public final override fun setIdentifier(text: String?): Self {
+      this.identifier = text
+      return this as Self
+    }
+
+    public final override fun setName(name: Name?): Self {
+      this.name = name
+      return this as Self
+    }
+
+    @Suppress("BuilderSetStyle")
+    public final override fun equals(other: Any?): Boolean {
+      if (this === other) return true
+      if (other == null || this::class.java != other::class.java) return false
+      other as Self
+      if (disambiguatingDescription != other.disambiguatingDescription) return false
+      if (identifier != other.identifier) return false
+      if (name != other.name) return false
+      if (additionalProperties != other.additionalProperties) return false
+      return true
+    }
+
+    @Suppress("BuilderSetStyle")
+    public final override fun hashCode(): Int =
+      Objects.hash(disambiguatingDescription, identifier, name, additionalProperties)
+
+    @Suppress("BuilderSetStyle")
+    public final override fun toString(): String {
+      val attributes = mutableMapOf<String, String>()
+      if (disambiguatingDescription != null) {
+        attributes["disambiguatingDescription"] =
+          disambiguatingDescription!!.toString(includeWrapperName = false)
+      }
+      if (identifier != null) {
+        attributes["identifier"] = identifier!!
+      }
+      if (name != null) {
+        attributes["name"] = name!!.toString(includeWrapperName = false)
+      }
+      attributes += additionalProperties.map { (k, v) -> k to v.toString() }
+      val commaSeparated =
+        attributes.entries.joinToString(separator = ", ") { (k, v) -> """$k=$v""" }
+      return """$selfTypeName($commaSeparated)"""
+    }
+  }
+}
+
+internal class UnsupportedOperationStatusImpl :
+  AbstractUnsupportedOperationStatus<
+    UnsupportedOperationStatusImpl, UnsupportedOperationStatusImpl.Builder
+  > {
+  protected override val selfTypeName: String
+    get() = "UnsupportedOperationStatus"
+
+  protected override val additionalProperties: Map<String, Any?>
+    get() = emptyMap()
+
+  public constructor(
+    disambiguatingDescription: DisambiguatingDescription?,
+    identifier: String?,
+    name: Name?,
+  ) : super(disambiguatingDescription, identifier, name)
+
+  public constructor(
+    unsupportedOperationStatus: UnsupportedOperationStatus
+  ) : super(unsupportedOperationStatus)
+
+  protected override fun toBuilderWithAdditionalPropertiesOnly(): Builder = Builder()
+
+  internal class Builder :
+    AbstractUnsupportedOperationStatus.Builder<Builder, UnsupportedOperationStatusImpl>() {
+    protected override val selfTypeName: String
+      get() = "UnsupportedOperationStatus.Builder"
+
+    protected override val additionalProperties: Map<String, Any?>
+      get() = emptyMap()
+
+    protected override fun buildFromUnsupportedOperationStatus(
+      unsupportedOperationStatus: UnsupportedOperationStatus
+    ): UnsupportedOperationStatusImpl =
+      unsupportedOperationStatus as? UnsupportedOperationStatusImpl
+        ?: UnsupportedOperationStatusImpl(unsupportedOperationStatus)
+  }
+}
diff --git a/appactions/builtintypes/builtintypes-core/src/test/java/androidx/appactions/builtintypes/types/ExtensionTest.kt b/appactions/builtintypes/builtintypes-core/src/test/java/androidx/appactions/builtintypes/types/ExtensionTest.kt
index 87ed941..56ae906 100644
--- a/appactions/builtintypes/builtintypes-core/src/test/java/androidx/appactions/builtintypes/types/ExtensionTest.kt
+++ b/appactions/builtintypes/builtintypes-core/src/test/java/androidx/appactions/builtintypes/types/ExtensionTest.kt
@@ -25,7 +25,7 @@
 class ExtensionTest {
 
   class MyThing internal constructor(thing: Thing, val foo: String?, val bars: List<Int>) :
-    GenericThing<MyThing, MyThing.Builder>(thing) {
+    AbstractThing<MyThing, MyThing.Builder>(thing) {
     override val selfTypeName = "MyThing"
     override val additionalProperties: Map<String, Any?>
       get() = mapOf("foo" to foo, "bars" to bars)
@@ -34,7 +34,7 @@
       return Builder().setFoo(foo).addBars(bars)
     }
 
-    class Builder : GenericThing.Builder<Builder, MyThing>() {
+    class Builder : AbstractThing.Builder<Builder, MyThing>() {
       private var foo: String? = null
       private val bars: MutableList<Int> = mutableListOf()
 
diff --git a/benchmark/benchmark-common/src/main/java/androidx/benchmark/Api21.kt b/benchmark/benchmark-common/src/main/java/androidx/benchmark/Api21.kt
index adb0d14..745a4a9 100644
--- a/benchmark/benchmark-common/src/main/java/androidx/benchmark/Api21.kt
+++ b/benchmark/benchmark-common/src/main/java/androidx/benchmark/Api21.kt
@@ -22,13 +22,15 @@
 import android.os.Debug
 import android.os.Environment
 import androidx.annotation.RequiresApi
+import androidx.annotation.RestrictTo
 import java.io.File
 
 internal fun startMethodTracingSampling(tracePath: String, bufferSize: Int, intervalUs: Int) {
     Debug.startMethodTracingSampling(tracePath, bufferSize, intervalUs)
 }
 
-internal fun Context.getFirstMountedMediaDir(): File? {
+@RestrictTo(RestrictTo.Scope.LIBRARY)
+fun Context.getFirstMountedMediaDir(): File? {
     @Suppress("DEPRECATION")
     return externalMediaDirs.firstOrNull {
         Environment.getExternalStorageState(it) == Environment.MEDIA_MOUNTED
diff --git a/benchmark/benchmark-common/src/main/java/androidx/benchmark/Arguments.kt b/benchmark/benchmark-common/src/main/java/androidx/benchmark/Arguments.kt
index 5b3fe34..126070c 100644
--- a/benchmark/benchmark-common/src/main/java/androidx/benchmark/Arguments.kt
+++ b/benchmark/benchmark-common/src/main/java/androidx/benchmark/Arguments.kt
@@ -64,6 +64,7 @@
     val killProcessDelayMillis: Long
     val enableStartupProfiles: Boolean
     val strictStartupProfiles: Boolean
+    val methodTracingOptions: String
     val dryRunMode: Boolean
 
     // internal properties are microbenchmark only
@@ -196,6 +197,9 @@
 
         strictStartupProfiles =
             arguments.getBenchmarkArgument("startupProfiles.strict")?.toBoolean() ?: false
+
+        methodTracingOptions =
+            arguments.getBenchmarkArgument("methodTracing.options") ?: ""
     }
 
     fun throwIfError() {
diff --git a/benchmark/benchmark-internal/build.gradle b/benchmark/benchmark-internal/build.gradle
new file mode 100644
index 0000000..45da453
--- /dev/null
+++ b/benchmark/benchmark-internal/build.gradle
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import androidx.build.Publish
+
+plugins {
+    id("AndroidXPlugin")
+    id("com.android.library")
+    id("kotlin-android")
+}
+
+android {
+    namespace "androidx.benchmark.internal"
+}
+
+dependencies {
+    implementation(libs.kotlinStdlib)
+    api("androidx.annotation:annotation:1.1.0")
+    api("androidx.annotation:annotation-experimental:1.0.0")
+    implementation("androidx.tracing:tracing-ktx:1.0.0")
+    implementation(libs.testMonitor)
+    androidTestImplementation(libs.testRules)
+    androidTestImplementation(libs.testExtJunit)
+    androidTestImplementation(libs.kotlinTest)
+}
+
+androidx {
+    name = "Benchmark - Internal"
+    publish = Publish.SNAPSHOT_ONLY
+    inceptionYear = "2023"
+    description = "Android Benchmark - Internal"
+}
diff --git a/benchmark/benchmark-internal/src/main/AndroidManifest.xml b/benchmark/benchmark-internal/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..819d8da
--- /dev/null
+++ b/benchmark/benchmark-internal/src/main/AndroidManifest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+  ~ Copyright (C) 2023 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <application>
+        <receiver
+            android:name=".MethodTracingReceiver"
+            android:directBootAware="false"
+            android:enabled="true"
+            android:exported="true"
+            android:permission="android.permission.DUMP">
+            <intent-filter>
+                <action android:name="androidx.benchmark.experiments.ACTION_METHOD_TRACE" />
+            </intent-filter>
+        </receiver>
+    </application>
+
+    <!-- Needed to dump the method traces. -->
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+</manifest>
diff --git a/benchmark/benchmark-internal/src/main/java/androidx/benchmark/internal/MethodTracingReceiver.kt b/benchmark/benchmark-internal/src/main/java/androidx/benchmark/internal/MethodTracingReceiver.kt
new file mode 100644
index 0000000..9cbc912
--- /dev/null
+++ b/benchmark/benchmark-internal/src/main/java/androidx/benchmark/internal/MethodTracingReceiver.kt
@@ -0,0 +1,168 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.benchmark.internal
+
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.os.Build
+import android.os.Debug
+import android.os.Environment
+import android.util.Log
+import androidx.annotation.DoNotInline
+import androidx.annotation.RequiresApi
+import androidx.benchmark.internal.MethodTracingApi21.getFirstMountedMediaDir
+import java.io.File
+
+/**
+ * Used to toggle method tracing on the application.
+ */
+class MethodTracingReceiver : BroadcastReceiver() {
+    override fun onReceive(context: Context, intent: Intent?) {
+        val intentAction = intent?.action ?: ""
+        if (intentAction != ACTION_METHOD_TRACE) {
+            val message = "Unknown action $intentAction"
+            Log.w(TAG, message)
+            resultCode = RESULT_CODE_FAILED
+            return
+        }
+        methodTracingRequest(context, intent)
+    }
+
+    private fun methodTracingRequest(context: Context, intent: Intent?) {
+        val packageName = context.packageName
+        val extras = intent?.extras
+        val action = extras?.getString(ACTION)
+        val fileName = extras?.getString(UNIQUE_NAME)
+        if (action.isNullOrBlank()) {
+            Log.d(TAG, "Unknown action.")
+            resultCode = RESULT_CODE_FAILED
+            return
+        }
+        when (action) {
+            METHOD_TRACE_START_SAMPLED -> {
+                require(!fileName.isNullOrBlank()) {
+                    Log.d(TAG, "Missing output file name")
+                    resultCode = RESULT_CODE_FAILED
+                    return
+                }
+                if (Build.VERSION.SDK_INT >= 21) {
+                    MethodTracingApi21.startMethodTracingSampling(
+                        tracePath = outputTracePath(context, fileName),
+                        bufferSize = BUFFER_SIZE_BYTES,
+                        intervalUs = INTERVAL_MICRO_SECONDS
+                    )
+                } else {
+                    // Fallback
+                    startMethodTracing(fileName, context)
+                }
+            }
+
+            METHOD_TRACE_START -> {
+                startMethodTracing(fileName, context)
+            }
+
+            METHOD_TRACE_END -> {
+                Log.d(TAG, "Stopping method tracing for $packageName")
+                Debug.stopMethodTracing()
+                resultCode = RESULT_CODE_SUCCESS
+            }
+
+            else -> {
+                Log.w(TAG, "Unknown request: $intent")
+                resultCode = RESULT_CODE_FAILED
+            }
+        }
+    }
+
+    private fun startMethodTracing(fileName: String?, context: Context) {
+        require(!fileName.isNullOrBlank()) {
+            Log.d(TAG, "Missing output file name")
+            resultCode = RESULT_CODE_FAILED
+            return
+        }
+        Debug.startMethodTracing(
+            outputTracePath(context, fileName),
+            BUFFER_SIZE_BYTES
+        )
+        Log.d(TAG, "Enabling method tracing on ${context.packageName} ($fileName)")
+        resultCode = RESULT_CODE_SUCCESS
+    }
+
+    companion object {
+        private const val TAG = "MethodTracingReceiver"
+
+        // Intents
+        private const val ACTION_METHOD_TRACE = "androidx.benchmark.experiments.ACTION_METHOD_TRACE"
+
+        // Extras
+        private const val ACTION = "ACTION"
+        private const val UNIQUE_NAME = "UNIQUE_NAME"
+
+        // Actions
+        private const val METHOD_TRACE_START = "METHOD_TRACE_START"
+        private const val METHOD_TRACE_START_SAMPLED = "METHOD_TRACE_START_SAMPLED"
+        private const val METHOD_TRACE_END = "ACTION_METHOD_TRACE_END"
+
+        // Result codes
+        private const val RESULT_CODE_FAILED = 0
+        private const val RESULT_CODE_SUCCESS = 10
+
+        // Tracing
+        internal fun outputTracePath(context: Context, fileName: String): String {
+            val basePath = if (Build.VERSION.SDK_INT >= 21) {
+                context.getFirstMountedMediaDir()
+            } else {
+                null
+            }
+            val file = File(basePath, fileName)
+            // Delete file if already exists.
+            file.delete()
+            return file.absolutePath
+        }
+
+        // The maximum size of a trace.
+        // Setting this to 1G because that ought to be enough.
+        private const val BUFFER_SIZE_BYTES = 1024 * 1024 * 1024 // bytes
+
+        // The sampling internal. Set to 1/10th of a millisecond.
+        private const val INTERVAL_MICRO_SECONDS = 1000 // micro-seconds
+    }
+}
+
+@RequiresApi(21)
+internal object MethodTracingApi21 {
+    @DoNotInline
+    fun startMethodTracingSampling(
+        tracePath: String,
+        bufferSize: Int,
+        intervalUs: Int
+    ) {
+        Debug.startMethodTracingSampling(tracePath, bufferSize, intervalUs)
+    }
+
+    @DoNotInline
+    @Suppress("DEPRECATION")
+    fun Context.getFirstMountedMediaDir(): File? {
+        // This is identical to the snippet from Outputs.dirUsableByAppAndShell.
+        // This is the only way to write a trace that can be subsequently copied cleanly
+        // by the Shell.
+        return externalMediaDirs.firstOrNull {
+            Environment.getExternalStorageState(it) == Environment.MEDIA_MOUNTED
+        }
+    }
+}
diff --git a/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/Macrobenchmark.kt b/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/Macrobenchmark.kt
index f1321d2..2582f2a 100644
--- a/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/Macrobenchmark.kt
+++ b/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/Macrobenchmark.kt
@@ -43,7 +43,6 @@
 import androidx.test.platform.app.InstrumentationRegistry
 import androidx.tracing.trace
 import java.io.File
-import java.lang.StringBuilder
 
 /**
  * Get package ApplicationInfo, throw if not found
@@ -202,7 +201,8 @@
             it.configure(packageName)
         }
         val measurements = PerfettoTraceProcessor.runServer {
-            List(if (Arguments.dryRunMode) 1 else iterations) { iteration ->
+            val runIterations = if (Arguments.dryRunMode) 1 else iterations
+            List(runIterations) { iteration ->
                 // Wake the device to ensure it stays awake with large iteration count
                 userspaceTrace("wake device") {
                     scope.device.wakeUp()
@@ -214,8 +214,9 @@
                 }
 
                 val iterString = iteration.toString().padStart(3, '0')
+                val fileLabel = "${uniqueName}_iter$iterString"
                 val tracePath = perfettoCollector.record(
-                    fileLabel = "${uniqueName}_iter$iterString",
+                    fileLabel = fileLabel,
                     config = PerfettoConfig.Benchmark(
                         /**
                          * Prior to API 24, every package name was joined into a single setprop
@@ -238,6 +239,19 @@
                 ) {
                     try {
                         trace("start metrics") {
+                            if (Arguments.methodTracingOptions.isNotEmpty()) {
+                                // Once you turn on method tracing its okay to ignore
+                                // the costs of true CompilationMode.COLD as the numbers cannot
+                                // be used for anything reasonable.
+
+                                // It would be nice if our metrics infra supported this use case
+                                // better.
+                                MethodTracing.startTracing(
+                                    packageName = packageName,
+                                    options = Arguments.methodTracingOptions,
+                                    uniqueName = fileLabel
+                                )
+                            }
                             metrics.forEach {
                                 it.start()
                             }
@@ -250,6 +264,12 @@
                             metrics.forEach {
                                 it.stop()
                             }
+                            if (Arguments.methodTracingOptions.isNotEmpty()) {
+                                MethodTracing.stopTracing(
+                                    packageName = packageName,
+                                    uniqueName = fileLabel
+                                )
+                            }
                         }
                     }
                 }!!
@@ -289,7 +309,6 @@
                     appendUiState(uiState)
                 }
                 Log.d(TAG, "Iteration $iteration captured $uiState")
-
                 // report just the metrics
                 measurementList
             }.mergeMultiIterResults()
diff --git a/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/MethodTracing.kt b/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/MethodTracing.kt
new file mode 100644
index 0000000..7a07561
--- /dev/null
+++ b/benchmark/benchmark-macro/src/main/java/androidx/benchmark/macro/MethodTracing.kt
@@ -0,0 +1,89 @@
+package androidx.benchmark.macro
+
+import android.content.Context
+import androidx.annotation.RestrictTo
+import androidx.benchmark.Outputs
+import androidx.benchmark.Shell
+import androidx.benchmark.getFirstMountedMediaDir
+import androidx.benchmark.userspaceTrace
+import androidx.test.platform.app.InstrumentationRegistry
+import java.io.File
+
+private const val OPTION_SAMPLED = "Sampled"
+private const val RECEIVER_NAME = "androidx.benchmark.internal.MethodTracingReceiver"
+
+// Extras
+private const val ACTION = "ACTION"
+private const val UNIQUE_NAME = "UNIQUE_NAME"
+
+// Actions
+private const val METHOD_TRACE_START = "METHOD_TRACE_START"
+private const val METHOD_TRACE_START_SAMPLED = "METHOD_TRACE_START_SAMPLED"
+private const val METHOD_TRACE_END = "ACTION_METHOD_TRACE_END"
+
+@RestrictTo(RestrictTo.Scope.LIBRARY)
+object MethodTracing {
+    private val context: Context = InstrumentationRegistry.getInstrumentation().context
+
+    /**
+     * Starts method tracing on the [packageName].
+     * <br/>
+     * The only [options] supported are `Full` and `Sampled`.
+     */
+    fun startTracing(packageName: String, uniqueName: String, options: String) {
+        val fileName = fileName(uniqueName)
+        // The only options possible are `Full` and `Sampled`
+        val extras = if (options == (OPTION_SAMPLED)) {
+            "-e $ACTION $METHOD_TRACE_START_SAMPLED -e $UNIQUE_NAME $fileName"
+        } else {
+            "-e $ACTION $METHOD_TRACE_START -e $UNIQUE_NAME $fileName"
+        }
+        broadcast(packageName, extras)
+    }
+
+    /**
+     * Stops method tracing and copies the output trace to the `additionalTestOutputDir`.
+     */
+    fun stopTracing(packageName: String, uniqueName: String) {
+        val fileName = fileName(uniqueName)
+        val extras = "-e $ACTION $METHOD_TRACE_END"
+        broadcast(packageName, extras)
+        // The reason we are doing this is to make trace collection possible.
+        // The target APK stores the method traces in the first media mounted directory.
+        // This is because, that happens to be the only directory accessible to the app and shell.
+        // We then subsequently copy it to the actual `Outputs.dirUsableByAppAndShell` from the
+        // perspective of the test APK.
+        val mediaDirParent = context.getFirstMountedMediaDir()?.parentFile
+        val sourcePath = "$mediaDirParent/$packageName/$fileName"
+        // Staging location before we write it again using Outputs.writeFile(...)
+        // :(
+        val stagingPath = "${Outputs.dirUsableByAppAndShell}/_$fileName"
+        Shell.executeScriptSilent("cp '$sourcePath' '$stagingPath'")
+        // Report
+        Outputs.writeFile(fileName, fileName) {
+            val staging = File(stagingPath)
+            // No need to clean up, here because the clean up happens automatically on subsequent
+            // test runs.
+            staging.copyTo(it, overwrite = true)
+        }
+    }
+
+    private fun fileName(uniqueName: String): String {
+        return "${uniqueName}_method.trace"
+    }
+
+    private fun broadcast(targetPackageName: String, extras: String) {
+        userspaceTrace("methodTracingBroadcast") {
+            val action = "androidx.benchmark.experiments.ACTION_METHOD_TRACE"
+            val result =
+                Shell.amBroadcast("-a $action $extras $targetPackageName/$RECEIVER_NAME") ?: 0
+            require(result > 0) {
+                """
+                    Operation with $extras failed (result code $result).
+                    Make sure you add a dependency on:
+                    `project(":benchmark:benchmark-internal")`
+                """.trimIndent()
+            }
+        }
+    }
+}
diff --git a/benchmark/integration-tests/macrobenchmark-target/build.gradle b/benchmark/integration-tests/macrobenchmark-target/build.gradle
index d455803..10a09b7 100644
--- a/benchmark/integration-tests/macrobenchmark-target/build.gradle
+++ b/benchmark/integration-tests/macrobenchmark-target/build.gradle
@@ -35,6 +35,7 @@
     implementation(libs.kotlinStdlib)
     implementation(libs.constraintLayout)
     implementation(project(":appcompat:appcompat"))
+    implementation(project(":benchmark:benchmark-internal"))
     implementation(project(":activity:activity"))
     implementation(project(":profileinstaller:profileinstaller"))
     implementation(project(":recyclerview:recyclerview"))
diff --git a/browser/browser/api/current.txt b/browser/browser/api/current.txt
index 5b284c8..72e8fbb 100644
--- a/browser/browser/api/current.txt
+++ b/browser/browser/api/current.txt
@@ -203,6 +203,7 @@
     method @androidx.browser.customtabs.CustomTabsService.Result protected abstract int postMessage(androidx.browser.customtabs.CustomTabsSessionToken, String, android.os.Bundle?);
     method protected abstract boolean receiveFile(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri, int, android.os.Bundle?);
     method protected abstract boolean requestPostMessageChannel(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri);
+    method protected boolean requestPostMessageChannel(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri, android.net.Uri?, android.os.Bundle);
     method protected boolean setEngagementSignalsCallback(androidx.browser.customtabs.CustomTabsSessionToken, androidx.browser.customtabs.EngagementSignalsCallback, android.os.Bundle);
     method protected abstract boolean updateVisuals(androidx.browser.customtabs.CustomTabsSessionToken, android.os.Bundle?);
     method protected abstract boolean validateRelationship(androidx.browser.customtabs.CustomTabsSessionToken, @androidx.browser.customtabs.CustomTabsService.Relation int, android.net.Uri, android.os.Bundle?);
@@ -244,6 +245,7 @@
     method @androidx.browser.customtabs.CustomTabsService.Result public int postMessage(String, android.os.Bundle?);
     method public boolean receiveFile(android.net.Uri, int, android.os.Bundle?);
     method public boolean requestPostMessageChannel(android.net.Uri);
+    method public boolean requestPostMessageChannel(android.net.Uri, android.net.Uri?, android.os.Bundle);
     method public boolean setActionButton(android.graphics.Bitmap, String);
     method @RequiresFeature(name=androidx.browser.customtabs.CustomTabsFeatures.ENGAGEMENT_SIGNALS, enforcement="androidx.browser.customtabs.CustomTabsSession#isEngagementSignalsApiAvailable") public boolean setEngagementSignalsCallback(androidx.browser.customtabs.EngagementSignalsCallback, android.os.Bundle) throws android.os.RemoteException;
     method @RequiresFeature(name=androidx.browser.customtabs.CustomTabsFeatures.ENGAGEMENT_SIGNALS, enforcement="androidx.browser.customtabs.CustomTabsSession#isEngagementSignalsApiAvailable") public boolean setEngagementSignalsCallback(java.util.concurrent.Executor, androidx.browser.customtabs.EngagementSignalsCallback, android.os.Bundle) throws android.os.RemoteException;
diff --git a/browser/browser/api/restricted_current.txt b/browser/browser/api/restricted_current.txt
index 3862b78..7f1fc11 100644
--- a/browser/browser/api/restricted_current.txt
+++ b/browser/browser/api/restricted_current.txt
@@ -214,6 +214,7 @@
     method @androidx.browser.customtabs.CustomTabsService.Result protected abstract int postMessage(androidx.browser.customtabs.CustomTabsSessionToken, String, android.os.Bundle?);
     method protected abstract boolean receiveFile(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri, int, android.os.Bundle?);
     method protected abstract boolean requestPostMessageChannel(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri);
+    method protected boolean requestPostMessageChannel(androidx.browser.customtabs.CustomTabsSessionToken, android.net.Uri, android.net.Uri?, android.os.Bundle);
     method protected boolean setEngagementSignalsCallback(androidx.browser.customtabs.CustomTabsSessionToken, androidx.browser.customtabs.EngagementSignalsCallback, android.os.Bundle);
     method protected abstract boolean updateVisuals(androidx.browser.customtabs.CustomTabsSessionToken, android.os.Bundle?);
     method protected abstract boolean validateRelationship(androidx.browser.customtabs.CustomTabsSessionToken, @androidx.browser.customtabs.CustomTabsService.Relation int, android.net.Uri, android.os.Bundle?);
@@ -255,6 +256,7 @@
     method @androidx.browser.customtabs.CustomTabsService.Result public int postMessage(String, android.os.Bundle?);
     method public boolean receiveFile(android.net.Uri, int, android.os.Bundle?);
     method public boolean requestPostMessageChannel(android.net.Uri);
+    method public boolean requestPostMessageChannel(android.net.Uri, android.net.Uri?, android.os.Bundle);
     method public boolean setActionButton(android.graphics.Bitmap, String);
     method @RequiresFeature(name=androidx.browser.customtabs.CustomTabsFeatures.ENGAGEMENT_SIGNALS, enforcement="androidx.browser.customtabs.CustomTabsSession#isEngagementSignalsApiAvailable") public boolean setEngagementSignalsCallback(androidx.browser.customtabs.EngagementSignalsCallback, android.os.Bundle) throws android.os.RemoteException;
     method @RequiresFeature(name=androidx.browser.customtabs.CustomTabsFeatures.ENGAGEMENT_SIGNALS, enforcement="androidx.browser.customtabs.CustomTabsSession#isEngagementSignalsApiAvailable") public boolean setEngagementSignalsCallback(java.util.concurrent.Executor, androidx.browser.customtabs.EngagementSignalsCallback, android.os.Bundle) throws android.os.RemoteException;
diff --git a/browser/browser/src/androidTest/java/androidx/browser/customtabs/PostMessageTest.java b/browser/browser/src/androidTest/java/androidx/browser/customtabs/PostMessageTest.java
index ab0d51b..c719cfe 100644
--- a/browser/browser/src/androidTest/java/androidx/browser/customtabs/PostMessageTest.java
+++ b/browser/browser/src/androidTest/java/androidx/browser/customtabs/PostMessageTest.java
@@ -17,6 +17,7 @@
 package androidx.browser.customtabs;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
@@ -143,4 +144,23 @@
         PollingCheck.waitFor(() -> mPostMessageServiceConnected);
         assertTrue(mPostMessageServiceConnected);
     }
+
+    @Test
+    public void testWithDisallowedTargetOrigin() {
+        PollingCheck.waitFor(() -> mCustomTabsServiceConnected);
+        assertTrue(mCustomTabsServiceConnected);
+        assertFalse(mSession.requestPostMessageChannel(Uri.EMPTY, Uri.parse("www.notallowed.com"),
+                new Bundle()));
+        assertEquals(CustomTabsService.RESULT_FAILURE_DISALLOWED, mSession.postMessage("", null));
+    }
+
+    @Test
+    public void testWithAllowedTargetOrigin() {
+        PollingCheck.waitFor(() -> mCustomTabsServiceConnected);
+        assertTrue(mCustomTabsServiceConnected);
+        assertTrue(mSession.requestPostMessageChannel(Uri.EMPTY,
+                Uri.parse(TestCustomTabsService.ALLOWED_TARGET_ORIGIN),
+                new Bundle()));
+        assertEquals(CustomTabsService.RESULT_SUCCESS, mSession.postMessage("", null));
+    }
 }
diff --git a/browser/browser/src/androidTest/java/androidx/browser/customtabs/TestCustomTabsService.java b/browser/browser/src/androidTest/java/androidx/browser/customtabs/TestCustomTabsService.java
index 62bef7e..d772335 100644
--- a/browser/browser/src/androidTest/java/androidx/browser/customtabs/TestCustomTabsService.java
+++ b/browser/browser/src/androidTest/java/androidx/browser/customtabs/TestCustomTabsService.java
@@ -44,10 +44,10 @@
 
 public class TestCustomTabsService extends CustomTabsService {
     public static final String CALLBACK_BIND_TO_POST_MESSAGE = "BindToPostMessageService";
+    public static final String ALLOWED_TARGET_ORIGIN = "www.example.com";
     private static TestCustomTabsService sInstance;
 
     private final CountDownLatch mFileReceivingLatch = new CountDownLatch(1);
-
     private boolean mPostMessageRequested;
     private CustomTabsSessionToken mSession;
     private ICustomTabsService mMock;
@@ -106,7 +106,6 @@
                 Uri postMessageOrigin, Bundle extras) throws RemoteException {
             return false;
         }
-
         @Override
         public int postMessage(ICustomTabsCallback callback, String message, Bundle extras)
                 throws RemoteException {
@@ -182,7 +181,16 @@
     @Override
     protected boolean requestPostMessageChannel(
             @NonNull CustomTabsSessionToken sessionToken, @NonNull Uri postMessageOrigin) {
+        return requestPostMessageChannel(sessionToken, postMessageOrigin, null, new Bundle());
+    }
+
+    @Override
+    protected boolean requestPostMessageChannel(@NonNull CustomTabsSessionToken sessionToken,
+            @NonNull Uri postMessageOrigin, @Nullable Uri postMessageTargetOrigin,
+            @NonNull Bundle extras) {
         if (mSession == null) return false;
+        if (postMessageTargetOrigin != null
+                && !postMessageTargetOrigin.toString().equals(ALLOWED_TARGET_ORIGIN)) return false;
         mPostMessageRequested = true;
         mSession.getCallback().extraCallback(CALLBACK_BIND_TO_POST_MESSAGE, null);
         return true;
diff --git a/browser/browser/src/main/java/androidx/browser/customtabs/Api33Impl.java b/browser/browser/src/main/java/androidx/browser/customtabs/Api33Impl.java
new file mode 100644
index 0000000..ca13623
--- /dev/null
+++ b/browser/browser/src/main/java/androidx/browser/customtabs/Api33Impl.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.browser.customtabs;
+
+import static android.os.Build.VERSION_CODES.TIRAMISU;
+
+import android.os.Bundle;
+
+import androidx.annotation.DoNotInline;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
+
+@RequiresApi(TIRAMISU)
+class Api33Impl {
+    private Api33Impl() {
+        // This class is non-instantiable.
+    }
+
+    @DoNotInline
+    static <T> T getParcelable(@NonNull Bundle in, @Nullable String key,
+            @NonNull Class<T> clazz) {
+        return in.getParcelable(key, clazz);
+    }
+}
diff --git a/browser/browser/src/main/java/androidx/browser/customtabs/CustomTabsService.java b/browser/browser/src/main/java/androidx/browser/customtabs/CustomTabsService.java
index ee1e791..96e7f01 100644
--- a/browser/browser/src/main/java/androidx/browser/customtabs/CustomTabsService.java
+++ b/browser/browser/src/main/java/androidx/browser/customtabs/CustomTabsService.java
@@ -20,6 +20,7 @@
 import android.app.Service;
 import android.content.Intent;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.IBinder;
 import android.os.IBinder.DeathRecipient;
@@ -226,7 +227,8 @@
         public boolean requestPostMessageChannel(@NonNull ICustomTabsCallback callback,
                 @NonNull Uri postMessageOrigin) {
             return CustomTabsService.this.requestPostMessageChannel(
-                    new CustomTabsSessionToken(callback, null), postMessageOrigin);
+                    new CustomTabsSessionToken(callback, null), postMessageOrigin,
+                    null, new Bundle());
         }
 
         @Override
@@ -234,7 +236,7 @@
                 @NonNull Uri postMessageOrigin, @NonNull Bundle extras) {
             return CustomTabsService.this.requestPostMessageChannel(
                     new CustomTabsSessionToken(callback, getSessionIdFromBundle(extras)),
-                    postMessageOrigin);
+                    postMessageOrigin, getTargetOriginFromBundle(extras), extras);
         }
 
         @Override
@@ -296,6 +298,17 @@
             bundle.remove(CustomTabsIntent.EXTRA_SESSION_ID);
             return sessionId;
         }
+
+        @SuppressWarnings("deprecation")
+        private @Nullable Uri getTargetOriginFromBundle(@Nullable Bundle bundle) {
+            if (bundle == null) return null;
+            if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+                return Api33Impl.getParcelable(bundle, CustomTabsSession.TARGET_ORIGIN_KEY,
+                        Uri.class);
+            } else {
+                return bundle.getParcelable(CustomTabsSession.TARGET_ORIGIN_KEY);
+            }
+        }
     };
 
     @Override
@@ -434,6 +447,25 @@
             @NonNull CustomTabsSessionToken sessionToken, @NonNull Uri postMessageOrigin);
 
     /**
+     * Same as above method with specifying the target origin to establish communication with.
+     *
+     * @param sessionToken      The unique identifier for the session. Can not be null.
+     * @param postMessageOrigin A origin that the client is requesting to be identified as
+     *                          during the postMessage communication.
+     * @param postMessageTargetOrigin The target Origin to establish PostMessageChannel with and
+     *                                 send messages to.
+     * @param extras  Reserved for future use.
+     * @return Whether the implementation accepted the request. Note that returning true
+     * here doesn't mean an origin has already been assigned as the validation is
+     * asynchronous.
+     */
+    protected boolean requestPostMessageChannel(
+            @NonNull CustomTabsSessionToken sessionToken, @NonNull Uri postMessageOrigin,
+            @Nullable Uri postMessageTargetOrigin, @NonNull Bundle extras) {
+        return requestPostMessageChannel(sessionToken, postMessageOrigin);
+    }
+
+    /**
      * Sends a postMessage request using the origin communicated via
      * {@link CustomTabsService#requestPostMessageChannel(
      *CustomTabsSessionToken, Uri)}. Fails when called before
diff --git a/browser/browser/src/main/java/androidx/browser/customtabs/CustomTabsSession.java b/browser/browser/src/main/java/androidx/browser/customtabs/CustomTabsSession.java
index 0a59a38..abd1623 100644
--- a/browser/browser/src/main/java/androidx/browser/customtabs/CustomTabsSession.java
+++ b/browser/browser/src/main/java/androidx/browser/customtabs/CustomTabsSession.java
@@ -50,6 +50,7 @@
  */
 public final class CustomTabsSession {
     private static final String TAG = "CustomTabsSession";
+    static final String TARGET_ORIGIN_KEY = "target_origin";
     private final Object mLock = new Object();
     private final ICustomTabsService mService;
     private final ICustomTabsCallback mCallback;
@@ -63,7 +64,8 @@
      *
      * {@see Intent#filterEquals()}
      */
-    @Nullable private final PendingIntent mId;
+    @Nullable
+    private final PendingIntent mId;
 
     /**
      * Provides browsers a way to generate a mock {@link CustomTabsSession} for testing
@@ -104,7 +106,7 @@
      *                           likelihood order. Inside each Bundle, the client should provide a
      *                           {@link Uri} using {@link CustomTabsService#KEY_URL} with
      *                           {@link Bundle#putParcelable(String, android.os.Parcelable)}.
-     * @return                   true for success.
+     * @return true for success.
      */
     @SuppressWarnings("NullAway")  // TODO: b/142938599
     public boolean mayLaunchUrl(@Nullable Uri url, @Nullable Bundle extras,
@@ -121,9 +123,8 @@
      * This sets the action button on the toolbar with ID
      * {@link CustomTabsIntent#TOOLBAR_ACTION_BUTTON_ID}.
      *
-     * @param icon          The new icon of the action button.
-     * @param description   Content description of the action button.
-     *
+     * @param icon        The new icon of the action button.
+     * @param description Content description of the action button.
      * @see CustomTabsSession#setToolbarItem(int, Bitmap, String)
      */
     public boolean setActionButton(@NonNull Bitmap icon, @NonNull String description) {
@@ -143,6 +144,7 @@
 
     /**
      * Updates the {@link RemoteViews} of the secondary toolbar in an existing custom tab session.
+     *
      * @param remoteViews   The updated {@link RemoteViews} that will be shown in secondary toolbar.
      *                      If null, the current secondary toolbar will be dismissed.
      * @param clickableIDs  The ids of clickable views. The onClick event of these views will be
@@ -167,10 +169,11 @@
     /**
      * Updates the visuals for toolbar items. Will only succeed if a custom tab created using this
      * session is in the foreground in browser and the given id is valid.
-     * @param id            The id for the item to update.
-     * @param icon          The new icon of the toolbar item.
-     * @param description   Content description of the toolbar item.
-     * @return              Whether the update succeeded.
+     *
+     * @param id          The id for the item to update.
+     * @param icon        The new icon of the toolbar item.
+     * @param description Content description of the toolbar item.
+     * @return Whether the update succeeded.
      * @deprecated Use
      * CustomTabsSession#setSecondaryToolbarViews(RemoteViews, int[], PendingIntent)
      */
@@ -194,26 +197,41 @@
     /**
      * Sends a request to create a two way postMessage channel between the client and the browser.
      *
-     * @param postMessageOrigin      A origin that the client is requesting to be identified as
-     *                               during the postMessage communication.
+     * @param postMessageOrigin A origin that the client is requesting to be identified as
+     *                          during the postMessage communication.
      * @return Whether the implementation accepted the request. Note that returning true
-     *         here doesn't mean an origin has already been assigned as the validation is
-     *         asynchronous.
+     * here doesn't mean an origin has already been assigned as the validation is
+     * asynchronous.
      */
     public boolean requestPostMessageChannel(@NonNull Uri postMessageOrigin) {
+        return requestPostMessageChannel(postMessageOrigin, null, new Bundle());
+    }
+
+    /**
+     * Sends a request to create a two way postMessage channel between the client and the browser
+     * with specifying the target origin to communicate with.
+     *
+     * @param postMessageOrigin       A origin that the client is requesting to be identified as
+     *                                during the postMessage communication.
+     * @param postMessageTargetOrigin The target Origin to establish the postMessage communication
+     *                                with.
+     * @param extras  Reserved for future use.
+     * @return Whether the implementation accepted the request. Note that returning true
+     * here doesn't mean an origin has already been assigned as the validation is
+     * asynchronous.
+     */
+    public boolean requestPostMessageChannel(@NonNull Uri postMessageOrigin,
+            @Nullable Uri postMessageTargetOrigin, @NonNull Bundle extras) {
         try {
-            // If mId is not null we know that the CustomTabsService supports
-            // requestPostMessageChannelWithExtras. That is because non-null mId means that
-            // CustomTabsSession was created with CustomTabsClient#newSession(Callback int), which
-            // can succeed only when browsers supporting CustomTabsService#newSessionWithExtras.
-            // This was added at the same time as requestPostMessageChannelWithExtras.
-            if (mId != null) {
+            Bundle targetOriginWithIdBundle =
+                    createPostMessageExtraBundle(postMessageTargetOrigin);
+            if (targetOriginWithIdBundle != null) {
+                extras.putAll(targetOriginWithIdBundle);
                 return mService.requestPostMessageChannelWithExtras(
-                        mCallback, postMessageOrigin, createBundleWithId(null));
+                        mCallback, postMessageOrigin, extras);
             } else {
                 return mService.requestPostMessageChannel(mCallback, postMessageOrigin);
             }
-
         } catch (RemoteException e) {
             return false;
         }
@@ -222,14 +240,14 @@
     /**
      * Sends a postMessage request using the origin communicated via
      * {@link CustomTabsService#requestPostMessageChannel(
-     * CustomTabsSessionToken, Uri)}. Fails when called before
+     *CustomTabsSessionToken, Uri)}. Fails when called before
      * {@link PostMessageServiceConnection#notifyMessageChannelReady(Bundle)} is received on
      * the client side.
      *
      * @param message The message that is being sent.
-     * @param extras Reserved for future use.
+     * @param extras  Reserved for future use.
      * @return An integer constant about the postMessage request result. Will return
-     *        {@link CustomTabsService#RESULT_SUCCESS} if successful.
+     * {@link CustomTabsService#RESULT_SUCCESS} if successful.
      */
     @Result
     public int postMessage(@NonNull String message, @Nullable Bundle extras) {
@@ -259,8 +277,8 @@
      *
      * @param relation Relation to check, must be one of the {@code CustomTabsService#RELATION_* }
      *                 constants.
-     * @param origin Origin.
-     * @param extras Reserved for future use.
+     * @param origin   Origin.
+     * @param extras   Reserved for future use.
      * @return {@code true} if the request has been submitted successfully.
      */
     public boolean validateRelationship(@Relation int relation, @NonNull Uri origin,
@@ -287,10 +305,10 @@
      * The file is read and processed (where applicable) synchronously, therefore it's recommended
      * to call this method on a background thread.
      *
-     * @param uri {@link Uri} of the file.
+     * @param uri     {@link Uri} of the file.
      * @param purpose Purpose of transferring this file, one of the constants enumerated in
      *                {@code CustomTabsService#FilePurpose}.
-     * @param extras Reserved for future use.
+     * @param extras  Reserved for future use.
      * @return {@code true} if the file was received successfully.
      */
     public boolean receiveFile(@NonNull Uri uri, @CustomTabsService.FilePurpose int purpose,
@@ -311,12 +329,12 @@
      *
      * @param extras Reserved for future use.
      * @return Whether the Engagement Signals API is available. A false value means
-     *         {@link #getGreatestScrollPercentage} will throw an
-     *         {@link UnsupportedOperationException} if called, and
-     *         {@link #setEngagementSignalsCallback} will return false and not set the callback.
-     * @throws RemoteException If the Service dies while responding to the request.
+     * {@link #getGreatestScrollPercentage} will throw an
+     * {@link UnsupportedOperationException} if called, and
+     * {@link #setEngagementSignalsCallback} will return false and not set the callback.
+     * @throws RemoteException               If the Service dies while responding to the request.
      * @throws UnsupportedOperationException If this method isn't supported by the Custom Tabs
-     *         implementation.
+     *                                       implementation.
      */
     public boolean isEngagementSignalsApiAvailable(@NonNull Bundle extras) throws RemoteException {
         try {
@@ -336,12 +354,12 @@
      * {@link #setEngagementSignalsCallback(Executor, EngagementSignalsCallback, Bundle)}.
      *
      * @param callback The {@link EngagementSignalsCallback} to receive the user engagement signals.
-     * @param extras Reserved for future use.
+     * @param extras   Reserved for future use.
      * @return Whether the callback connection is allowed. If false, no callbacks will be called for
-     *         this session.
-     * @throws RemoteException If the Service dies while responding to the request.
+     * this session.
+     * @throws RemoteException               If the Service dies while responding to the request.
      * @throws UnsupportedOperationException If this method isn't supported by the Custom Tabs
-     *         implementation.
+     *                                       implementation.
      */
     @RequiresFeature(name = CustomTabsFeatures.ENGAGEMENT_SIGNALS, enforcement =
             "androidx.browser.customtabs.CustomTabsSession#isEngagementSignalsApiAvailable")
@@ -385,12 +403,12 @@
      *
      * @param executor The {@link Executor} to be used to execute the callbacks.
      * @param callback The {@link EngagementSignalsCallback} to receive the user engagement signals.
-     * @param extras Reserved for future use.
+     * @param extras   Reserved for future use.
      * @return Whether the callback connection is allowed. If false, no callbacks will be called for
-     *         this session.
-     * @throws RemoteException If the Service dies while responding to the request.
+     * this session.
+     * @throws RemoteException               If the Service dies while responding to the request.
      * @throws UnsupportedOperationException If this method isn't supported by the Custom Tabs
-     *         implementation.
+     *                                       implementation.
      */
     @RequiresFeature(name = CustomTabsFeatures.ENGAGEMENT_SIGNALS, enforcement =
             "androidx.browser.customtabs.CustomTabsSession#isEngagementSignalsApiAvailable")
@@ -403,7 +421,7 @@
             return mService.setEngagementSignalsCallback(mCallback, wrapper.asBinder(), extras);
         } catch (SecurityException e) {
             throw new UnsupportedOperationException("This method isn't supported by the "
-                        + "Custom Tabs implementation.", e);
+                    + "Custom Tabs implementation.", e);
         }
     }
 
@@ -457,12 +475,13 @@
      *
      * @param extras Reserved for future use.
      * @return An integer in the range of [0, 100] indicating the amount that the user has
-     *         scrolled the page with 0 indicating the user has never scrolled the page and 100
-     *         indicating they have scrolled to the very bottom.
-     * @throws RemoteException If the Service dies while responding to the request.
+     * scrolled the page with 0 indicating the user has never scrolled the page and 100
+     * indicating they have scrolled to the very bottom.
+     * @throws RemoteException               If the Service dies while responding to the request.
      * @throws UnsupportedOperationException If the Engagement Signals API isn't available, i.e.
-     *         {@link #isEngagementSignalsApiAvailable} returns false, or the method isn't supported
-     *         by the Custom Tabs implementation.
+     *                                       {@link #isEngagementSignalsApiAvailable} returns
+     *                                       false, or the method isn't supported
+     *                                       by the Custom Tabs implementation.
      */
     @RequiresFeature(name = CustomTabsFeatures.ENGAGEMENT_SIGNALS, enforcement =
             "androidx.browser.customtabs.CustomTabsSession#isEngagementSignalsApiAvailable")
@@ -476,6 +495,22 @@
         }
     }
 
+    private @Nullable Bundle createPostMessageExtraBundle(@Nullable Uri targetOrigin) {
+        Bundle toReturn = new Bundle();
+        if (targetOrigin != null) {
+            toReturn.putParcelable(CustomTabsSession.TARGET_ORIGIN_KEY, targetOrigin);
+        }
+        // If mId is not null we know that the CustomTabsService supports
+        // requestPostMessageChannelWithExtras. That is because non-null mId means that
+        // CustomTabsSession was created with CustomTabsClient#newSession(Callback int), which
+        // can succeed only when browsers supporting CustomTabsService#newSessionWithExtras.
+        // This was added at the same time as requestPostMessageChannelWithExtras.
+        if (mId != null) {
+            addIdToBundle(toReturn);
+        }
+        return toReturn.isEmpty() ? null : toReturn;
+    }
+
     private Bundle createBundleWithId(@Nullable Bundle bundle) {
         Bundle bundleWithId = new Bundle();
         if (bundle != null) bundleWithId.putAll(bundle);
@@ -496,7 +531,7 @@
     }
 
     @Nullable
-    /* package */ PendingIntent getId() {
+        /* package */ PendingIntent getId() {
         return mId;
     }
 
@@ -505,12 +540,13 @@
      * {@link CustomTabsService}.
      *
      * Use {@link CustomTabsClient#attachSession(PendingSession)} to get {@link CustomTabsSession}.
-     *
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public static class PendingSession {
-        @Nullable private final CustomTabsCallback mCallback;
-        @Nullable private final PendingIntent mId;
+        @Nullable
+        private final CustomTabsCallback mCallback;
+        @Nullable
+        private final PendingIntent mId;
 
         /* package */ PendingSession(
                 @Nullable CustomTabsCallback callback, @Nullable PendingIntent sessionId) {
@@ -519,12 +555,12 @@
         }
 
         @Nullable
-        /* package */ PendingIntent getId() {
+            /* package */ PendingIntent getId() {
             return mId;
         }
 
         @Nullable
-        /* package */ CustomTabsCallback getCallback() {
+            /* package */ CustomTabsCallback getCallback() {
             return mCallback;
         }
     }
diff --git a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/UseCaseManager.kt b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/UseCaseManager.kt
index a289f28..a8f3c76 100644
--- a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/UseCaseManager.kt
+++ b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/UseCaseManager.kt
@@ -16,6 +16,7 @@
 
 package androidx.camera.camera2.pipe.integration.impl
 
+import android.content.Context
 import android.media.MediaCodec
 import android.os.Build
 import androidx.annotation.GuardedBy
@@ -23,6 +24,8 @@
 import androidx.camera.camera2.pipe.CameraGraph
 import androidx.camera.camera2.pipe.core.Log
 import androidx.camera.camera2.pipe.integration.adapter.CameraStateAdapter
+import androidx.camera.camera2.pipe.integration.adapter.EncoderProfilesProviderAdapter
+import androidx.camera.camera2.pipe.integration.adapter.SupportedSurfaceCombination
 import androidx.camera.camera2.pipe.integration.compat.quirk.CameraQuirks
 import androidx.camera.camera2.pipe.integration.config.CameraConfig
 import androidx.camera.camera2.pipe.integration.config.CameraScope
@@ -32,6 +35,7 @@
 import androidx.camera.camera2.pipe.integration.interop.ExperimentalCamera2Interop
 import androidx.camera.core.UseCase
 import androidx.camera.core.impl.CameraInternal
+import androidx.camera.core.impl.CameraMode
 import androidx.camera.core.impl.DeferrableSurface
 import androidx.camera.core.impl.SessionConfig.ValidatingBuilder
 import javax.inject.Inject
@@ -78,6 +82,7 @@
     private val cameraQuirks: CameraQuirks,
     private val cameraGraphFlags: CameraGraph.Flags,
     private val cameraInternal: Provider<CameraInternal>,
+    context: Context,
     cameraProperties: CameraProperties,
     displayInfoManager: DisplayInfoManager,
 ) {
@@ -99,6 +104,14 @@
         ).build()
     }
 
+    private val supportedSurfaceCombination by lazy {
+        SupportedSurfaceCombination(
+            context,
+            cameraProperties.metadata,
+            EncoderProfilesProviderAdapter(cameraConfig.cameraId.value)
+        )
+    }
+
     @Volatile
     private var _activeComponent: UseCaseCameraComponent? = null
     val camera: UseCaseCamera?
@@ -311,12 +324,13 @@
     @GuardedBy("lock")
     private fun shouldAddRepeatingUseCase(runningUseCases: Set<UseCase>): Boolean {
         val meteringRepeatingEnabled = attachedUseCases.contains(meteringRepeating)
-
-        val coreLibraryUseCases = runningUseCases.filterNot { it is MeteringRepeating }
-        val onlyVideoCapture = coreLibraryUseCases.onlyVideoCapture()
-        val requireMeteringRepeating = coreLibraryUseCases.requireMeteringRepeating()
-
-        return !meteringRepeatingEnabled && (onlyVideoCapture || requireMeteringRepeating)
+        if (!meteringRepeatingEnabled) {
+            val activeSurfaces = runningUseCases.withoutMetering().surfaceCount()
+            return activeSurfaces > 0 && with(attachedUseCases.withoutMetering()) {
+                (onlyVideoCapture() || requireMeteringRepeating()) && supportMeteringCombination()
+            }
+        }
+        return false
     }
 
     @GuardedBy("lock")
@@ -330,12 +344,13 @@
     @GuardedBy("lock")
     private fun shouldRemoveRepeatingUseCase(runningUseCases: Set<UseCase>): Boolean {
         val meteringRepeatingEnabled = runningUseCases.contains(meteringRepeating)
-
-        val coreLibraryUseCases = runningUseCases.filterNot { it is MeteringRepeating }
-        val onlyVideoCapture = coreLibraryUseCases.onlyVideoCapture()
-        val requireMeteringRepeating = coreLibraryUseCases.requireMeteringRepeating()
-
-        return meteringRepeatingEnabled && !onlyVideoCapture && !requireMeteringRepeating
+        if (meteringRepeatingEnabled) {
+            val activeSurfaces = runningUseCases.withoutMetering().surfaceCount()
+            return activeSurfaces == 0 || with(attachedUseCases.withoutMetering()) {
+                !(onlyVideoCapture() || requireMeteringRepeating()) || !supportMeteringCombination()
+            }
+        }
+        return false
     }
 
     @GuardedBy("lock")
@@ -353,6 +368,39 @@
         }
     }
 
+    private fun Collection<UseCase>.supportMeteringCombination(): Boolean {
+        val useCases = this.toMutableList().apply { add(meteringRepeating) }
+        if (meteringRepeating.attachedSurfaceResolution == null) {
+            meteringRepeating.setupSession()
+        }
+        return isCombinationSupported(useCases).also {
+            Log.debug { "Combination of $useCases is supported: $it" }
+        }
+    }
+
+    private fun isCombinationSupported(currentUseCases: Collection<UseCase>): Boolean {
+        val surfaceConfigs = currentUseCases.map { useCase ->
+            // TODO: Test with correct Camera Mode when concurrent mode / ultra high resolution is
+            //  implemented.
+            supportedSurfaceCombination.transformSurfaceConfig(
+                CameraMode.DEFAULT,
+                useCase.imageFormat,
+                useCase.attachedSurfaceResolution!!
+            )
+        }
+
+        return supportedSurfaceCombination.checkSupported(CameraMode.DEFAULT, surfaceConfigs)
+    }
+
+    private fun Collection<UseCase>.surfaceCount(): Int =
+        ValidatingBuilder().let { validatingBuilder ->
+            forEach { useCase -> validatingBuilder.add(useCase.sessionConfig) }
+            return validatingBuilder.build().surfaces.size
+        }
+
+    private fun Collection<UseCase>.withoutMetering(): Collection<UseCase> =
+        filterNot { it is MeteringRepeating }
+
     private fun Collection<UseCase>.requireMeteringRepeating(): Boolean {
         return isNotEmpty() && checkSurfaces { repeatingSurfaces, sessionSurfaces ->
             // There is no repeating UseCases
diff --git a/camera/camera-camera2-pipe-integration/src/test/java/androidx/camera/camera2/pipe/integration/impl/UseCaseManagerTest.kt b/camera/camera-camera2-pipe-integration/src/test/java/androidx/camera/camera2/pipe/integration/impl/UseCaseManagerTest.kt
index d4488e2..b155784 100644
--- a/camera/camera-camera2-pipe-integration/src/test/java/androidx/camera/camera2/pipe/integration/impl/UseCaseManagerTest.kt
+++ b/camera/camera-camera2-pipe-integration/src/test/java/androidx/camera/camera2/pipe/integration/impl/UseCaseManagerTest.kt
@@ -16,6 +16,7 @@
 
 package androidx.camera.camera2.pipe.integration.impl
 
+import android.hardware.camera2.CameraCharacteristics
 import android.os.Build
 import android.util.Size
 import androidx.camera.camera2.pipe.CameraGraph
@@ -52,10 +53,15 @@
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.robolectric.annotation.Config
+import org.robolectric.shadows.StreamConfigurationMapBuilder
 
 @RunWith(RobolectricCameraPipeTestRunner::class)
 @Config(minSdk = Build.VERSION_CODES.LOLLIPOP)
 class UseCaseManagerTest {
+    private val supportedSizes = arrayOf(Size(640, 480))
+    private val streamConfigurationMap = StreamConfigurationMapBuilder.newBuilder().apply {
+        supportedSizes.forEach(::addOutputSize)
+    }.build()
     private val useCaseManagerList = mutableListOf<UseCaseManager>()
     private val useCaseList = mutableListOf<UseCase>()
     private val useCaseThreads by lazy {
@@ -173,7 +179,7 @@
         useCaseManager.activate(imageCapture)
 
         // Act
-        useCaseManager.deactivate(preview)
+        useCaseManager.detach(listOf(preview))
 
         // Assert
         val enabledUseCaseClasses = useCaseManager.camera?.runningUseCases?.map {
@@ -201,7 +207,7 @@
         useCaseCameraBuilder.buildInvocationCount = 0
 
         // Act
-        useCaseManager.deactivate(preview)
+        useCaseManager.detach(listOf(preview))
 
         // Assert
         assertThat(useCaseCameraBuilder.buildInvocationCount).isEqualTo(1)
@@ -248,7 +254,9 @@
         // Arrange
         val useCaseManager = createUseCaseManager()
         val imageCapture = createImageCapture()
-        val useCase = FakeUseCase()
+        val useCase = FakeUseCase().also {
+            it.simulateActivation()
+        }
 
         // Act
         useCaseManager.activate(imageCapture)
@@ -313,12 +321,23 @@
         useCaseCameraComponentBuilder: FakeUseCaseCameraComponentBuilder =
             FakeUseCaseCameraComponentBuilder(),
     ): UseCaseManager {
+        val cameraId = CameraId("0")
+        val characteristicsMap: Map<CameraCharacteristics.Key<*>, Any?> = mapOf(
+            CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP to streamConfigurationMap,
+        )
+        val fakeCameraMetadata = FakeCameraMetadata(
+            cameraId = cameraId,
+            characteristics = characteristicsMap
+        )
         val fakeCamera = FakeCamera()
         return UseCaseManager(
-            cameraConfig = CameraConfig(CameraId("0")),
+            cameraConfig = CameraConfig(cameraId),
             builder = useCaseCameraComponentBuilder,
             controls = controls as java.util.Set<UseCaseCameraControl>,
-            cameraProperties = FakeCameraProperties(),
+            cameraProperties = FakeCameraProperties(
+                metadata = fakeCameraMetadata,
+                cameraId = cameraId,
+            ),
             camera2CameraControl = Camera2CameraControl.create(
                 FakeCamera2CameraControlCompat(),
                 useCaseThreads,
@@ -328,10 +347,11 @@
             cameraGraphFlags = CameraGraph.Flags(),
             cameraInternal = { fakeCamera },
             cameraQuirks = CameraQuirks(
-                FakeCameraMetadata(),
-                StreamConfigurationMapCompat(null, OutputSizesCorrector(FakeCameraMetadata(), null))
+                fakeCameraMetadata,
+                StreamConfigurationMapCompat(null, OutputSizesCorrector(fakeCameraMetadata, null))
             ),
             displayInfoManager = DisplayInfoManager(ApplicationProvider.getApplicationContext()),
+            context = ApplicationProvider.getApplicationContext(),
         ).also {
             useCaseManagerList.add(it)
         }
@@ -362,6 +382,6 @@
 
     private fun UseCase.simulateActivation() {
         bindToCamera(FakeCamera("0"), null, null)
-        updateSuggestedStreamSpec(StreamSpec.builder(Size(640, 480)).build())
+        updateSuggestedStreamSpec(StreamSpec.builder(supportedSizes[0]).build())
     }
 }
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/impl/SurfaceConfig.java b/camera/camera-core/src/main/java/androidx/camera/core/impl/SurfaceConfig.java
index 1f98de1..11efbac 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/impl/SurfaceConfig.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/impl/SurfaceConfig.java
@@ -40,6 +40,7 @@
 @RequiresApi(21) // TODO(b/200306659): Remove and replace with annotation on package-info.java
 @AutoValue
 public abstract class SurfaceConfig {
+    public static final long DEFAULT_STREAM_USE_CASE_VALUE = 0;
     /** Prevent subclassing */
     SurfaceConfig() {
     }
@@ -49,7 +50,16 @@
      */
     @NonNull
     public static SurfaceConfig create(@NonNull ConfigType type, @NonNull ConfigSize size) {
-        return new AutoValue_SurfaceConfig(type, size);
+        return new AutoValue_SurfaceConfig(type, size, DEFAULT_STREAM_USE_CASE_VALUE);
+    }
+
+    /**
+     * Creates a new instance of SurfaceConfig with the given parameters.
+     */
+    @NonNull
+    public static SurfaceConfig create(@NonNull ConfigType type, @NonNull ConfigSize size,
+            long streamUseCase) {
+        return new AutoValue_SurfaceConfig(type, size, streamUseCase);
     }
 
     /** Returns the configuration type. */
@@ -61,6 +71,21 @@
     public abstract ConfigSize getConfigSize();
 
     /**
+     * Returns the stream use case.
+     * <p>Stream use case constants are implementation-specific constants that allow the
+     * implementation to optimize power and quality characteristics of a stream depending on how
+     * it will be used.
+     * <p> Stream use case is an int flag used to specify the purpose of the stream associated
+     * with this surface. Use cases for the camera2 implementation that are available on devices can
+     * be found in
+     * {@link android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES}
+     *
+     * <p>See {@link android.hardware.camera2.params.OutputConfiguration#setStreamUseCase}
+     * to see how Camera2 framework uses this.
+     */
+    public abstract long getStreamUseCase();
+
+    /**
      * Check whether the input surface configuration has a smaller size than this object and can be
      * supported
      *
diff --git a/camera/camera-video/src/androidTest/java/androidx/camera/video/internal/config/VideoEncoderConfigDefaultResolverTest.kt b/camera/camera-video/src/androidTest/java/androidx/camera/video/internal/config/VideoEncoderConfigDefaultResolverTest.kt
index 354f38a..639bc32 100644
--- a/camera/camera-video/src/androidTest/java/androidx/camera/video/internal/config/VideoEncoderConfigDefaultResolverTest.kt
+++ b/camera/camera-video/src/androidTest/java/androidx/camera/video/internal/config/VideoEncoderConfigDefaultResolverTest.kt
@@ -16,8 +16,12 @@
 
 package androidx.camera.video.internal.config
 
+import android.media.MediaCodecInfo.CodecProfileLevel
+import android.media.MediaFormat
 import android.util.Range
+import androidx.camera.core.DynamicRange
 import androidx.camera.core.SurfaceRequest
+import androidx.camera.core.impl.EncoderProfilesProxy
 import androidx.camera.core.impl.Timebase
 import androidx.camera.testing.EncoderProfilesUtil
 import androidx.camera.video.VideoSpec
@@ -34,7 +38,8 @@
 class VideoEncoderConfigDefaultResolverTest {
 
     companion object {
-        const val MIME_TYPE = "video/avc"
+        const val DEFAULT_MIME_TYPE = MediaFormat.MIMETYPE_VIDEO_AVC
+        const val UNSUPPORTED_MIME_TYPE = MediaFormat.MIMETYPE_VIDEO_SCRAMBLED
         val TIMEBASE = Timebase.UPTIME
         const val FRAME_RATE_30 = 30
         const val FRAME_RATE_45 = 45
@@ -53,43 +58,46 @@
 
         val configSupplierCif =
             VideoEncoderConfigDefaultResolver(
-                MIME_TYPE,
+                DEFAULT_MIME_TYPE,
                 TIMEBASE,
                 DEFAULT_VIDEO_SPEC,
                 surfaceSizeCif,
+                DynamicRange.SDR,
                 expectedFrameRateRange
             )
         val configSupplier720p =
             VideoEncoderConfigDefaultResolver(
-                MIME_TYPE,
+                DEFAULT_MIME_TYPE,
                 TIMEBASE,
                 DEFAULT_VIDEO_SPEC,
                 surfaceSize720p,
+                DynamicRange.SDR,
                 expectedFrameRateRange
             )
         val configSupplier1080p =
             VideoEncoderConfigDefaultResolver(
-                MIME_TYPE,
+                DEFAULT_MIME_TYPE,
                 TIMEBASE,
                 DEFAULT_VIDEO_SPEC,
                 surfaceSize1080p,
+                DynamicRange.SDR,
                 expectedFrameRateRange
             )
 
         val configCif = configSupplierCif.get()
-        assertThat(configCif.mimeType).isEqualTo(MIME_TYPE)
+        assertThat(configCif.mimeType).isEqualTo(DEFAULT_MIME_TYPE)
         assertThat(configCif.bitrate).isGreaterThan(0)
         assertThat(configCif.resolution).isEqualTo(surfaceSizeCif)
         assertThat(configCif.frameRate).isEqualTo(FRAME_RATE_30)
 
         val config720p = configSupplier720p.get()
-        assertThat(config720p.mimeType).isEqualTo(MIME_TYPE)
+        assertThat(config720p.mimeType).isEqualTo(DEFAULT_MIME_TYPE)
         assertThat(config720p.bitrate).isGreaterThan(0)
         assertThat(config720p.resolution).isEqualTo(surfaceSize720p)
         assertThat(config720p.frameRate).isEqualTo(FRAME_RATE_30)
 
         val config1080p = configSupplier1080p.get()
-        assertThat(config1080p.mimeType).isEqualTo(MIME_TYPE)
+        assertThat(config1080p.mimeType).isEqualTo(DEFAULT_MIME_TYPE)
         assertThat(config1080p.bitrate).isGreaterThan(0)
         assertThat(config1080p.resolution).isEqualTo(surfaceSize1080p)
         assertThat(config1080p.frameRate).isEqualTo(FRAME_RATE_30)
@@ -102,10 +110,11 @@
         // Get default bit rate for this size
         val defaultConfig =
             VideoEncoderConfigDefaultResolver(
-                MIME_TYPE,
+                DEFAULT_MIME_TYPE,
                 TIMEBASE,
                 DEFAULT_VIDEO_SPEC,
                 surfaceSize720p,
+                DynamicRange.SDR,
                 SurfaceRequest.FRAME_RATE_RANGE_UNSPECIFIED
             ).get()
         val defaultBitrate = defaultConfig.bitrate
@@ -121,20 +130,22 @@
 
         assertThat(
             VideoEncoderConfigDefaultResolver(
-                MIME_TYPE,
+                DEFAULT_MIME_TYPE,
                 TIMEBASE,
                 higherVideoSpec,
                 surfaceSize720p,
+                DynamicRange.SDR,
                 SurfaceRequest.FRAME_RATE_RANGE_UNSPECIFIED
             ).get().bitrate
         ).isEqualTo(higherBitrate)
 
         assertThat(
             VideoEncoderConfigDefaultResolver(
-                MIME_TYPE,
+                DEFAULT_MIME_TYPE,
                 TIMEBASE,
                 lowerVideoSpec,
                 surfaceSize720p,
+                DynamicRange.SDR,
                 SurfaceRequest.FRAME_RATE_RANGE_UNSPECIFIED
             ).get().bitrate
         ).isEqualTo(lowerBitrate)
@@ -146,10 +157,11 @@
 
         assertThat(
             VideoEncoderConfigDefaultResolver(
-                MIME_TYPE,
+                DEFAULT_MIME_TYPE,
                 TIMEBASE,
                 DEFAULT_VIDEO_SPEC,
                 size,
+                DynamicRange.SDR,
                 SurfaceRequest.FRAME_RATE_RANGE_UNSPECIFIED
             ).get().frameRate
         ).isEqualTo(
@@ -166,14 +178,132 @@
         // Expected frame rate range takes precedence over VideoSpec
         assertThat(
             VideoEncoderConfigDefaultResolver(
-                MIME_TYPE,
+                DEFAULT_MIME_TYPE,
                 TIMEBASE,
                 DEFAULT_VIDEO_SPEC,
                 size,
+                DynamicRange.SDR,
                 expectedFrameRateRange
             ).get().frameRate
         ).isEqualTo(
             FRAME_RATE_45
         )
     }
+
+    @Test
+    fun avcMimeType_producesNoProfile_forHdrDynamicRange() {
+        testMimeAndDynamicRangeResolveToProfile(
+            MediaFormat.MIMETYPE_VIDEO_AVC,
+            DynamicRange.HLG_10_BIT, // AVC does not support HLG10
+            EncoderProfilesProxy.CODEC_PROFILE_NONE
+        )
+    }
+
+    @Test
+    fun unsupportedDynamicRange_producesNoProfile() {
+        testMimeAndDynamicRangeResolveToProfile(
+            MediaFormat.MIMETYPE_VIDEO_HEVC,
+            DynamicRange.DOLBY_VISION_10_BIT, // Dolby vision not supported by HEVC
+            EncoderProfilesProxy.CODEC_PROFILE_NONE
+        )
+    }
+
+    @Test
+    fun unsupportedMime_producesNoProfile() {
+        testMimeAndDynamicRangeResolveToProfile(
+            UNSUPPORTED_MIME_TYPE,
+            DynamicRange.HLG_10_BIT,
+            EncoderProfilesProxy.CODEC_PROFILE_NONE
+        )
+    }
+
+    @Test
+    fun codecProfileIsChosenFromMimeAndDynamicRange_hevc() {
+        val dynamicRangeToExpectedProfiles = mapOf(
+            DynamicRange.SDR to CodecProfileLevel.HEVCProfileMain,
+            DynamicRange.HLG_10_BIT to CodecProfileLevel.HEVCProfileMain10,
+            DynamicRange.HDR10_10_BIT to CodecProfileLevel.HEVCProfileMain10HDR10,
+            DynamicRange.HDR10_PLUS_10_BIT to CodecProfileLevel.HEVCProfileMain10HDR10Plus
+        )
+
+        for (entry in dynamicRangeToExpectedProfiles) {
+            testMimeAndDynamicRangeResolveToProfile(
+                MediaFormat.MIMETYPE_VIDEO_HEVC,
+                entry.key,
+                entry.value
+            )
+        }
+    }
+
+    @Test
+    fun codecProfileIsChosenFromMimeAndDynamicRange_av1() {
+        val dynamicRangeToExpectedProfiles = mapOf(
+            DynamicRange.SDR to CodecProfileLevel.AV1ProfileMain8,
+            DynamicRange.HLG_10_BIT to CodecProfileLevel.AV1ProfileMain10,
+            DynamicRange.HDR10_10_BIT to CodecProfileLevel.AV1ProfileMain10HDR10,
+            DynamicRange.HDR10_PLUS_10_BIT to CodecProfileLevel.AV1ProfileMain10HDR10Plus
+        )
+
+        for (entry in dynamicRangeToExpectedProfiles) {
+            testMimeAndDynamicRangeResolveToProfile(
+                MediaFormat.MIMETYPE_VIDEO_HEVC,
+                entry.key,
+                entry.value
+            )
+        }
+    }
+
+    @Test
+    fun codecProfileIsChosenFromMimeAndDynamicRange_vp9() {
+        val dynamicRangeToExpectedProfiles = mapOf(
+            DynamicRange.SDR to CodecProfileLevel.VP9Profile0,
+            DynamicRange.HLG_10_BIT to CodecProfileLevel.VP9Profile2,
+            DynamicRange.HDR10_10_BIT to CodecProfileLevel.VP9Profile2HDR,
+            DynamicRange.HDR10_PLUS_10_BIT to CodecProfileLevel.VP9Profile2HDR10Plus
+        )
+
+        for (entry in dynamicRangeToExpectedProfiles) {
+            testMimeAndDynamicRangeResolveToProfile(
+                MediaFormat.MIMETYPE_VIDEO_VP9,
+                entry.key,
+                entry.value
+            )
+        }
+    }
+
+    @Test
+    fun codecProfileIsChosenFromMimeAndDynamicRange_dolbyVision() {
+        val dynamicRangeToExpectedProfiles = mapOf(
+            DynamicRange.DOLBY_VISION_10_BIT to CodecProfileLevel.DolbyVisionProfileDvheSt,
+            DynamicRange.DOLBY_VISION_8_BIT to CodecProfileLevel.DolbyVisionProfileDvavSe,
+        )
+
+        for (entry in dynamicRangeToExpectedProfiles) {
+            testMimeAndDynamicRangeResolveToProfile(
+                MediaFormat.MIMETYPE_VIDEO_DOLBY_VISION,
+                entry.key,
+                entry.value
+            )
+        }
+    }
+
+    private fun testMimeAndDynamicRangeResolveToProfile(
+        mime: String,
+        dynamicRange: DynamicRange,
+        expectedProfile: Int
+    ) {
+        // Expected frame rate range takes precedence over VideoSpec
+        assertThat(
+            VideoEncoderConfigDefaultResolver(
+                mime,
+                TIMEBASE,
+                DEFAULT_VIDEO_SPEC,
+                EncoderProfilesUtil.RESOLUTION_1080P,
+                dynamicRange,
+                SurfaceRequest.FRAME_RATE_RANGE_UNSPECIFIED
+            ).get().profile
+        ).isEqualTo(
+            expectedProfile
+        )
+    }
 }
\ No newline at end of file
diff --git a/camera/camera-video/src/androidTest/java/androidx/camera/video/internal/config/VideoEncoderConfigVideoProfileResolverTest.kt b/camera/camera-video/src/androidTest/java/androidx/camera/video/internal/config/VideoEncoderConfigVideoProfileResolverTest.kt
index 8bd09e7..e32b19f 100644
--- a/camera/camera-video/src/androidTest/java/androidx/camera/video/internal/config/VideoEncoderConfigVideoProfileResolverTest.kt
+++ b/camera/camera-video/src/androidTest/java/androidx/camera/video/internal/config/VideoEncoderConfigVideoProfileResolverTest.kt
@@ -75,9 +75,7 @@
     private val defaultVideoSpec = VideoSpec.builder().build()
     private val timebase = Timebase.UPTIME
 
-    // TODO(b/278168212): Only SDR is checked by now. Need to extend to HDR dynamic ranges.
-    private val dynamicRange = DynamicRange.SDR
-
+    private lateinit var dynamicRanges: Set<DynamicRange>
     private lateinit var cameraUseCaseAdapter: CameraUseCaseAdapter
     private lateinit var videoCapabilities: VideoCapabilities
 
@@ -92,7 +90,10 @@
 
         val cameraInfo = CameraUtil.createCameraUseCaseAdapter(context, cameraSelector).cameraInfo
         videoCapabilities = Recorder.getVideoCapabilities(cameraInfo)
-        Assume.assumeTrue(videoCapabilities.getSupportedQualities(dynamicRange).isNotEmpty())
+        dynamicRanges = videoCapabilities.supportedDynamicRanges
+        dynamicRanges.forEach {
+            Assume.assumeTrue(videoCapabilities.getSupportedQualities(it).isNotEmpty())
+        }
     }
 
     @After
@@ -108,190 +109,243 @@
 
     @Test
     fun defaultVideoSpecProducesValidSettings_forSurfaceSizeEquivalentToQuality() {
-        val supportedProfiles = videoCapabilities.getSupportedQualities(dynamicRange).map {
-            videoCapabilities.getProfiles(it, dynamicRange)!!
-        }
+        dynamicRanges.forEach { dynamicRange ->
+            val supportedProfiles = videoCapabilities.getSupportedQualities(dynamicRange).map {
+                videoCapabilities.getProfiles(it, dynamicRange)!!
+            }
 
-        supportedProfiles.forEach {
-            val videoProfile = it.defaultVideoProfile
-            val config = VideoEncoderConfigVideoProfileResolver(
-                videoProfile.mediaType,
-                timebase,
-                defaultVideoSpec,
-                Size(videoProfile.width, videoProfile.height),
-                videoProfile,
-                SurfaceRequest.FRAME_RATE_RANGE_UNSPECIFIED
-            ).get()
+            supportedProfiles.forEach {
+                val videoProfile = it.defaultVideoProfile
+                val config = VideoEncoderConfigVideoProfileResolver(
+                    videoProfile.mediaType,
+                    timebase,
+                    defaultVideoSpec,
+                    Size(videoProfile.width, videoProfile.height),
+                    videoProfile,
+                    dynamicRange,
+                    SurfaceRequest.FRAME_RATE_RANGE_UNSPECIFIED
+                ).get()
 
-            assertThat(config.mimeType).isEqualTo(videoProfile.mediaType)
-            assertThat(config.bitrate).isEqualTo(videoProfile.bitrate)
-            assertThat(config.resolution).isEqualTo(Size(videoProfile.width, videoProfile.height))
-            assertThat(config.frameRate).isEqualTo(videoProfile.frameRate)
+                assertThat(config.mimeType).isEqualTo(videoProfile.mediaType)
+                assertThat(config.bitrate).isEqualTo(videoProfile.bitrate)
+                assertThat(config.resolution).isEqualTo(
+                    Size(
+                        videoProfile.width,
+                        videoProfile.height
+                    )
+                )
+                assertThat(config.frameRate).isEqualTo(videoProfile.frameRate)
+            }
         }
     }
 
     @Test
     fun bitrateIncreasesOrDecreasesWithIncreaseOrDecreaseInSurfaceSize() {
-        val profile =
-            videoCapabilities.getProfiles(Quality.HIGHEST, dynamicRange)!!.defaultVideoProfile
-        val surfaceSize = Size(profile.width, profile.height)
+        dynamicRanges.forEach { dynamicRange ->
+            val profile =
+                videoCapabilities.getProfiles(Quality.HIGHEST, dynamicRange)!!.defaultVideoProfile
+            val surfaceSize = Size(profile.width, profile.height)
 
-        val defaultBitrate = VideoEncoderConfigVideoProfileResolver(
-            profile.mediaType,
-            timebase,
-            defaultVideoSpec,
-            surfaceSize,
-            profile,
-            SurfaceRequest.FRAME_RATE_RANGE_UNSPECIFIED
-        ).get().bitrate
-
-        val increasedSurfaceSize = Size(surfaceSize.width + 100, surfaceSize.height + 100)
-        val decreasedSurfaceSize = Size(surfaceSize.width - 100, surfaceSize.height - 100)
-
-        assertThat(
-            VideoEncoderConfigVideoProfileResolver(
+            val defaultBitrate = VideoEncoderConfigVideoProfileResolver(
                 profile.mediaType,
                 timebase,
                 defaultVideoSpec,
-                increasedSurfaceSize,
+                surfaceSize,
                 profile,
+                dynamicRange,
                 SurfaceRequest.FRAME_RATE_RANGE_UNSPECIFIED
             ).get().bitrate
-        ).isGreaterThan(defaultBitrate)
 
-        assertThat(
-            VideoEncoderConfigVideoProfileResolver(
-                profile.mediaType,
-                timebase,
-                defaultVideoSpec,
-                decreasedSurfaceSize,
-                profile,
-                SurfaceRequest.FRAME_RATE_RANGE_UNSPECIFIED
-            ).get().bitrate
-        ).isLessThan(defaultBitrate)
+            val increasedSurfaceSize = Size(surfaceSize.width + 100, surfaceSize.height + 100)
+            val decreasedSurfaceSize = Size(surfaceSize.width - 100, surfaceSize.height - 100)
+
+            assertThat(
+                VideoEncoderConfigVideoProfileResolver(
+                    profile.mediaType,
+                    timebase,
+                    defaultVideoSpec,
+                    increasedSurfaceSize,
+                    profile,
+                    dynamicRange,
+                    SurfaceRequest.FRAME_RATE_RANGE_UNSPECIFIED
+                ).get().bitrate
+            ).isGreaterThan(defaultBitrate)
+
+            assertThat(
+                VideoEncoderConfigVideoProfileResolver(
+                    profile.mediaType,
+                    timebase,
+                    defaultVideoSpec,
+                    decreasedSurfaceSize,
+                    profile,
+                    dynamicRange,
+                    SurfaceRequest.FRAME_RATE_RANGE_UNSPECIFIED
+                ).get().bitrate
+            ).isLessThan(defaultBitrate)
+        }
     }
 
     @Test
     fun bitrateRangeInVideoSpecClampsBitrate() {
-        val profile =
-            videoCapabilities.getProfiles(Quality.HIGHEST, dynamicRange)!!.defaultVideoProfile
-        val surfaceSize = Size(profile.width, profile.height)
+        dynamicRanges.forEach { dynamicRange ->
+            val profile =
+                videoCapabilities.getProfiles(Quality.HIGHEST, dynamicRange)!!.defaultVideoProfile
+            val surfaceSize = Size(profile.width, profile.height)
 
-        val defaultBitrate = VideoEncoderConfigVideoProfileResolver(
-            profile.mediaType,
-            timebase,
-            defaultVideoSpec,
-            surfaceSize,
-            profile,
-            SurfaceRequest.FRAME_RATE_RANGE_UNSPECIFIED
-        ).get().bitrate
-
-        // Create video spec with limit 20% higher than default.
-        val higherBitrate = (defaultBitrate * 1.2).toInt()
-        val higherVideoSpec =
-            VideoSpec.builder().setBitrate(Range(higherBitrate, Int.MAX_VALUE)).build()
-
-        // Create video spec with limit 20% lower than default.
-        val lowerBitrate = (defaultBitrate * 0.8).toInt()
-        val lowerVideoSpec = VideoSpec.builder().setBitrate(Range(0, lowerBitrate)).build()
-
-        assertThat(
-            VideoEncoderConfigVideoProfileResolver(
+            val defaultBitrate = VideoEncoderConfigVideoProfileResolver(
                 profile.mediaType,
                 timebase,
-                higherVideoSpec,
+                defaultVideoSpec,
                 surfaceSize,
                 profile,
+                dynamicRange,
                 SurfaceRequest.FRAME_RATE_RANGE_UNSPECIFIED
             ).get().bitrate
-        ).isEqualTo(higherBitrate)
 
-        assertThat(
-            VideoEncoderConfigVideoProfileResolver(
-                profile.mediaType,
-                timebase,
-                lowerVideoSpec,
-                surfaceSize,
-                profile,
-                SurfaceRequest.FRAME_RATE_RANGE_UNSPECIFIED
-            ).get().bitrate
-        ).isEqualTo(lowerBitrate)
+            // Create video spec with limit 20% higher than default.
+            val higherBitrate = (defaultBitrate * 1.2).toInt()
+            val higherVideoSpec =
+                VideoSpec.builder().setBitrate(Range(higherBitrate, Int.MAX_VALUE)).build()
+
+            // Create video spec with limit 20% lower than default.
+            val lowerBitrate = (defaultBitrate * 0.8).toInt()
+            val lowerVideoSpec = VideoSpec.builder().setBitrate(Range(0, lowerBitrate)).build()
+
+            assertThat(
+                VideoEncoderConfigVideoProfileResolver(
+                    profile.mediaType,
+                    timebase,
+                    higherVideoSpec,
+                    surfaceSize,
+                    profile,
+                    dynamicRange,
+                    SurfaceRequest.FRAME_RATE_RANGE_UNSPECIFIED
+                ).get().bitrate
+            ).isEqualTo(higherBitrate)
+
+            assertThat(
+                VideoEncoderConfigVideoProfileResolver(
+                    profile.mediaType,
+                    timebase,
+                    lowerVideoSpec,
+                    surfaceSize,
+                    profile,
+                    dynamicRange,
+                    SurfaceRequest.FRAME_RATE_RANGE_UNSPECIFIED
+                ).get().bitrate
+            ).isEqualTo(lowerBitrate)
+        }
     }
 
     @Test
     fun resolvedFrameRateIsClampedToOperatingRate() {
-        val profile =
-            videoCapabilities.getProfiles(Quality.HIGHEST, dynamicRange)!!.defaultVideoProfile
-        val surfaceSize = Size(profile.width, profile.height)
+        dynamicRanges.forEach { dynamicRange ->
+            val profile =
+                videoCapabilities.getProfiles(Quality.HIGHEST, dynamicRange)!!.defaultVideoProfile
+            val surfaceSize = Size(profile.width, profile.height)
 
-        // Construct operating ranges that are both lower and higher than the profile FPS
-        val lowerOperatingRange = Range(profile.frameRate / 4, profile.frameRate / 2)
-        val higherOperatingRange = Range(profile.frameRate * 2, profile.frameRate * 4)
+            // Construct operating ranges that are both lower and higher than the profile FPS
+            val lowerOperatingRange = Range(profile.frameRate / 4, profile.frameRate / 2)
+            val higherOperatingRange = Range(profile.frameRate * 2, profile.frameRate * 4)
 
-        val clampedDownFrameRate = VideoEncoderConfigVideoProfileResolver(
-            profile.mediaType,
-            timebase,
-            defaultVideoSpec,
-            surfaceSize,
-            profile,
-            lowerOperatingRange
-        ).get().frameRate
+            val clampedDownFrameRate = VideoEncoderConfigVideoProfileResolver(
+                profile.mediaType,
+                timebase,
+                defaultVideoSpec,
+                surfaceSize,
+                profile,
+                dynamicRange,
+                lowerOperatingRange
+            ).get().frameRate
 
-        val clampedUpFrameRate = VideoEncoderConfigVideoProfileResolver(
-            profile.mediaType,
-            timebase,
-            defaultVideoSpec,
-            surfaceSize,
-            profile,
-            higherOperatingRange
-        ).get().frameRate
+            val clampedUpFrameRate = VideoEncoderConfigVideoProfileResolver(
+                profile.mediaType,
+                timebase,
+                defaultVideoSpec,
+                surfaceSize,
+                profile,
+                dynamicRange,
+                higherOperatingRange
+            ).get().frameRate
 
-        assertThat(clampedDownFrameRate).isEqualTo(lowerOperatingRange.upper)
-        assertThat(clampedUpFrameRate).isEqualTo(higherOperatingRange.lower)
+            assertThat(clampedDownFrameRate).isEqualTo(lowerOperatingRange.upper)
+            assertThat(clampedUpFrameRate).isEqualTo(higherOperatingRange.lower)
+        }
     }
 
     @Test
     fun resolvedFrameRateInsideOperatingRangeIsUnchanged() {
-        val profile =
-            videoCapabilities.getProfiles(Quality.HIGHEST, dynamicRange)!!.defaultVideoProfile
-        val surfaceSize = Size(profile.width, profile.height)
+        dynamicRanges.forEach { dynamicRange ->
+            val profile =
+                videoCapabilities.getProfiles(Quality.HIGHEST, dynamicRange)!!.defaultVideoProfile
+            val surfaceSize = Size(profile.width, profile.height)
 
-        // Construct a range that includes the profile FPS
-        val operatingRange = Range(profile.frameRate / 2, profile.frameRate * 2)
+            // Construct a range that includes the profile FPS
+            val operatingRange = Range(profile.frameRate / 2, profile.frameRate * 2)
 
-        val resolvedFrameRate = VideoEncoderConfigVideoProfileResolver(
-            profile.mediaType,
-            timebase,
-            defaultVideoSpec,
-            surfaceSize,
-            profile,
-            operatingRange
-        ).get().frameRate
+            val resolvedFrameRate = VideoEncoderConfigVideoProfileResolver(
+                profile.mediaType,
+                timebase,
+                defaultVideoSpec,
+                surfaceSize,
+                profile,
+                dynamicRange,
+                operatingRange
+            ).get().frameRate
 
-        assertThat(resolvedFrameRate).isEqualTo(profile.frameRate)
+            assertThat(resolvedFrameRate).isEqualTo(profile.frameRate)
+        }
     }
 
     @Test
     fun bitrateScalesWithFrameRateOperatingRange() {
-        val profile =
-            videoCapabilities.getProfiles(Quality.HIGHEST, dynamicRange)!!.defaultVideoProfile
-        val surfaceSize = Size(profile.width, profile.height)
+        dynamicRanges.forEach { dynamicRange ->
+            val profile =
+                videoCapabilities.getProfiles(Quality.HIGHEST, dynamicRange)!!.defaultVideoProfile
+            val surfaceSize = Size(profile.width, profile.height)
 
-        // Construct a range which is constant and half the profile FPS
-        val operatingFrameRate = profile.frameRate / 2
-        val operatingRange = Range(operatingFrameRate, operatingFrameRate)
+            // Construct a range which is constant and half the profile FPS
+            val operatingFrameRate = profile.frameRate / 2
+            val operatingRange = Range(operatingFrameRate, operatingFrameRate)
 
-        val resolvedBitrate = VideoEncoderConfigVideoProfileResolver(
-            profile.mediaType,
-            timebase,
-            defaultVideoSpec,
-            surfaceSize,
-            profile,
-            operatingRange
-        ).get().bitrate
+            val resolvedBitrate = VideoEncoderConfigVideoProfileResolver(
+                profile.mediaType,
+                timebase,
+                defaultVideoSpec,
+                surfaceSize,
+                profile,
+                dynamicRange,
+                operatingRange
+            ).get().bitrate
 
-        assertThat(resolvedBitrate).isEqualTo(
-            (profile.bitrate * (operatingFrameRate.toDouble() / profile.frameRate)).toInt()
-        )
+            assertThat(resolvedBitrate).isEqualTo(
+                (profile.bitrate * (operatingFrameRate.toDouble() / profile.frameRate)).toInt()
+            )
+        }
+    }
+
+    @Test
+    fun codecProfileLevel_isResolvedFromVideoProfile() {
+        dynamicRanges.forEach { dynamicRange ->
+            val supportedProfiles = videoCapabilities.getSupportedQualities(dynamicRange).flatMap {
+                videoCapabilities.getProfiles(it, dynamicRange)!!.videoProfiles
+            }
+
+            supportedProfiles.forEach { videoProfile ->
+                val surfaceSize = Size(videoProfile.width, videoProfile.height)
+
+                val resolvedProfile = VideoEncoderConfigVideoProfileResolver(
+                    videoProfile.mediaType,
+                    timebase,
+                    defaultVideoSpec,
+                    surfaceSize,
+                    videoProfile,
+                    dynamicRange,
+                    Range(videoProfile.frameRate, videoProfile.frameRate)
+                ).get().profile
+
+                assertThat(resolvedProfile).isEqualTo(videoProfile.profile)
+            }
+        }
     }
 }
\ No newline at end of file
diff --git a/camera/camera-video/src/androidTest/java/androidx/camera/video/internal/workaround/EncoderFinderTest.kt b/camera/camera-video/src/androidTest/java/androidx/camera/video/internal/workaround/EncoderFinderTest.kt
index d6c35d2..16c14bb 100644
--- a/camera/camera-video/src/androidTest/java/androidx/camera/video/internal/workaround/EncoderFinderTest.kt
+++ b/camera/camera-video/src/androidTest/java/androidx/camera/video/internal/workaround/EncoderFinderTest.kt
@@ -169,6 +169,7 @@
                 videoSpec,
                 resolution,
                 videoProfile,
+                dynamicRange,
                 SurfaceRequest.FRAME_RATE_RANGE_UNSPECIFIED
             ).get().toMediaFormat()
 
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/VideoCapture.java b/camera/camera-video/src/main/java/androidx/camera/video/VideoCapture.java
index a10d019..3858066 100644
--- a/camera/camera-video/src/main/java/androidx/camera/video/VideoCapture.java
+++ b/camera/camera-video/src/main/java/androidx/camera/video/VideoCapture.java
@@ -1179,6 +1179,7 @@
                 Timebase.UPTIME,
                 mediaSpec.getVideoSpec(),
                 resolution,
+                dynamicRange,
                 expectedFrameRate);
 
         return videoEncoderInfoFinder.apply(videoEncoderConfig);
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/VideoEncoderSession.java b/camera/camera-video/src/main/java/androidx/camera/video/VideoEncoderSession.java
index c908b8a..1985020 100644
--- a/camera/camera-video/src/main/java/androidx/camera/video/VideoEncoderSession.java
+++ b/camera/camera-video/src/main/java/androidx/camera/video/VideoEncoderSession.java
@@ -24,6 +24,7 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.RequiresApi;
+import androidx.camera.core.DynamicRange;
 import androidx.camera.core.Logger;
 import androidx.camera.core.SurfaceRequest;
 import androidx.camera.core.impl.Timebase;
@@ -288,8 +289,9 @@
             @Nullable VideoValidatedEncoderProfilesProxy resolvedEncoderProfiles,
             @NonNull MediaSpec mediaSpec,
             @NonNull CallbackToFutureAdapter.Completer<Encoder> configureCompleter) {
-        VideoMimeInfo videoMimeInfo = resolveVideoMimeInfo(mediaSpec,
-                surfaceRequest.getDynamicRange(), resolvedEncoderProfiles);
+        DynamicRange dynamicRange = surfaceRequest.getDynamicRange();
+        VideoMimeInfo videoMimeInfo = resolveVideoMimeInfo(mediaSpec, dynamicRange,
+                resolvedEncoderProfiles);
 
         // The VideoSpec from mediaSpec only contains settings requested by the recorder, but
         // the actual settings may need to differ depending on the FPS chosen by the camera.
@@ -299,6 +301,7 @@
                 timebase,
                 mediaSpec.getVideoSpec(),
                 surfaceRequest.getResolution(),
+                dynamicRange,
                 surfaceRequest.getExpectedFrameRate());
 
         try {
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/internal/config/VideoConfigUtil.java b/camera/camera-video/src/main/java/androidx/camera/video/internal/config/VideoConfigUtil.java
index 3d10c5b..6d7d97f6 100644
--- a/camera/camera-video/src/main/java/androidx/camera/video/internal/config/VideoConfigUtil.java
+++ b/camera/camera-video/src/main/java/androidx/camera/video/internal/config/VideoConfigUtil.java
@@ -171,16 +171,18 @@
     @NonNull
     public static VideoEncoderConfig resolveVideoEncoderConfig(@NonNull VideoMimeInfo videoMimeInfo,
             @NonNull Timebase inputTimebase, @NonNull VideoSpec videoSpec,
-            @NonNull Size surfaceSize, @NonNull Range<Integer> expectedFrameRateRange) {
+            @NonNull Size surfaceSize, @NonNull DynamicRange dynamicRange,
+            @NonNull Range<Integer> expectedFrameRateRange
+    ) {
         Supplier<VideoEncoderConfig> configSupplier;
         VideoProfileProxy videoProfile = videoMimeInfo.getCompatibleVideoProfile();
         if (videoProfile != null) {
             configSupplier = new VideoEncoderConfigVideoProfileResolver(
                     videoMimeInfo.getMimeType(), inputTimebase, videoSpec, surfaceSize,
-                    videoProfile, expectedFrameRateRange);
+                    videoProfile, dynamicRange, expectedFrameRateRange);
         } else {
             configSupplier = new VideoEncoderConfigDefaultResolver(videoMimeInfo.getMimeType(),
-                    inputTimebase, videoSpec, surfaceSize, expectedFrameRateRange);
+                    inputTimebase, videoSpec, surfaceSize, dynamicRange, expectedFrameRateRange);
         }
 
         return configSupplier.get();
@@ -188,10 +190,13 @@
 
     static int scaleAndClampBitrate(
             int baseBitrate,
+            int actualBitDepth, int baseBitDepth,
             int actualFrameRate, int baseFrameRate,
             int actualWidth, int baseWidth,
             int actualHeight, int baseHeight,
             @NonNull Range<Integer> clampedRange) {
+        //  Scale bit depth to match new bit depth
+        Rational bitDepthRatio = new Rational(actualBitDepth, baseBitDepth);
         // Scale bitrate to match current frame rate
         Rational frameRateRatio = new Rational(actualFrameRate, baseFrameRate);
         // Scale bitrate depending on number of actual pixels relative to profile's
@@ -201,14 +206,15 @@
         Rational widthRatio = new Rational(actualWidth, baseWidth);
         Rational heightRatio = new Rational(actualHeight, baseHeight);
         int resolvedBitrate =
-                (int) (baseBitrate * frameRateRatio.doubleValue() * widthRatio.doubleValue()
-                        * heightRatio.doubleValue());
+                (int) (baseBitrate * bitDepthRatio.doubleValue() * frameRateRatio.doubleValue()
+                        * widthRatio.doubleValue() * heightRatio.doubleValue());
 
         String debugString = "";
         if (Logger.isDebugEnabled(TAG)) {
-            debugString = String.format("Base Bitrate(%dbps) * Frame Rate Ratio(%d / %d) * Width "
-                            + "Ratio(%d / %d) * Height Ratio(%d / %d) = %d", baseBitrate,
-                    actualFrameRate,
+            debugString = String.format("Base Bitrate(%dbps) * Bit Depth Ratio (%d / %d) * "
+                            + "Frame Rate Ratio(%d / %d) * Width Ratio(%d / %d) * "
+                            + "Height Ratio(%d / %d) = %d", baseBitrate,
+                    actualBitDepth, baseBitDepth, actualFrameRate,
                     baseFrameRate, actualWidth, baseWidth, actualHeight, baseHeight,
                     resolvedBitrate);
         }
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/internal/config/VideoEncoderConfigDefaultResolver.java b/camera/camera-video/src/main/java/androidx/camera/video/internal/config/VideoEncoderConfigDefaultResolver.java
index 7d09ed2..8aed0f6 100644
--- a/camera/camera-video/src/main/java/androidx/camera/video/internal/config/VideoEncoderConfigDefaultResolver.java
+++ b/camera/camera-video/src/main/java/androidx/camera/video/internal/config/VideoEncoderConfigDefaultResolver.java
@@ -21,11 +21,13 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.RequiresApi;
+import androidx.camera.core.DynamicRange;
 import androidx.camera.core.Logger;
 import androidx.camera.core.SurfaceRequest;
 import androidx.camera.core.impl.Timebase;
 import androidx.camera.video.VideoSpec;
 import androidx.camera.video.internal.encoder.VideoEncoderConfig;
+import androidx.camera.video.internal.utils.DynamicRangeUtil;
 import androidx.core.util.Supplier;
 
 import java.util.Objects;
@@ -45,6 +47,7 @@
     private static final Size VIDEO_SIZE_BASE = new Size(1280, 720);
     private static final int VIDEO_FRAME_RATE_BASE = 30;
     static final int VIDEO_FRAME_RATE_FIXED_DEFAULT = 30;
+    private static final int VIDEO_BIT_DEPTH_BASE = 8;
     private static final Range<Integer> VALID_FRAME_RATE_RANGE = new Range<>(1, 60);
 
     private final String mMimeType;
@@ -52,6 +55,7 @@
     private final Timebase mInputTimebase;
     private final VideoSpec mVideoSpec;
     private final Size mSurfaceSize;
+    private final DynamicRange mDynamicRange;
     private final Range<Integer> mExpectedFrameRateRange;
 
     /**
@@ -63,6 +67,7 @@
      *                               be used with the video encoder.
      * @param surfaceSize            The size of the surface required by the camera for the video
      *                               encoder.
+     * @param dynamicRange           The dynamic range of input frames.
      * @param expectedFrameRateRange The expected source frame rate range. This should act as an
      *                               envelope for any frame rate calculated from {@code videoSpec
      *                               } and {@code videoProfile} since the source should not
@@ -73,11 +78,13 @@
      */
     public VideoEncoderConfigDefaultResolver(@NonNull String mimeType,
             @NonNull Timebase inputTimebase, @NonNull VideoSpec videoSpec,
-            @NonNull Size surfaceSize, @NonNull Range<Integer> expectedFrameRateRange) {
+            @NonNull Size surfaceSize, @NonNull DynamicRange dynamicRange,
+            @NonNull Range<Integer> expectedFrameRateRange) {
         mMimeType = mimeType;
         mInputTimebase = inputTimebase;
         mVideoSpec = videoSpec;
         mSurfaceSize = surfaceSize;
+        mDynamicRange = dynamicRange;
         mExpectedFrameRateRange = expectedFrameRateRange;
     }
 
@@ -92,17 +99,22 @@
         // We have no other information to go off of. Scale based on fallback defaults.
         int resolvedBitrate = VideoConfigUtil.scaleAndClampBitrate(
                 VIDEO_BITRATE_BASE,
+                mDynamicRange.getBitDepth(), VIDEO_BIT_DEPTH_BASE,
                 resolvedFrameRate, VIDEO_FRAME_RATE_BASE,
                 mSurfaceSize.getWidth(), VIDEO_SIZE_BASE.getWidth(),
                 mSurfaceSize.getHeight(), VIDEO_SIZE_BASE.getHeight(),
                 videoSpecBitrateRange);
 
+        int resolvedProfile = DynamicRangeUtil.dynamicRangeToCodecProfileLevelForMime(
+                mMimeType, mDynamicRange);
+
         return VideoEncoderConfig.builder()
                 .setMimeType(mMimeType)
                 .setInputTimebase(mInputTimebase)
                 .setResolution(mSurfaceSize)
                 .setBitrate(resolvedBitrate)
                 .setFrameRate(resolvedFrameRate)
+                .setProfile(resolvedProfile)
                 .build();
     }
 
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/internal/config/VideoEncoderConfigVideoProfileResolver.java b/camera/camera-video/src/main/java/androidx/camera/video/internal/config/VideoEncoderConfigVideoProfileResolver.java
index dc374ae..4b1a958 100644
--- a/camera/camera-video/src/main/java/androidx/camera/video/internal/config/VideoEncoderConfigVideoProfileResolver.java
+++ b/camera/camera-video/src/main/java/androidx/camera/video/internal/config/VideoEncoderConfigVideoProfileResolver.java
@@ -21,6 +21,7 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.RequiresApi;
+import androidx.camera.core.DynamicRange;
 import androidx.camera.core.Logger;
 import androidx.camera.core.SurfaceRequest;
 import androidx.camera.core.impl.EncoderProfilesProxy.VideoProfileProxy;
@@ -38,7 +39,6 @@
  */
 @RequiresApi(21) // TODO(b/200306659): Remove and replace with annotation on package-info.java
 public class VideoEncoderConfigVideoProfileResolver implements Supplier<VideoEncoderConfig> {
-
     private static final String TAG = "VidEncVdPrflRslvr";
 
     private final String mMimeType;
@@ -46,6 +46,7 @@
     private final VideoSpec mVideoSpec;
     private final Size mSurfaceSize;
     private final VideoProfileProxy mVideoProfile;
+    private final DynamicRange mDynamicRange;
     private final Range<Integer> mExpectedFrameRateRange;
 
     /**
@@ -58,6 +59,7 @@
      * @param surfaceSize      The size of the surface required by the camera for the video encoder.
      * @param videoProfile     The {@link VideoProfileProxy} used to resolve automatic and range
      *                         settings.
+     * @param dynamicRange     The dynamic range of input frames.
      * @param expectedFrameRateRange The expected source frame rate range. This should act as an
      *                               envelope for any frame rate calculated from {@code videoSpec}
      *                               and {@code videoProfile} since the source should not
@@ -71,12 +73,14 @@
             @NonNull VideoSpec videoSpec,
             @NonNull Size surfaceSize,
             @NonNull VideoProfileProxy videoProfile,
+            @NonNull DynamicRange dynamicRange,
             @NonNull Range<Integer> expectedFrameRateRange) {
         mMimeType = mimeType;
         mInputTimebase = inputTimebase;
         mVideoSpec = videoSpec;
         mSurfaceSize = surfaceSize;
         mVideoProfile = videoProfile;
+        mDynamicRange = dynamicRange;
         mExpectedFrameRateRange = expectedFrameRateRange;
     }
 
@@ -90,17 +94,21 @@
         Logger.d(TAG, "Using resolved VIDEO bitrate from EncoderProfiles");
         int resolvedBitrate = VideoConfigUtil.scaleAndClampBitrate(
                 mVideoProfile.getBitrate(),
+                mDynamicRange.getBitDepth(), mVideoProfile.getBitDepth(),
                 resolvedFrameRate, mVideoProfile.getFrameRate(),
                 mSurfaceSize.getWidth(), mVideoProfile.getWidth(),
                 mSurfaceSize.getHeight(), mVideoProfile.getHeight(),
                 videoSpecBitrateRange);
 
+        int resolvedProfile = mVideoProfile.getProfile();
+
         return VideoEncoderConfig.builder()
                 .setMimeType(mMimeType)
                 .setInputTimebase(mInputTimebase)
                 .setResolution(mSurfaceSize)
                 .setBitrate(resolvedBitrate)
                 .setFrameRate(resolvedFrameRate)
+                .setProfile(resolvedProfile)
                 .build();
     }
 
diff --git a/camera/camera-video/src/main/java/androidx/camera/video/internal/utils/DynamicRangeUtil.java b/camera/camera-video/src/main/java/androidx/camera/video/internal/utils/DynamicRangeUtil.java
index 0f27e50..3cd26a3 100644
--- a/camera/camera-video/src/main/java/androidx/camera/video/internal/utils/DynamicRangeUtil.java
+++ b/camera/camera-video/src/main/java/androidx/camera/video/internal/utils/DynamicRangeUtil.java
@@ -21,10 +21,26 @@
 import static android.media.EncoderProfiles.VideoProfile.HDR_HDR10PLUS;
 import static android.media.EncoderProfiles.VideoProfile.HDR_HLG;
 import static android.media.EncoderProfiles.VideoProfile.HDR_NONE;
+import static android.media.MediaCodecInfo.CodecProfileLevel.AV1ProfileMain10;
+import static android.media.MediaCodecInfo.CodecProfileLevel.AV1ProfileMain10HDR10;
+import static android.media.MediaCodecInfo.CodecProfileLevel.AV1ProfileMain10HDR10Plus;
+import static android.media.MediaCodecInfo.CodecProfileLevel.AV1ProfileMain8;
+import static android.media.MediaCodecInfo.CodecProfileLevel.DolbyVisionProfileDvavSe;
+import static android.media.MediaCodecInfo.CodecProfileLevel.DolbyVisionProfileDvheSt;
+import static android.media.MediaCodecInfo.CodecProfileLevel.HEVCProfileMain;
+import static android.media.MediaCodecInfo.CodecProfileLevel.HEVCProfileMain10;
+import static android.media.MediaCodecInfo.CodecProfileLevel.HEVCProfileMain10HDR10;
+import static android.media.MediaCodecInfo.CodecProfileLevel.HEVCProfileMain10HDR10Plus;
+import static android.media.MediaCodecInfo.CodecProfileLevel.VP9Profile0;
+import static android.media.MediaCodecInfo.CodecProfileLevel.VP9Profile2;
+import static android.media.MediaCodecInfo.CodecProfileLevel.VP9Profile2HDR;
+import static android.media.MediaCodecInfo.CodecProfileLevel.VP9Profile2HDR10Plus;
 
 import static androidx.camera.core.DynamicRange.BIT_DEPTH_10_BIT;
 import static androidx.camera.core.DynamicRange.BIT_DEPTH_8_BIT;
 import static androidx.camera.core.DynamicRange.BIT_DEPTH_UNSPECIFIED;
+import static androidx.camera.core.DynamicRange.DOLBY_VISION_10_BIT;
+import static androidx.camera.core.DynamicRange.DOLBY_VISION_8_BIT;
 import static androidx.camera.core.DynamicRange.ENCODING_DOLBY_VISION;
 import static androidx.camera.core.DynamicRange.ENCODING_HDR10;
 import static androidx.camera.core.DynamicRange.ENCODING_HDR10_PLUS;
@@ -32,15 +48,22 @@
 import static androidx.camera.core.DynamicRange.ENCODING_HLG;
 import static androidx.camera.core.DynamicRange.ENCODING_SDR;
 import static androidx.camera.core.DynamicRange.ENCODING_UNSPECIFIED;
+import static androidx.camera.core.DynamicRange.HDR10_10_BIT;
+import static androidx.camera.core.DynamicRange.HDR10_PLUS_10_BIT;
+import static androidx.camera.core.DynamicRange.HLG_10_BIT;
+import static androidx.camera.core.DynamicRange.SDR;
 import static androidx.camera.core.impl.EncoderProfilesProxy.VideoProfileProxy.BIT_DEPTH_10;
 import static androidx.camera.core.impl.EncoderProfilesProxy.VideoProfileProxy.BIT_DEPTH_8;
 
 import static java.util.Arrays.asList;
 import static java.util.Collections.singletonList;
 
+import android.media.MediaFormat;
+
 import androidx.annotation.NonNull;
 import androidx.annotation.RequiresApi;
 import androidx.camera.core.DynamicRange;
+import androidx.camera.core.impl.EncoderProfilesProxy;
 
 import java.util.Collections;
 import java.util.HashMap;
@@ -53,10 +76,11 @@
  */
 @RequiresApi(21) // TODO(b/200306659): Remove and replace with annotation on package-info.java
 public class DynamicRangeUtil {
-
     public static final Map<Integer, Set<Integer>> DR_TO_VP_BIT_DEPTH_MAP = new HashMap<>();
     public static final Map<Integer, Set<Integer>> DR_TO_VP_FORMAT_MAP = new HashMap<>();
     public static final Map<Integer, Integer> VP_TO_DR_FORMAT_MAP = new HashMap<>();
+    private static final Map<String, Map<DynamicRange, Integer>> MIME_TO_DEFAULT_PROFILE_LEVEL_MAP =
+            new HashMap<>();
 
     private DynamicRangeUtil() {
     }
@@ -86,6 +110,46 @@
         VP_TO_DR_FORMAT_MAP.put(HDR_HDR10, ENCODING_HDR10);
         VP_TO_DR_FORMAT_MAP.put(HDR_HDR10PLUS, ENCODING_HDR10_PLUS);
         VP_TO_DR_FORMAT_MAP.put(HDR_DOLBY_VISION, ENCODING_DOLBY_VISION);
+
+        //--------------------------------------------------------------------------------------//
+        // Default CodecProfileLevel mappings from                                              //
+        // frameworks/av/media/codec2/sfplugin/utils/Codec2Mapper.cpp                           //
+        //--------------------------------------------------------------------------------------//
+        // DynamicRange encodings to HEVC profiles
+        Map<DynamicRange, Integer> hevcMap = new HashMap<>();
+        hevcMap.put(SDR, HEVCProfileMain);
+        hevcMap.put(HLG_10_BIT, HEVCProfileMain10);
+        hevcMap.put(HDR10_10_BIT, HEVCProfileMain10HDR10);
+        hevcMap.put(HDR10_PLUS_10_BIT, HEVCProfileMain10HDR10Plus);
+
+        // DynamicRange encodings to AV1 profiles for YUV 4:2:0 chroma subsampling
+        Map<DynamicRange, Integer> av1420Map = new HashMap<>();
+        av1420Map.put(SDR, AV1ProfileMain8);
+        av1420Map.put(HLG_10_BIT, AV1ProfileMain10);
+        av1420Map.put(HDR10_10_BIT, AV1ProfileMain10HDR10);
+        av1420Map.put(HDR10_PLUS_10_BIT, AV1ProfileMain10HDR10Plus);
+
+        // DynamicRange encodings to VP9 profile for YUV 4:2:0 chroma subsampling
+        Map<DynamicRange, Integer> vp9420Map = new HashMap<>();
+        vp9420Map.put(SDR, VP9Profile0);
+        vp9420Map.put(HLG_10_BIT, VP9Profile2);
+        vp9420Map.put(HDR10_10_BIT, VP9Profile2HDR);
+        vp9420Map.put(HDR10_PLUS_10_BIT, VP9Profile2HDR10Plus);
+
+        // Dolby vision encodings to dolby vision profiles
+        Map<DynamicRange, Integer> dvMap = new HashMap<>();
+        // Taken from the (now deprecated) Dolby Vision Profile Specification 1.3.3
+        // DV Profile 8 (10-bit HEVC)
+        dvMap.put(DOLBY_VISION_10_BIT, DolbyVisionProfileDvheSt);
+        // DV Profile 9 (8-bit AVC)
+        dvMap.put(DOLBY_VISION_8_BIT, DolbyVisionProfileDvavSe);
+
+        // Combine all mime type maps
+        MIME_TO_DEFAULT_PROFILE_LEVEL_MAP.put(MediaFormat.MIMETYPE_VIDEO_HEVC, hevcMap);
+        MIME_TO_DEFAULT_PROFILE_LEVEL_MAP.put(MediaFormat.MIMETYPE_VIDEO_AV1, av1420Map);
+        MIME_TO_DEFAULT_PROFILE_LEVEL_MAP.put(MediaFormat.MIMETYPE_VIDEO_VP9, vp9420Map);
+        MIME_TO_DEFAULT_PROFILE_LEVEL_MAP.put(MediaFormat.MIMETYPE_VIDEO_DOLBY_VISION, dvMap);
+        //--------------------------------------------------------------------------------------//
     }
 
     /**
@@ -126,4 +190,26 @@
         }
         return bitDepths;
     }
+
+    /**
+     * Returns a codec profile level for a given mime type and dynamic range.
+     *
+     * <p>If the mime type or dynamic range is not supported, returns
+     * {@link EncoderProfilesProxy#CODEC_PROFILE_NONE}.
+     *
+     * <p>Only fully-specified dynamic ranges are supported. All other dynamic ranges will return
+     * {@link EncoderProfilesProxy#CODEC_PROFILE_NONE}.
+     */
+    public static int dynamicRangeToCodecProfileLevelForMime(@NonNull String mimeType,
+            @NonNull DynamicRange dynamicRange) {
+        Map<DynamicRange, Integer> hdrToProfile = MIME_TO_DEFAULT_PROFILE_LEVEL_MAP.get(mimeType);
+        if (hdrToProfile != null) {
+            Integer profile = hdrToProfile.get(dynamicRange);
+            if (profile != null) {
+                return profile;
+            }
+        }
+
+        return EncoderProfilesProxy.CODEC_PROFILE_NONE;
+    }
 }
diff --git a/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/EffectsFragment.kt b/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/EffectsFragment.kt
new file mode 100644
index 0000000..da8ec12
--- /dev/null
+++ b/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/EffectsFragment.kt
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.camera.integration.view
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+
+/**
+ * Fragment for testing effects integration.
+ */
+class EffectsFragment : Fragment() {
+
+    override fun onCreateView(
+        inflater: LayoutInflater,
+        container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        return null
+    }
+}
\ No newline at end of file
diff --git a/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/MainActivity.java b/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/MainActivity.java
index 970b5d8..6e40f89 100644
--- a/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/MainActivity.java
+++ b/camera/integration-tests/viewtestapp/src/main/java/androidx/camera/integration/view/MainActivity.java
@@ -190,6 +190,9 @@
             case R.id.mlkit:
                 mFragmentType = FragmentType.MLKIT;
                 break;
+            case R.id.effects:
+                mFragmentType = FragmentType.EFFECTS;
+                break;
         }
         startFragment();
         return true;
@@ -222,6 +225,9 @@
             case MLKIT:
                 startFragment(R.string.mlkit, new MlKitFragment());
                 break;
+            case EFFECTS:
+                startFragment(R.string.effects, new EffectsFragment());
+                break;
         }
     }
 
@@ -243,6 +249,6 @@
     }
 
     private enum FragmentType {
-        PREVIEW_VIEW, CAMERA_CONTROLLER, TRANSFORM, COMPOSE_UI, MLKIT
+        PREVIEW_VIEW, CAMERA_CONTROLLER, TRANSFORM, COMPOSE_UI, MLKIT, EFFECTS
     }
 }
diff --git a/camera/integration-tests/viewtestapp/src/main/res/menu/actionbar_menu.xml b/camera/integration-tests/viewtestapp/src/main/res/menu/actionbar_menu.xml
index 4a8d889..b850fd4 100644
--- a/camera/integration-tests/viewtestapp/src/main/res/menu/actionbar_menu.xml
+++ b/camera/integration-tests/viewtestapp/src/main/res/menu/actionbar_menu.xml
@@ -33,6 +33,10 @@
         android:title="@string/compose_ui"
         app:showAsAction="never" />
     <item
+        android:id="@+id/effects"
+        android:title="@string/effects"
+        app:showAsAction="never" />
+    <item
         android:id="@+id/mlkit"
         android:title="@string/mlkit"
         app:showAsAction="never" />
diff --git a/camera/integration-tests/viewtestapp/src/main/res/values/donottranslate-strings.xml b/camera/integration-tests/viewtestapp/src/main/res/values/donottranslate-strings.xml
index 1c62930..ede2d56 100644
--- a/camera/integration-tests/viewtestapp/src/main/res/values/donottranslate-strings.xml
+++ b/camera/integration-tests/viewtestapp/src/main/res/values/donottranslate-strings.xml
@@ -16,7 +16,7 @@
 <resources xmlns:tools="http://schemas.android.com/tools">
 
     <string name="app_name">CameraX Views Demo</string>
-
+    <string name="effects">Effects</string>
     <string name="preview">Preview</string>
     <string name="btn_capture">Capture</string>
     <string name="btn_video_record">Record</string>
diff --git a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/WindowInsetsPaddingTest.kt b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/WindowInsetsPaddingTest.kt
index ca4f233..3aba669 100644
--- a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/WindowInsetsPaddingTest.kt
+++ b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/WindowInsetsPaddingTest.kt
@@ -349,11 +349,19 @@
             with(LocalDensity.current) {
                 CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Ltr) {
                     Box(
-                        Modifier.fillMaxSize().padding(5.toDp(), 4.toDp(), 3.toDp(), 2.toDp())
+                        Modifier
+                            .fillMaxSize()
+                            .padding(5.toDp(), 4.toDp(), 3.toDp(), 2.toDp())
                             .consumeWindowInsets(WindowInsets(5, 4, 3, 2))
                     ) {
-                        Box(Modifier.fillMaxSize().systemBarsPadding()) {
-                            Box(Modifier.fillMaxSize().onGloballyPositioned { coordinates = it })
+                        Box(
+                            Modifier
+                                .fillMaxSize()
+                                .systemBarsPadding()) {
+                            Box(
+                                Modifier
+                                    .fillMaxSize()
+                                    .onGloballyPositioned { coordinates = it })
                         }
                     }
                 }
@@ -382,7 +390,10 @@
             CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Ltr) {
                 Box(Modifier.statusBarsPadding()) {
                     Box(Modifier.systemBarsPadding()) {
-                        Box(Modifier.fillMaxSize().onGloballyPositioned { coordinates = it })
+                        Box(
+                            Modifier
+                                .fillMaxSize()
+                                .onGloballyPositioned { coordinates = it })
                     }
                 }
             }
@@ -415,9 +426,12 @@
             CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Ltr) {
                 Box(consumingModifier) {
                     val density = LocalDensity.current
-                    Box(Modifier.fillMaxSize().onConsumedWindowInsetsChanged {
-                        top = it.getTop(density)
-                    })
+                    Box(
+                        Modifier
+                            .fillMaxSize()
+                            .onConsumedWindowInsetsChanged {
+                                top = it.getTop(density)
+                            })
                 }
             }
         }
@@ -517,7 +531,10 @@
     @Test
     fun animateImeInsets() {
         with(Api30Methods(rule)) {
-            val coordinates = setInsetContent { Modifier.systemBarsPadding().imePadding() }
+            val coordinates = setInsetContent {
+                Modifier
+                    .systemBarsPadding()
+                    .imePadding() }
 
             sendInsets(WindowInsetsCompat.Type.systemBars())
 
@@ -568,8 +585,14 @@
 
         setContent {
             val padding = WindowInsets.systemBars.asPaddingValues()
-            Box(Modifier.fillMaxSize().padding(padding)) {
-                Box(Modifier.fillMaxSize().onGloballyPositioned { coordinates = it })
+            Box(
+                Modifier
+                    .fillMaxSize()
+                    .padding(padding)) {
+                Box(
+                    Modifier
+                        .fillMaxSize()
+                        .onGloballyPositioned { coordinates = it })
             }
         }
 
@@ -602,8 +625,15 @@
                     .statusBarsPadding()
                     .onGloballyPositioned { statusBar = it }
             ) {
-                Box(Modifier.navigationBarsPadding().onGloballyPositioned { navigationBar = it }) {
-                    Box(Modifier.imePadding().fillMaxSize().onGloballyPositioned { ime = it })
+                Box(
+                    Modifier
+                        .navigationBarsPadding()
+                        .onGloballyPositioned { navigationBar = it }) {
+                    Box(
+                        Modifier
+                            .imePadding()
+                            .fillMaxSize()
+                            .onGloballyPositioned { ime = it })
                 }
             }
         }
@@ -692,10 +722,11 @@
                     .windowInsetsPadding(WindowInsets(top = 10))
                     .onGloballyPositioned { outer = it }
             ) {
-                Box(Modifier
-                    .consumeWindowInsets(WindowInsets(top = 10))
-                    .windowInsetsPadding(WindowInsets(top = 20))
-                    .onGloballyPositioned { middle = it }
+                Box(
+                    Modifier
+                        .consumeWindowInsets(WindowInsets(top = 10))
+                        .windowInsetsPadding(WindowInsets(top = 20))
+                        .onGloballyPositioned { middle = it }
                 ) {
                     Box(
                         Modifier
@@ -773,7 +804,10 @@
                 ComposeView(context).also {
                     it.consumeWindowInsets = false
                     it.setContent {
-                        Box(Modifier.fillMaxSize().statusBarsPadding())
+                        Box(
+                            Modifier
+                                .fillMaxSize()
+                                .statusBarsPadding())
                     }
                 }
             })
@@ -812,6 +846,36 @@
         assertThat(bottomInset).isEqualTo(0)
     }
 
+    @OptIn(ExperimentalLayoutApi::class)
+    @Test
+    fun reuseModifier() {
+        var consumed1 = WindowInsets(0, 0, 0, 0)
+        var consumed2 = WindowInsets(0, 0, 0, 0)
+        setContent {
+            with(LocalDensity.current) {
+                val modifier = Modifier.consumeWindowInsets(PaddingValues(10.toDp()))
+                Box(
+                    modifier
+                        .fillMaxSize()
+                        .onConsumedWindowInsetsChanged { consumed1 = it }
+                ) {
+                    Box(
+                        modifier
+                            .fillMaxSize()
+                            .onConsumedWindowInsetsChanged { consumed2 = it }
+                    )
+                }
+            }
+        }
+
+        rule.waitForIdle()
+        sendInsets(WindowInsetsCompat.Type.statusBars(), AndroidXInsets.of(0, 30, 0, 0))
+        rule.runOnIdle {
+            assertThat(consumed1.getTop(rule.density)).isEqualTo(10)
+            assertThat(consumed2.getTop(rule.density)).isEqualTo(20)
+        }
+    }
+
     private fun sendInsets(
         type: Int,
         sentInsets: AndroidXInsets = AndroidXInsets.of(10, 11, 12, 13)
@@ -838,10 +902,17 @@
         lateinit var coordinates: LayoutCoordinates
 
         setContent {
-            Box(Modifier.fillMaxSize().background(Color.Blue).then(insetsModifier())) {
-                Box(Modifier.fillMaxSize().onGloballyPositioned {
-                    coordinates = it
-                })
+            Box(
+                Modifier
+                    .fillMaxSize()
+                    .background(Color.Blue)
+                    .then(insetsModifier())) {
+                Box(
+                    Modifier
+                        .fillMaxSize()
+                        .onGloballyPositioned {
+                            coordinates = it
+                        })
             }
         }
 
diff --git a/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/WindowInsetsPadding.kt b/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/WindowInsetsPadding.kt
index f8e7312..5f64e2d 100644
--- a/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/WindowInsetsPadding.kt
+++ b/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/WindowInsetsPadding.kt
@@ -19,8 +19,10 @@
 import androidx.compose.runtime.Stable
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.composed
 import androidx.compose.ui.layout.LayoutModifier
 import androidx.compose.ui.layout.Measurable
 import androidx.compose.ui.layout.MeasureResult
@@ -30,8 +32,6 @@
 import androidx.compose.ui.modifier.ModifierLocalReadScope
 import androidx.compose.ui.modifier.ProvidableModifierLocal
 import androidx.compose.ui.modifier.modifierLocalOf
-import androidx.compose.ui.platform.InspectorInfo
-import androidx.compose.ui.platform.InspectorValueInfo
 import androidx.compose.ui.platform.debugInspectorInfo
 import androidx.compose.ui.unit.Constraints
 import androidx.compose.ui.unit.constrainHeight
@@ -53,12 +53,14 @@
  * @see WindowInsets
  */
 @Stable
-fun Modifier.windowInsetsPadding(insets: WindowInsets): Modifier = this.then(
-    InsetsPaddingModifier(insets, debugInspectorInfo {
+fun Modifier.windowInsetsPadding(insets: WindowInsets): Modifier = composed(
+    debugInspectorInfo {
         name = "windowInsetsPadding"
         properties["insets"] = insets
-    })
-)
+    }
+) {
+    remember(insets) { InsetsPaddingModifier(insets) }
+}
 
 /**
  * Consume insets that haven't been consumed yet by other insets Modifiers similar to
@@ -71,12 +73,15 @@
  * @sample androidx.compose.foundation.layout.samples.consumedInsetsSample
  */
 @Stable
-fun Modifier.consumeWindowInsets(insets: WindowInsets): Modifier = this.then(
-    UnionInsetsConsumingModifier(insets, debugInspectorInfo {
+fun Modifier.consumeWindowInsets(insets: WindowInsets): Modifier = composed(
+    debugInspectorInfo {
         name = "consumeWindowInsets"
         properties["insets"] = insets
-    })
-)
+    }
+) {
+    remember(insets) { UnionInsetsConsumingModifier(insets) }
+}
+
 @ExperimentalLayoutApi
 @Deprecated("Use consumeWindowInsets", ReplaceWith("this.consumeWindowInsets(insets)"))
 @Stable
@@ -98,12 +103,16 @@
  */
 @ExperimentalLayoutApi
 @Stable
-fun Modifier.consumeWindowInsets(paddingValues: PaddingValues): Modifier = this.then(
-    PaddingValuesConsumingModifier(paddingValues, debugInspectorInfo {
+fun Modifier.consumeWindowInsets(paddingValues: PaddingValues): Modifier = composed(
+    debugInspectorInfo {
         name = "consumeWindowInsets"
         properties["paddingValues"] = paddingValues
-    })
-)
+    }
+) {
+    remember(paddingValues) {
+        PaddingValuesConsumingModifier(paddingValues)
+    }
+}
 
 @ExperimentalLayoutApi
 @Deprecated("Use consumeWindowInsets", ReplaceWith("this.consumeWindowInsets(paddingValues)"))
@@ -120,15 +129,16 @@
 @Stable
 fun Modifier.onConsumedWindowInsetsChanged(
     block: (consumedWindowInsets: WindowInsets) -> Unit
-) = this.then(
-    ConsumedInsetsModifier(
-        block,
-        debugInspectorInfo {
-            name = "onConsumedWindowInsetsChanged"
-            properties["block"] = block
-        }
-    )
-)
+) = composed(
+    debugInspectorInfo {
+        name = "onConsumedWindowInsetsChanged"
+        properties["block"] = block
+    }
+) {
+    remember(block) {
+        ConsumedInsetsModifier(block)
+    }
+}
 
 @ExperimentalLayoutApi
 @Deprecated(
@@ -145,12 +155,8 @@
 }
 
 internal class InsetsPaddingModifier(
-    private val insets: WindowInsets,
-    inspectorInfo: InspectorInfo.() -> Unit = debugInspectorInfo {
-        name = "InsetsPaddingModifier"
-        properties["insets"] = insets
-    }
-) : InspectorValueInfo(inspectorInfo), LayoutModifier,
+    private val insets: WindowInsets
+) : LayoutModifier,
     ModifierLocalConsumer, ModifierLocalProvider<WindowInsets> {
     private var unconsumedInsets: WindowInsets by mutableStateOf(insets)
     private var consumedInsets: WindowInsets by mutableStateOf(insets)
@@ -209,9 +215,8 @@
  * Base class for arbitrary insets consumption modifiers.
  */
 @Stable
-private sealed class InsetsConsumingModifier(
-    inspectorInfo: InspectorInfo.() -> Unit
-) : InspectorValueInfo(inspectorInfo), ModifierLocalConsumer, ModifierLocalProvider<WindowInsets> {
+private sealed class InsetsConsumingModifier : ModifierLocalConsumer,
+    ModifierLocalProvider<WindowInsets> {
     private var consumedInsets: WindowInsets by mutableStateOf(WindowInsets(0, 0, 0, 0))
 
     abstract fun calculateInsets(modifierLocalInsets: WindowInsets): WindowInsets
@@ -232,9 +237,8 @@
 
 @Stable
 private class PaddingValuesConsumingModifier(
-    private val paddingValues: PaddingValues,
-    inspectorInfo: InspectorInfo.() -> Unit
-) : InsetsConsumingModifier(inspectorInfo) {
+    private val paddingValues: PaddingValues
+) : InsetsConsumingModifier() {
     override fun calculateInsets(modifierLocalInsets: WindowInsets): WindowInsets =
         paddingValues.asInsets().add(modifierLocalInsets)
 
@@ -254,9 +258,8 @@
 
 @Stable
 private class ConsumedInsetsModifier(
-    private val block: (WindowInsets) -> Unit,
-    inspectorInfo: InspectorInfo.() -> Unit
-) : InspectorValueInfo(inspectorInfo), ModifierLocalConsumer {
+    private val block: (WindowInsets) -> Unit
+) : ModifierLocalConsumer {
 
     private var oldWindowInsets: WindowInsets? = null
 
@@ -284,9 +287,8 @@
 
 @Stable
 private class UnionInsetsConsumingModifier(
-    private val insets: WindowInsets,
-    inspectorInfo: InspectorInfo.() -> Unit
-) : InsetsConsumingModifier(inspectorInfo) {
+    private val insets: WindowInsets
+) : InsetsConsumingModifier() {
     override fun calculateInsets(modifierLocalInsets: WindowInsets): WindowInsets =
         insets.union(modifierLocalInsets)
 
@@ -302,4 +304,4 @@
     }
 
     override fun hashCode(): Int = insets.hashCode()
-}
\ No newline at end of file
+}
diff --git a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/AnchoredDraggable.kt b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/AnchoredDraggable.kt
index c93036a..3612967 100644
--- a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/AnchoredDraggable.kt
+++ b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/AnchoredDraggable.kt
@@ -183,9 +183,7 @@
      * Strongly consider using [requireOffset] which will throw if the offset is read before it is
      * initialized. This helps catch issues early in your workflow.
      */
-    // Todo: Use primitive state when b/281205384 is fixed
-    @Suppress("AutoboxingStateCreation")
-    var offset: Float by mutableStateOf(Float.NaN)
+    var offset: Float by mutableFloatStateOf(Float.NaN)
         private set
 
     /**
diff --git a/compose/runtime/runtime/src/androidMain/kotlin/androidx/compose/runtime/internal/FloatingPointEquality.android.kt b/compose/runtime/runtime/src/androidMain/kotlin/androidx/compose/runtime/internal/FloatingPointEquality.android.kt
new file mode 100644
index 0000000..61845d3
--- /dev/null
+++ b/compose/runtime/runtime/src/androidMain/kotlin/androidx/compose/runtime/internal/FloatingPointEquality.android.kt
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.runtime.internal
+
+import android.os.Build
+
+/**
+ * Returns `true` if the receiver is an expression of [Float.NaN]. There is not one single encoding
+ * of `NaN`. A float encodes NaN if its exponent bits (the 8 most significant bits which follow the
+ * single most significant bit in the float, which encodes the sign) are all set to `1`, and the
+ * significand bits (the 23 least significant bits) are not all zeros.
+ */
+internal val Float.isNan: Boolean
+    get() = (this.toRawBits() and 0x7FFFFFFF) > 0x7F800000
+
+/**
+ * Returns `true` if the receiver is an expression of [Double.NaN]. There is not one single encoding
+ * of `NaN`. A double encodes NaN if its exponent bits (the 11 most significant bits which follow
+ * the single most significant bit in the double, which encodes the sign) are all set to `1`, and
+ * the significand bits (the 53 least significant bits) are not all zeros.
+ */
+internal val Double.isNan: Boolean
+    get() = (this.toRawBits() and 0x7FFFFFFFFFFFFFFF) > 0x7FF0000000000000
+
+@Suppress("NOTHING_TO_INLINE")
+internal actual inline fun Float.equalsWithNanFix(other: Float): Boolean =
+    if (Build.VERSION.SDK_INT >= 23) {
+        this == other
+    } else {
+        !this.isNan && !other.isNan && this == other
+    }
+
+@Suppress("NOTHING_TO_INLINE")
+internal actual inline fun Double.equalsWithNanFix(other: Double): Boolean =
+    if (Build.VERSION.SDK_INT >= 23) {
+        this == other
+    } else {
+        !this.isNan && !other.isNan && this == other
+    }
\ No newline at end of file
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SnapshotDoubleState.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SnapshotDoubleState.kt
index 8521c5a..3868163 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SnapshotDoubleState.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SnapshotDoubleState.kt
@@ -19,6 +19,7 @@
 package androidx.compose.runtime
 
 import androidx.compose.runtime.internal.JvmDefaultWithCompatibility
+import androidx.compose.runtime.internal.equalsWithNanFix
 import androidx.compose.runtime.snapshots.AutoboxingStateValueProperty
 import androidx.compose.runtime.snapshots.Snapshot
 import androidx.compose.runtime.snapshots.SnapshotMutableState
@@ -136,7 +137,7 @@
     override var doubleValue: Double
         get() = next.readable(this).value
         set(value) = next.withCurrent {
-            if (it.value != value) {
+            if (!it.value.equalsWithNanFix(value)) {
                 next.overwritable(this, it) { this.value = value }
             }
         }
@@ -161,7 +162,7 @@
     ): StateRecord? {
         val currentRecord = current as DoubleStateStateRecord
         val appliedRecord = applied as DoubleStateStateRecord
-        return if (currentRecord.value == appliedRecord.value) {
+        return if (currentRecord.value.equalsWithNanFix(appliedRecord.value)) {
             current
         } else {
             null
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SnapshotFloatState.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SnapshotFloatState.kt
index fa6bfe5..e6edf34 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SnapshotFloatState.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/SnapshotFloatState.kt
@@ -18,6 +18,7 @@
 @file:JvmMultifileClass
 package androidx.compose.runtime
 
+import androidx.compose.runtime.internal.equalsWithNanFix
 import androidx.compose.runtime.snapshots.AutoboxingStateValueProperty
 import androidx.compose.runtime.snapshots.Snapshot
 import androidx.compose.runtime.snapshots.SnapshotMutableState
@@ -132,7 +133,7 @@
     override var floatValue: Float
         get() = next.readable(this).value
         set(value) = next.withCurrent {
-            if (it.value != value) {
+            if (!it.value.equalsWithNanFix(value)) {
                 next.overwritable(this, it) { this.value = value }
             }
         }
@@ -157,7 +158,7 @@
     ): StateRecord? {
         val currentRecord = current as FloatStateStateRecord
         val appliedRecord = applied as FloatStateStateRecord
-        return if (currentRecord.value == appliedRecord.value) {
+        return if (currentRecord.value.equalsWithNanFix(appliedRecord.value)) {
             current
         } else {
             null
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/internal/FloatingPointEquality.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/internal/FloatingPointEquality.kt
new file mode 100644
index 0000000..0404016
--- /dev/null
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/internal/FloatingPointEquality.kt
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.runtime.internal
+
+/**
+ * A backwards-compatible comparison check which returns true if the receiver and the [other]
+ * operands are equal to each other. Equality as specified in the IEEE-754 standard. If at least
+ * one operand is `NaN`, the result will always be `false`. The sign bit is ignored for operands
+ * that are zero (i.e. +0 and -0 will always be equal to one another). All other comparisons check
+ * the logical value of the float.
+ *
+ * This implementation is needed for proper behavior on x86 builds of Android SDK levels 21 and 22,
+ * which contain a bug where [Float.NaN] is equal to every other [Float] value.
+ *
+ * See [issue 281205384](b/281205384).
+ */
+internal expect inline fun Float.equalsWithNanFix(other: Float): Boolean
+
+/**
+ * A backwards-compatible comparison check which returns true if the receiver and the [other]
+ * operands are equal to each other. Equality as specified in the IEEE-754 standard. If at least
+ * one operand is `NaN`, the result will always be `false`. The sign bit is ignored for operands
+ * that are zero (i.e. +0 and -0 will always be equal to one another). All other comparisons check
+ * the logical value of the double.
+ *
+ * This implementation is needed for proper behavior on x86 builds of Android SDK levels 21 and 22,
+ * which contain a bug where [Double.NaN] is equal to every other [Double] value.
+ *
+ * See [issue 281205384](b/281205384).
+ */
+internal expect inline fun Double.equalsWithNanFix(other: Double): Boolean
\ No newline at end of file
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/snapshots/Snapshot.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/snapshots/Snapshot.kt
index 1df196c..f05ec76 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/snapshots/Snapshot.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/snapshots/Snapshot.kt
@@ -1833,7 +1833,20 @@
     }
 
 private fun validateOpen(snapshot: Snapshot) {
-    if (!openSnapshots.get(snapshot.id)) error("Snapshot is not open")
+    val openSnapshots = openSnapshots
+    if (!openSnapshots.get(snapshot.id)) {
+        error(
+            "Snapshot is not open: id=${
+                snapshot.id
+            }, disposed=${
+                snapshot.disposed
+            }, applied=${
+                (snapshot as? MutableSnapshot)?.applied ?: "read-only"
+            }, lowestPin=${
+                sync { pinningTable.lowestOrDefault(-1) }
+            }"
+        )
+    }
 }
 
 /**
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/internal/FloatingPointEqualityTest.kt b/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/internal/FloatingPointEqualityTest.kt
new file mode 100644
index 0000000..978dd87
--- /dev/null
+++ b/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/internal/FloatingPointEqualityTest.kt
@@ -0,0 +1,178 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.runtime.internal
+
+import kotlin.test.Test
+import kotlin.test.assertFalse
+import kotlin.test.assertTrue
+
+class FloatingPointEqualityTest {
+
+    @Test
+    fun testFloat_arbitraryValueEquality() {
+        assertEqualsWithNanFix(12345f, 12345f)
+        assertEqualsWithNanFix(-98.076f, -98.076f)
+        assertNotEqualsWithNanFix(12.34f, 12.30f)
+    }
+
+    @Test
+    fun testFloat_inequalityFromLossOfPrecision() {
+        assertNotEqualsWithNanFix(0.5f, 0.01f * 5)
+    }
+
+    @Test
+    fun testFloat_nanConstant_doesNotEqualItself() {
+        assertNotEqualsWithNanFix(Float.NaN, Float.NaN)
+    }
+
+    @Test
+    fun testFloat_nonCanonicalNans_areNotEqual() {
+        val unconventionalNan = Float.fromBits(0x7FC0ABCD)
+        assertNotEqualsWithNanFix(unconventionalNan, unconventionalNan)
+    }
+
+    @Test
+    fun testFloat_negativeZero_doesEqualsPositiveZero() {
+        assertEqualsWithNanFix(Float.NegativeZero, 0f)
+    }
+
+    @Test
+    fun testFloat_negativeZero_equalsNegativeZero() {
+        assertEqualsWithNanFix(Float.NegativeZero, Float.NegativeZero)
+    }
+
+    @Test
+    fun testFloat_positiveZero_equalsPositiveZero() {
+        assertEqualsWithNanFix(0f, 0f)
+    }
+
+    @Test
+    fun testFloat_positiveInfinity_EqualsPositiveInfinity() {
+        assertEqualsWithNanFix(Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY)
+    }
+
+    @Test
+    fun testFloat_negativeInfinity_doesNotEqualPositiveInfinity() {
+        assertNotEqualsWithNanFix(Float.NEGATIVE_INFINITY, Float.POSITIVE_INFINITY)
+    }
+
+    @Test
+    fun testFloat_negativeInfinity_equalsNegativeInfinity() {
+        assertEqualsWithNanFix(Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY)
+    }
+
+    @Test
+    fun testDouble_arbitraryValueEquality() {
+        assertEqualsWithNanFix(12345.0, 12345.0)
+        assertEqualsWithNanFix(-98.076, -98.076)
+        assertNotEqualsWithNanFix(12.34, 12.30)
+    }
+
+    @Test
+    fun testDouble_inequalityFromLossOfPrecision() {
+        assertNotEqualsWithNanFix(0.5, 0.01 * 5)
+    }
+
+    @Test
+    fun testDouble_nanConstant_doesNotEqualItself() {
+        assertNotEqualsWithNanFix(Double.NaN, Double.NaN)
+    }
+
+    @Test
+    fun testDouble_nonCanonicalNans_areNotEqual() {
+        val unconventionalNan = Double.fromBits(0x7FF0ABCDEF123456)
+        assertNotEqualsWithNanFix(unconventionalNan, unconventionalNan)
+    }
+
+    @Test
+    fun testDouble_negativeZero_doesEqualsPositiveZero() {
+        assertEqualsWithNanFix(Double.NegativeZero, 0f)
+    }
+
+    @Test
+    fun testDouble_negativeZero_equalsNegativeZero() {
+        assertEqualsWithNanFix(Double.NegativeZero, Double.NegativeZero)
+    }
+
+    @Test
+    fun testDouble_positiveZero_equalsPositiveZero() {
+        assertEqualsWithNanFix(0f, 0f)
+    }
+
+    @Test
+    fun testDouble_positiveInfinity_EqualsPositiveInfinity() {
+        assertEqualsWithNanFix(Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY)
+    }
+
+    @Test
+    fun testDouble_negativeInfinity_doesNotEqualPositiveInfinity() {
+        assertNotEqualsWithNanFix(Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY)
+    }
+
+    @Test
+    fun testDouble_negativeInfinity_equalsNegativeInfinity() {
+        assertEqualsWithNanFix(Double.NEGATIVE_INFINITY, Double.NEGATIVE_INFINITY)
+    }
+
+    private fun assertNotEqualsWithNanFix(
+        first: Float,
+        second: Float
+    ) = assertFalse(
+        message = "$first (${first.bitString}) == $second (${second.bitString}) " +
+            "returned true, expected false",
+        actual = first.equalsWithNanFix(second)
+    )
+
+    private fun assertEqualsWithNanFix(
+        first: Float,
+        second: Float
+    ) = assertTrue(
+        message = "$first (${first.bitString}) == $second (${second.bitString}) " +
+            "returned false, expected true",
+        actual = first.equalsWithNanFix(second)
+    )
+
+    private fun assertNotEqualsWithNanFix(
+        first: Double,
+        second: Double
+    ) = assertFalse(
+        message = "$first (${first.bitString}) == $second (${second.bitString}) " +
+            "returned true, expected false",
+        actual = first.equalsWithNanFix(second)
+    )
+
+    private fun assertEqualsWithNanFix(
+        first: Double,
+        second: Double
+    ) = assertTrue(
+        message = "$first (${first.bitString}) == $second (${second.bitString}) " +
+            "returned false, expected true",
+        actual = first.equalsWithNanFix(second)
+    )
+
+    private val Float.bitString
+        get() = "0x" + toBits().toUInt().toString(16).padStart(length = 8, '0')
+
+    private val Double.bitString
+        get() = "0x" + toBits().toULong().toString(16).padStart(length = 16, '0')
+
+    private val Float.Companion.NegativeZero: Float
+        get() = Float.fromBits(0b1 shl 31)
+
+    private val Double.Companion.NegativeZero: Float
+        get() = Float.fromBits(0b1 shl 63)
+}
\ No newline at end of file
diff --git a/compose/runtime/runtime/src/desktopMain/kotlin/androidx/compose/runtime/internal/FloatingPointEquality.desktop.kt b/compose/runtime/runtime/src/desktopMain/kotlin/androidx/compose/runtime/internal/FloatingPointEquality.desktop.kt
new file mode 100644
index 0000000..be9c52f
--- /dev/null
+++ b/compose/runtime/runtime/src/desktopMain/kotlin/androidx/compose/runtime/internal/FloatingPointEquality.desktop.kt
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.runtime.internal
+
+@Suppress("NOTHING_TO_INLINE")
+internal actual inline fun Float.equalsWithNanFix(other: Float): Boolean = (this == other)
+
+@Suppress("NOTHING_TO_INLINE")
+internal actual inline fun Double.equalsWithNanFix(other: Double): Boolean = (this == other)
\ No newline at end of file
diff --git a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotTests.kt b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotTests.kt
index 3ec3fb7..00676b9 100644
--- a/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotTests.kt
+++ b/compose/runtime/runtime/src/nonEmulatorCommonTest/kotlin/androidx/compose/runtime/snapshots/SnapshotTests.kt
@@ -913,6 +913,52 @@
     }
 
     @Test
+    fun cannotApplyASnapshotTwice() {
+        var state by mutableStateOf("initial")
+        val snapshot = takeMutableSnapshot()
+        try {
+            snapshot.enter { state = "mutated" }
+            snapshot.apply().check()
+            snapshot.apply().check()
+            fail("An exception should have been thrown by second apply()")
+        } catch (ise: IllegalStateException) {
+            // Expected exception
+            assertTrue(
+                ise.message?.let {
+                    it.contains("Snapshot is not open") &&
+                        it.contains("applied=")
+                } == true,
+                "Incorrect message: ${ise.message}"
+            )
+        } finally {
+            snapshot.dispose()
+        }
+    }
+
+    @Test
+    fun cannotApplyAfterADispose() {
+        var state by mutableStateOf("initial")
+        val snapshot = takeMutableSnapshot()
+        try {
+            snapshot.enter { state = "mutated" }
+            snapshot.dispose()
+            snapshot.apply().check()
+            fail("An exception should have been thrown by the apply()")
+        } catch (ise: IllegalStateException) {
+            // Expected exception
+            assertTrue(
+                ise.message?.let {
+                    it.contains("Snapshot is not open") &&
+                        it.contains("applied=")
+                } == true,
+                "Incorrect message: ${ise.message}"
+            )
+        } finally {
+            snapshot.dispose()
+        }
+    }
+
+    @Test
     fun testRecordsAreReusedCorrectly() {
         val value = mutableStateOf<Int>(0)
         Snapshot.withMutableSnapshot { value.value++ }
diff --git a/compose/ui/ui-tooling-preview/lint-baseline.xml b/compose/ui/ui-tooling-preview/lint-baseline.xml
deleted file mode 100644
index 5a8706a..0000000
--- a/compose/ui/ui-tooling-preview/lint-baseline.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<issues format="6" by="lint 8.1.0-alpha07" type="baseline" client="gradle" dependencies="false" name="AGP (8.0.0-beta03)" variant="all" version="8.1.0-alpha07">
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="annotation class UiMode"
-        errorLine2="                 ~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/tooling/preview/UiMode.kt"/>
-    </issue>
-
-</issues>
diff --git a/compose/ui/ui-tooling-preview/src/androidMain/kotlin/androidx/compose/ui/tooling/preview/UiMode.kt b/compose/ui/ui-tooling-preview/src/androidMain/kotlin/androidx/compose/ui/tooling/preview/UiMode.kt
index 13e53cb..5ea037f 100644
--- a/compose/ui/ui-tooling-preview/src/androidMain/kotlin/androidx/compose/ui/tooling/preview/UiMode.kt
+++ b/compose/ui/ui-tooling-preview/src/androidMain/kotlin/androidx/compose/ui/tooling/preview/UiMode.kt
@@ -31,11 +31,12 @@
 import android.content.res.Configuration.UI_MODE_TYPE_VR_HEADSET
 import android.content.res.Configuration.UI_MODE_TYPE_WATCH
 import androidx.annotation.IntDef
+import androidx.annotation.RestrictTo
 
 /**
  * Annotation of setting uiMode in [Preview].
- * @hide
  */
+@RestrictTo(RestrictTo.Scope.LIBRARY)
 @SuppressLint("UniqueConstants") // UI_MODE_NIGHT_UNDEFINED == UI_MODE_TYPE_UNDEFINED
 @Retention(AnnotationRetention.SOURCE)
 @IntDef(
diff --git a/compose/ui/ui/api/1.5.0-beta01.txt b/compose/ui/ui/api/1.5.0-beta01.txt
index 434d4ce..ad58ecf 100644
--- a/compose/ui/ui/api/1.5.0-beta01.txt
+++ b/compose/ui/ui/api/1.5.0-beta01.txt
@@ -2405,9 +2405,6 @@
     method public boolean retainAll(kotlin.jvm.functions.Function1<java.lang.Object,java.lang.Boolean> predicate);
   }
 
-  public final class TestModifierUpdaterKt {
-  }
-
   public final class VerticalAlignmentLine extends androidx.compose.ui.layout.AlignmentLine {
     ctor public VerticalAlignmentLine(kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Integer,java.lang.Integer> merger);
   }
diff --git a/compose/ui/ui/api/current.ignore b/compose/ui/ui/api/current.ignore
index 7c34c25..af7782e 100644
--- a/compose/ui/ui/api/current.ignore
+++ b/compose/ui/ui/api/current.ignore
@@ -33,5 +33,7 @@
     Attempted to change parameter from @Nullable to @NonNull: incompatible change for parameter value in androidx.compose.ui.semantics.SemanticsPropertyReceiver.set(androidx.compose.ui.semantics.SemanticsPropertyKey<T> key, T value)
 
 
+RemovedClass: androidx.compose.ui.layout.TestModifierUpdaterKt:
+    Removed class androidx.compose.ui.layout.TestModifierUpdaterKt
 RemovedClass: androidx.compose.ui.platform.AndroidComposeView_androidKt:
     Removed class androidx.compose.ui.platform.AndroidComposeView_androidKt
diff --git a/compose/ui/ui/api/current.txt b/compose/ui/ui/api/current.txt
index 434d4ce..ad58ecf 100644
--- a/compose/ui/ui/api/current.txt
+++ b/compose/ui/ui/api/current.txt
@@ -2405,9 +2405,6 @@
     method public boolean retainAll(kotlin.jvm.functions.Function1<java.lang.Object,java.lang.Boolean> predicate);
   }
 
-  public final class TestModifierUpdaterKt {
-  }
-
   public final class VerticalAlignmentLine extends androidx.compose.ui.layout.AlignmentLine {
     ctor public VerticalAlignmentLine(kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Integer,java.lang.Integer> merger);
   }
diff --git a/compose/ui/ui/api/restricted_1.5.0-beta01.txt b/compose/ui/ui/api/restricted_1.5.0-beta01.txt
index f9c6abc..d24ac94 100644
--- a/compose/ui/ui/api/restricted_1.5.0-beta01.txt
+++ b/compose/ui/ui/api/restricted_1.5.0-beta01.txt
@@ -2412,9 +2412,6 @@
     method public boolean retainAll(kotlin.jvm.functions.Function1<java.lang.Object,java.lang.Boolean> predicate);
   }
 
-  public final class TestModifierUpdaterKt {
-  }
-
   public final class VerticalAlignmentLine extends androidx.compose.ui.layout.AlignmentLine {
     ctor public VerticalAlignmentLine(kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Integer,java.lang.Integer> merger);
   }
diff --git a/compose/ui/ui/api/restricted_current.ignore b/compose/ui/ui/api/restricted_current.ignore
index 7c34c25..af7782e 100644
--- a/compose/ui/ui/api/restricted_current.ignore
+++ b/compose/ui/ui/api/restricted_current.ignore
@@ -33,5 +33,7 @@
     Attempted to change parameter from @Nullable to @NonNull: incompatible change for parameter value in androidx.compose.ui.semantics.SemanticsPropertyReceiver.set(androidx.compose.ui.semantics.SemanticsPropertyKey<T> key, T value)
 
 
+RemovedClass: androidx.compose.ui.layout.TestModifierUpdaterKt:
+    Removed class androidx.compose.ui.layout.TestModifierUpdaterKt
 RemovedClass: androidx.compose.ui.platform.AndroidComposeView_androidKt:
     Removed class androidx.compose.ui.platform.AndroidComposeView_androidKt
diff --git a/compose/ui/ui/api/restricted_current.txt b/compose/ui/ui/api/restricted_current.txt
index f9c6abc..d24ac94 100644
--- a/compose/ui/ui/api/restricted_current.txt
+++ b/compose/ui/ui/api/restricted_current.txt
@@ -2412,9 +2412,6 @@
     method public boolean retainAll(kotlin.jvm.functions.Function1<java.lang.Object,java.lang.Boolean> predicate);
   }
 
-  public final class TestModifierUpdaterKt {
-  }
-
   public final class VerticalAlignmentLine extends androidx.compose.ui.layout.AlignmentLine {
     ctor public VerticalAlignmentLine(kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Integer,java.lang.Integer> merger);
   }
diff --git a/compose/ui/ui/build.gradle b/compose/ui/ui/build.gradle
index caff544..501305c 100644
--- a/compose/ui/ui/build.gradle
+++ b/compose/ui/ui/build.gradle
@@ -37,7 +37,7 @@
             dependencies {
                 implementation(libs.kotlinStdlibCommon)
                 implementation(libs.kotlinCoroutinesCore)
-
+                api("androidx.annotation:annotation:1.6.0")
                 // when updating the runtime version please also update the runtime-saveable version
                 implementation(project(":compose:runtime:runtime"))
                 api(project(":compose:runtime:runtime-saveable"))
@@ -79,7 +79,6 @@
                 // This has stub APIs for access to legacy Android APIs, so we don't want
                 // any dependency on this module.
                 compileOnly(project(":compose:ui:ui-android-stubs"))
-                api("androidx.annotation:annotation:1.5.0")
                 implementation("androidx.autofill:autofill:1.0.0")
                 implementation(libs.kotlinCoroutinesAndroid)
 
diff --git a/compose/ui/ui/lint-baseline.xml b/compose/ui/ui/lint-baseline.xml
index 8aebb3a..4d3c0de 100644
--- a/compose/ui/ui/lint-baseline.xml
+++ b/compose/ui/ui/lint-baseline.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<issues format="6" by="lint 8.1.0-alpha07" type="baseline" client="gradle" dependencies="false" name="AGP (8.0.0-beta03)" variant="all" version="8.1.0-alpha07">
+<issues format="6" by="lint 8.1.0-beta02" type="baseline" client="gradle" dependencies="false" name="AGP (8.1.0-beta02)" variant="all" version="8.1.0-beta02">
 
     <issue
         id="BanHideAnnotation"
@@ -11,42 +11,6 @@
     </issue>
 
     <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="class TestModifierUpdater internal constructor(private val node: LayoutNode) {"
-        errorLine2="      ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/commonMain/kotlin/androidx/compose/ui/layout/TestModifierUpdater.kt"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="fun TestModifierUpdaterLayout(onAttached: (TestModifierUpdater) -> Unit) {"
-        errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/commonMain/kotlin/androidx/compose/ui/layout/TestModifierUpdater.kt"/>
-    </issue>
-
-    <issue
-        id="BanInlineOptIn"
-        message="Inline functions cannot opt into experimental APIs."
-        errorLine1="    internal inline fun fetchCustomEnter("
-        errorLine2="                        ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/commonMain/kotlin/androidx/compose/ui/focus/FocusTargetModifierNode.kt"/>
-    </issue>
-
-    <issue
-        id="BanInlineOptIn"
-        message="Inline functions cannot opt into experimental APIs."
-        errorLine1="    internal inline fun fetchCustomExit("
-        errorLine2="                        ~~~~~~~~~~~~~~~">
-        <location
-            file="src/commonMain/kotlin/androidx/compose/ui/focus/FocusTargetModifierNode.kt"/>
-    </issue>
-
-    <issue
         id="BanThreadSleep"
         message="Uses Thread.sleep()"
         errorLine1="                Thread.sleep(sleepTime)"
@@ -67,2598 +31,6 @@
     <issue
         id="ExperimentalPropertyAnnotation"
         message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/androidMain/kotlin/androidx/compose/ui/input/key/Key.android.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
-        errorLine1="        @ExperimentalComposeUiApi"
-        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/commonMain/kotlin/androidx/compose/ui/input/nestedscroll/NestedScrollModifier.kt"/>
-    </issue>
-
-    <issue
-        id="ExperimentalPropertyAnnotation"
-        message="This property does not have all required annotations to correctly mark it as experimental."
         errorLine1="    @ExperimentalComposeUiApi"
         errorLine2="    ~~~~~~~~~~~~~~~~~~~~~~~~~">
         <location
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/OnGloballyPositionedTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/OnGloballyPositionedTest.kt
index d0c65cd..e49bbc4a 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/OnGloballyPositionedTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/layout/OnGloballyPositionedTest.kt
@@ -16,12 +16,15 @@
 
 package androidx.compose.ui.layout
 
+import android.os.SystemClock
+import android.view.MotionEvent
 import android.view.View
 import android.view.ViewGroup
 import android.widget.LinearLayout
 import android.widget.ScrollView
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.offset
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.requiredSize
 import androidx.compose.foundation.layout.size
@@ -53,6 +56,7 @@
 import androidx.compose.ui.test.junit4.createAndroidComposeRule
 import androidx.compose.ui.test.onRoot
 import androidx.compose.ui.unit.Constraints
+import androidx.compose.ui.unit.IntOffset
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.window.Popup
 import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -1051,6 +1055,62 @@
             assertFalse(coordindates.isAttached)
         }
     }
+
+    // In some special circumstances, the onGloballyPositioned callbacks can be called recursively
+    // and they shouldn't crash when that happens. This tests a pointer event causing an
+    // onGloballyPositioned callback while processing the onGloballyPositioned.
+    @Test
+    fun recurseGloballyPositionedCallback() {
+        val view = rule.activity.findViewById<View>(android.R.id.content)
+        var offset by mutableStateOf(IntOffset.Zero)
+        var position = Offset.Unspecified
+        var hasSent = false
+        rule.setContent {
+            Box(Modifier.fillMaxSize()) {
+                Box(Modifier.fillMaxSize().offset { offset }.onGloballyPositioned {
+                    if (offset != IntOffset.Zero) {
+                        position = it.positionInRoot()
+                    }
+                })
+                Box(Modifier.fillMaxSize().offset { offset }.onGloballyPositioned {
+                    if (offset != IntOffset.Zero && !hasSent) {
+                        hasSent = true
+                        val now = SystemClock.uptimeMillis()
+                        val event = MotionEvent.obtain(now, now, MotionEvent.ACTION_DOWN, 0f, 0f, 0)
+                        view.dispatchTouchEvent(event)
+                    }
+                })
+            }
+        }
+        rule.runOnIdle {
+            offset = IntOffset(1, 1)
+        }
+        rule.runOnIdle {
+            assertThat(position).isEqualTo(Offset(1f, 1f))
+        }
+    }
+
+    @Test
+    fun lotsOfNotifications() {
+        // have more than 16 OnGloballyPositioned liseteners to test listener cache
+        var offset by mutableStateOf(IntOffset.Zero)
+        var position = Offset.Unspecified
+        rule.setContent {
+            Box(Modifier.fillMaxSize()) {
+                repeat(30) {
+                    Box(Modifier.fillMaxSize().offset { offset }.onGloballyPositioned {
+                        position = it.positionInRoot()
+                    })
+                }
+            }
+        }
+        rule.runOnIdle {
+            offset = IntOffset(1, 1)
+        }
+        rule.runOnIdle {
+            assertThat(position).isEqualTo(Offset(1f, 1f))
+        }
+    }
 }
 
 @Composable
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/TestModifierUpdater.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/TestModifierUpdater.kt
index d065d02..5bda8ad 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/TestModifierUpdater.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/layout/TestModifierUpdater.kt
@@ -16,6 +16,7 @@
 
 package androidx.compose.ui.layout
 
+import androidx.annotation.RestrictTo
 import androidx.compose.runtime.Applier
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.ComposeNode
@@ -23,7 +24,7 @@
 import androidx.compose.ui.node.ComposeUiNode
 import androidx.compose.ui.node.LayoutNode
 
-/** @hide */
+@RestrictTo(RestrictTo.Scope.LIBRARY)
 @Deprecated(
     "It is a test API, do not use it in the real applications",
     level = DeprecationLevel.ERROR
@@ -35,7 +36,7 @@
     }
 }
 
-/** @hide */
+@RestrictTo(RestrictTo.Scope.LIBRARY)
 @Deprecated(
     "It is a test API, do not use it in the real applications",
     level = DeprecationLevel.ERROR
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/OnPositionedDispatcher.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/OnPositionedDispatcher.kt
index 07b7f50..9642118 100644
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/OnPositionedDispatcher.kt
+++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/node/OnPositionedDispatcher.kt
@@ -24,6 +24,7 @@
  */
 internal class OnPositionedDispatcher {
     private val layoutNodes = mutableVectorOf<LayoutNode>()
+    private var cachedNodes: Array<LayoutNode?>? = null
 
     fun onNodePositioned(node: LayoutNode) {
         layoutNodes += node
@@ -39,12 +40,28 @@
     fun dispatch() {
         // sort layoutNodes so that the root is at the end and leaves are at the front
         layoutNodes.sortWith(DepthComparator)
-        layoutNodes.forEachReversed { layoutNode ->
+        val cache: Array<LayoutNode?>
+        val size = layoutNodes.size
+        val cachedNodes = this.cachedNodes
+        if (cachedNodes == null || cachedNodes.size < size) {
+            cache = arrayOfNulls(maxOf(MinArraySize, layoutNodes.size))
+        } else {
+            cache = cachedNodes
+        }
+        this.cachedNodes = null
+
+        // copy to cache to prevent reentrancy being a problem
+        for (i in 0 until size) {
+            cache[i] = layoutNodes[i]
+        }
+        layoutNodes.clear()
+        for (i in size - 1 downTo 0) {
+            val layoutNode = cache[i]!!
             if (layoutNode.needsOnPositionedDispatch) {
                 dispatchHierarchy(layoutNode)
             }
         }
-        layoutNodes.clear()
+        this.cachedNodes = cache
     }
 
     private fun dispatchHierarchy(layoutNode: LayoutNode) {
@@ -59,6 +76,8 @@
     }
 
     internal companion object {
+        private const val MinArraySize = 16
+
         private object DepthComparator : Comparator<LayoutNode> {
             override fun compare(a: LayoutNode, b: LayoutNode): Int {
                 val depthDiff = b.depth.compareTo(a.depth)
diff --git a/core/core/src/androidTest/java/androidx/core/view/DragStartHelperTest.java b/core/core/src/androidTest/java/androidx/core/view/DragStartHelperTest.java
index b32fa94..0dfb788 100644
--- a/core/core/src/androidTest/java/androidx/core/view/DragStartHelperTest.java
+++ b/core/core/src/androidTest/java/androidx/core/view/DragStartHelperTest.java
@@ -375,4 +375,23 @@
                 eq(mDragSource), eq(helper), argThat(new TouchPositionMatcher(0, 0)));
         verifyNoMoreInteractions(listener);
     }
+
+    @LargeTest
+    @Test
+    public void mouseDragThenLongPress() throws Throwable {
+        final DragStartListener listener = createListener(true);
+        final DragStartHelper helper = createDragStartHelper(listener);
+        helper.attach();
+
+        sendMouseEvent(MotionEvent.ACTION_DOWN, MotionEvent.BUTTON_PRIMARY, mDragSource, 0, 0);
+        sendMouseEvent(MotionEvent.ACTION_MOVE, MotionEvent.BUTTON_PRIMARY, mDragSource, 1, 2);
+
+        verify(listener, times(1)).onDragStart(
+                eq(mDragSource), eq(helper), argThat(new TouchPositionMatcher(mDragSource, 1, 2)));
+
+        waitForLongPress();
+
+        // Long press doesn't triggers OnDragStart for a second time.
+        verifyNoMoreInteractions(listener);
+    }
 }
diff --git a/core/core/src/main/java/androidx/core/view/DragStartHelper.java b/core/core/src/main/java/androidx/core/view/DragStartHelper.java
index ed099dc..0c6db11 100644
--- a/core/core/src/main/java/androidx/core/view/DragStartHelper.java
+++ b/core/core/src/main/java/androidx/core/view/DragStartHelper.java
@@ -169,7 +169,12 @@
      * @return true if the callback consumed the long click, false otherwise.
      */
     public boolean onLongClick(@NonNull View v) {
-        return mListener.onDragStart(v, this);
+        if (mDragging) {
+            // Ignore long click once the drag operation is in progress.
+            return true;
+        }
+        mDragging = mListener.onDragStart(v, this);
+        return mDragging;
     }
 
     /**
diff --git a/development/build_log_simplifier/messages.ignore b/development/build_log_simplifier/messages.ignore
index 4884c02..5d6fef5 100644
--- a/development/build_log_simplifier/messages.ignore
+++ b/development/build_log_simplifier/messages.ignore
@@ -1017,7 +1017,10 @@
 # > Configure project :internal-testutils-ktx
 WARNING:.*The option setting 'android\.r8\.maxWorkers=[0-9]+' is experimental\.
 # Building XCFrameworks (b/260140834) and iOS benchmark invocation
+Observed package id 'platforms;android-33-ext5' in inconsistent location.*
 .*xcodebuild.*
+# > Task :core:core:compileDebugAndroidTestKotlin
+w: file://\$SUPPORT/core/core/src/androidTest/java/androidx/core/util/TypedValueCompatTest\.kt:[0-9]+:[0-9]+ 'scaledDensity: Float' is deprecated\. Deprecated in Java
 # > Task :wear:tiles:tiles-material:compileDebugJavaWithJavac
 \$SUPPORT/wear/tiles/tiles\-material/src/main/java/androidx/wear/tiles/material/CircularProgressIndicator\.java:[0-9]+: warning: \[deprecation\] Helper in androidx\.wear\.tiles\.material has been deprecated
 import static androidx\.wear\.tiles\.material\.Helper\.checkNotNull;
@@ -1047,4 +1050,307 @@
 w: file://\$SUPPORT/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/SelectionHandlePopupPositionTest\.kt:[0-9]+:[0-9]+ 'getter for windowLayoutParams: EspressoOptional<WindowManager\.LayoutParams!>!' is deprecated\. Deprecated in Java
 w: file://\$SUPPORT/compose/foundation/foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/text/selection/TextFieldVisualTransformationMagnifierTest\.kt:[0-9]+:[0-9]+ 'RequiresDevice' is deprecated\. Deprecated in Java
 # > Task :compose:ui:ui:compileDebugAndroidTestKotlin
-w: file://\$SUPPORT/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupTestUtils\.kt:[0-9]+:[0-9]+ 'getter for windowLayoutParams: EspressoOptional<WindowManager\.LayoutParams!>!' is deprecated\. Deprecated in Java
\ No newline at end of file
+w: file://\$SUPPORT/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/window/PopupTestUtils\.kt:[0-9]+:[0-9]+ 'getter for windowLayoutParams: EspressoOptional<WindowManager\.LayoutParams!>!' is deprecated\. Deprecated in Java
+# > Task :compose:ui:ui-inspection:dexInspectorRelease
+Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.JvmFunctionSignature\$FakeJavaAnnotationConstructor\$asString\$[0-9]+'s kotlin\.Metadata: null
+Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$Method\$Instance's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.framework\.ViewExtensionsKt\$ancestors\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.full\.Java[0-9]+RepeatableContainerLoader\$Cache's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.JvmPropertySignature's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.InspectorNode\$WhenMappings's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KotlinReflectionInternalError's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KDeclarationContainerImpl\$findFunctionDescriptor\$allMembers\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.RuntimeTypeMapperKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.AnnotationConstructorCallerKt\$createAnnotationInstance\$hashCode\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KMutableProperty[0-9]+Impl\$_setter\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.compose\.AndroidComposeViewWrapper\$Companion's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KParameterImpl\$type\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.full\.KClasses\$isSubclassOf\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPackageImpl\$Data\$members\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.AnnotationConstructorCaller's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.androidx\.compose\.ui\.tooling\.data\.UiToolingDataApi's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KCallableImpl\$_parameters\$[0-9]+\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.LambdaLocation's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KTypeImpl's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.ComposeLayoutInspector\$getComposableNodes\$data\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.ModuleByClassLoaderKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.JvmPropertySignature\$JavaField's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data\$supertypes\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.ParameterFactory\$expand\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KProperty[0-9]+Impl\$Getter's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.AnnotationConstructorCaller\$CallMode's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KFunctionImpl\$caller\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$FieldSetter\$BoundInstance's kotlin\.Metadata: null
+Info:
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$Method\$Instance's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.androidx\.compose\.ui\.tooling\.data\.ParameterInformation's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.full\.IllegalPropertyDelegateAccessException's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.ComposeLayoutInspector's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.InlineClassAwareCaller's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.full\.KClasses\$defaultType\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.PackageHashesKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KCallableImpl\$_returnType\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.JvmFunctionSignature\$FakeJavaAnnotationConstructor\$asString\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.InlineClassAwareCaller\$BoxUnboxData's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.ParameterFactory\$loadConstantsFromStaticFinal\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KProperty[0-9]+Impl's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.ComposeLayoutInspector\$handleGetAllParametersCommand\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.androidx\.compose\.ui\.tooling\.data\.ContextCache's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.RuntimeTypeMapperKt\$signature\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.ParameterKind's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$BoundConstructor's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.ComposeLayoutInspector\$handleUnknownCommand\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.InlineClassAwareCallerKt's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.ParameterFactory\$ParameterCreator\$findBestResourceFont\$\$inlined\$filterIsInstance\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.InlineClassConverter\$loadTypeMapper\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPropertyImpl\$Getter\$descriptor\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.full\.KClasses's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KMutableProperty[0-9]+Impl\$Setter's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.CachesKt\$CACHE_FOR_BASE_CLASSIFIERS\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KCallableImpl\$_returnType\$[0-9]+\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KTypeParameterImpl's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KTypeImpl\$arguments\$[0-9]+\$parameterizedTypeArguments\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KMutableProperty[0-9]+Impl's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.ParameterType's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$Method's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$Method\$JvmStaticInObject's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$FieldGetter\$BoundInstance's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.compose\.ComposeExtensionsKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.ComputableClassValue's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.ParameterFactory\$loadConstantsFromObjectInstance\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.RecompositionHandler\$MethodKey's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPropertyImpl\$Setter\$descriptor\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KCallableImpl\$_annotations\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.LayoutInspectorTree\$belongsToView\$[0-9]+\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KTypeImpl\$arguments\$[0-9]+\$[0-9]+\$type\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data\$typeParameters\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.ParameterFactory\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$FieldSetter\$BoundJvmStaticInObject's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.KTypesJvm's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.RecompositionHandler\$Data's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.CachesKt\$K_PACKAGE_CACHE\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data\$supertypes\$[0-9]+\$[0-9]+\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPropertyImpl's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KDeclarationContainerImpl\$MemberBelonginess's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.JvmPropertySignature\$JavaMethodProperty's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KFunctionImpl\$descriptor\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$FieldSetter\$Static's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KCallableImpl\$_parameters\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$FieldGetter\$BoundJvmStaticInObject's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data\$declaredNonStaticMembers\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data\$inheritedStaticMembers\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.androidx\.compose\.ui\.tooling\.data\.NodeGroup's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.full\.KCallables\$callSuspendBy\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.ParameterFactory\$ParameterCreator\$lookup\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.proto\.ViewExtensionsKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPropertyImplKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.JvmPropertySignature\$KotlinProperty's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$FieldGetter\$JvmStaticInObject's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$FieldGetter's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$AccessorForHiddenConstructor's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data\$inheritedNonStaticMembers\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KProperty[0-9]+Impl\$delegateSource\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.androidx\.compose\.ui\.tooling\.data\.SlotTreeKt\$extractParameterInfo\$\$inlined\$sortedBy\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$data\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.ComposeLayoutInspector\$handleGetComposablesCommand\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.WeakClassLoaderBox's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data\$constructors\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.AnnotationConstructorCallerKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KCallableImpl\$_parameters\$[0-9]+\$invoke\$\$inlined\$sortBy\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$FieldSetter\$JvmStaticInObject's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.ReflectionObjectRenderer\$renderLambda\$[0-9]+\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KParameterImpl\$annotations\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.KClassesJvm's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPropertyImpl\$Accessor's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.JvmFunctionSignature\$JavaMethod's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.LayoutInspectorTree\$belongsToView\$[0-9]+\$invoke\$\$inlined\$filterIsInstance\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.ReflectLambdaKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPropertyImpl\$Getter's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.ScopedReflectionFactory's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.androidx\.compose\.ui\.tooling\.data\.SlotTreeKt's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.ComposeLayoutInspector\$getComposableFromAnchor\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.ExperimentalReflectionOnLambdas's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.LayoutInspectorTree\$parseLayoutInfo\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.RuntimeTypeMapper's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.ComposeLayoutInspector\$WhenMappings's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.androidx\.compose\.ui\.tooling\.data\.Parameter's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.util\.AnchorMap's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPackageImpl\$Data\$multifileFacade\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.AnnotationConstructorCallerKt\$createAnnotationInstance\$toString\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.AnnotationConstructorCallerKt\$createAnnotationInstance\$toString\$[0-9]+\$[0-9]+\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.LayoutInspectorTree\$belongsToView\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.RecompositionHandlerKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KParameterImpl's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KDeclarationContainerImpl's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.ParameterFactory's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.ConcurrentHashMapCache's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.CacheByClassKt's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.InspectorNode's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.RecompositionHandler's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data\$annotations\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.ReflectLambdaKt\$reflect\$descriptor\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$Method\$BoundInstance's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KDeclarationContainerImpl\$Data\$moduleData\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.ComposeLayoutInspector\$handleGetParameterDetailsCommand\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.ReflectionObjectRenderer's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.proto\.ComposeExtensionsKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KTypeImpl\$arguments\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.compose\.AndroidComposeViewWrapperKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.androidx\.compose\.ui\.tooling\.data\.SourceContext's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KDeclarationContainerImpl\$findPropertyDescriptor\$mostVisibleProperties\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.LayoutInspectorTree\$SubCompositionRoots's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data\$allStaticMembers\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.ComposeLayoutInspector\$handleGetParametersCommand\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.EmptyContainerForLocal's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.full\.KClassifiers's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.androidx\.compose\.ui\.tooling\.data\.CompositionCallStack's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPropertyImpl\$Companion's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.ParameterFactory\$loadConstantsFrom\$[0-9]+\$topClass\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.InternalUnderlyingValOfInlineClass\$Unbound's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KTypeParameterImpl\$upperBounds\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.full\.KAnnotatedElements's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.androidx\.compose\.ui\.tooling\.data\.ParseError's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.ComposeLayoutInspector\$CacheTree's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data\$allMembers\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KTypeImpl\$arguments\$[0-9]+\$WhenMappings's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.androidx\.compose\.ui\.tooling\.data\.Group's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.full\.KClasses\$allSupertypes\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassifierImpl's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.ReflectionObjectRenderer\$renderFunction\$[0-9]+\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.CachesKt\$K_CLASS_CACHE\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.compose\.AndroidComposeViewWrapper's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$Method\$Static's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.FunctionWithAllInvokes's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$Method\$BoundJvmStaticInObject's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$FieldGetter\$Static's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.TypeOfImplKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.ReflectionObjectRenderer\$WhenMappings's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.ReflectionScope's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPackageImpl\$Data\$metadata\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.framework\.ViewExtensionsKt\$flatten\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.ParameterFactory\$ParameterCreator\$unwrap\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.FunctionWithAllInvokes\$DefaultImpls's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPackageImpl\$Data\$kotlinClass\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data\$declaredStaticMembers\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data\$allNonStaticMembers\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KProperty[0-9]+Impl\$delegateValue\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.InternalUnderlyingValOfInlineClass\$Bound's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.ReflectionScope\$Companion's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KProperty[0-9]+Impl\$_getter\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.CacheByClass's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.NodeParameterReference's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.CachesKt\$CACHE_FOR_NULLABLE_BASE_CLASSIFIERS\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.proto\.StringTable's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPackageImpl\$getLocalProperty\$[0-9]+\$[0-9]+\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.full\.KClassifiers\$WhenMappings's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.LayoutInspectorTree\$stitchTreesByLayoutInfo\$[0-9]+\$parentLayout\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.ComposeLayoutInspectorFactory's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.Caller's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.proto\.StringTable\$put\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.InlineClassConverter's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.LayoutInspectorTree\$convert\$group\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.LambdaLocation\$Companion's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$FieldSetter's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KFunctionImpl\$defaultCaller\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.full\.KTypes's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.ReflectJvmMapping's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.ParameterFactory\$loadConstantsFrom\$related\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$getLocalProperty\$[0-9]+\$[0-9]+\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPackageImpl\$data\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.InspectorNodeKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.full\.Java[0-9]+RepeatableContainerLoader's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.full\.KCallables\$callSuspend\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.androidx\.compose\.ui\.tooling\.data\.SourceInformationContext's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$Method\$BoundStatic's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.full\.KCallables's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KTypeParameterImpl\$WhenMappings's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.ParameterFactory\$ParameterCreator's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data\$simpleName\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.InlineClassConverter\$notInlineType\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.InternalUnderlyingValOfInlineClass's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.ComposeLayoutInspector\$handleUpdateSettingsCommand\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.ThrowingCaller's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.JvmPropertySignature\$MappedKotlinProperty's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPackageImpl's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$Constructor's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KDeclarationContainerImpl\$getMembers\$visitor\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.util\.IntArrayKt's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.LayoutInspectorTreeKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.KCallablesJvm's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.ReflectionScopeKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.androidx\.compose\.ui\.tooling\.data\.JoinedKey's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.CachesKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data\$descriptor\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.LayoutInspectorTree\$stitchTreesByLayoutInfo\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.JvmFunctionSignature's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.androidx\.compose\.ui\.tooling\.data\.SourceLocation's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPackageImpl\$Data\$scope\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.ReflectJvmMapping\$WhenMappings's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data\$objectInstance\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.CachesKt\$CACHE_FOR_GENERIC_CLASSIFIERS\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.ComposeLayoutInspector\$getAndroidComposeViews\$roots\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.ComposeLayoutInspector\$CacheData's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.full\.IllegalCallableAccessException's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data\$declaredMembers\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.JvmFunctionSignature\$JavaConstructor's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.Caller\$DefaultImpls's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.full\.NoSuchPropertyException's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KDeclarationContainerImpl\$Data's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KFunctionImpl's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.MutableInspectorNode's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$FieldSetter\$Instance's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.ParameterFactoryKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$FieldGetter\$Instance's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data\$sealedSubclasses\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.JvmFunctionSignature\$KotlinConstructor's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.CreateKCallableVisitor's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.AnnotationConstructorCaller\$Origin's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$Companion's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.LayoutInspectorTree\$findDeepParentTree\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.UtilKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPropertyImpl\$Getter\$caller\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPropertyImpl\$Setter\$caller\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPropertyImpl\$Setter's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.JvmFunctionSignature\$FakeJavaAnnotationConstructor's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.util\.AnchorMapKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.androidx\.compose\.ui\.tooling\.data\.EmptyGroup's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.BoundCaller's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$WhenMappings's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPackageImpl\$Data's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.ComposeLayoutInspectorKt's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.QuadBounds's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.JvmFunctionSignature\$JavaConstructor\$asString\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.full\.KProperties's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KTypeImpl\$classifier\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.LayoutInspectorTree\$StitchInfo's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.ClassValueCache's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.JvmFunctionSignature\$KotlinFunction's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.ParameterFactory\$create\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.androidx\.compose\.ui\.tooling\.data\.SourceLocationInfo's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.androidx\.compose\.ui\.tooling\.data\.CallGroup's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.calls\.CallerImpl\$AccessorForHiddenBoundConstructor's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KCallableImpl\$_typeParameters\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.util\.ThreadUtils's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data\$nestedClasses\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data\$supertypes\$[0-9]+\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.NodeParameter's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPropertyImpl\$_descriptor\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KDeclarationContainerImpl\$findPropertyDescriptor\$allMembers\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.ParameterFactory\$ModifierCollector's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.LayoutInspectorTree\$parseLayoutInfo\$\$inlined\$filterIsInstance\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KPropertyImpl\$_javaField\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.proto\.ComposeExtensionsKt\$WhenMappings's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.RawParameter's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.JvmFunctionSignature\$FakeJavaAnnotationConstructor\$special\$\$inlined\$sortedBy\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KTypeParameterOwnerImpl's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.inspector\.LayoutInspectorTree's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.framework\.ViewExtensionsKt's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.UtilKt\$WhenMappings's kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KDeclarationContainerImpl\$Companion's kotlin\.Metadata: null
+Info: Unexpected error while reading androidx\.compose\.ui\.inspection\.compose\.ComposeExtensionsKt\$flatten\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KClassImpl\$Data\$qualifiedName\$[0-9]+'s kotlin\.Metadata: null
+Info: Unexpected error while reading deps\.ui\.inspection\.kotlin\.reflect\.jvm\.internal\.KCallableImpl's kotlin\.Metadata: null
diff --git a/lint-checks/src/main/java/androidx/com/android/tools/idea/lang/aidl/AidlLanguage.java b/lint-checks/src/main/java/androidx/com/android/tools/idea/lang/aidl/AidlLanguage.java
index 0a10e27..3e7d669 100644
--- a/lint-checks/src/main/java/androidx/com/android/tools/idea/lang/aidl/AidlLanguage.java
+++ b/lint-checks/src/main/java/androidx/com/android/tools/idea/lang/aidl/AidlLanguage.java
@@ -22,14 +22,12 @@
  * Android IDL Language.
  */
 public class AidlLanguage extends Language {
-  private static final Object INSTANCE_LOCK = new Object();
-
   public static final Language INSTANCE = getOrCreate();
 
   private static Language getOrCreate() {
     // The Language class is not thread-safe, so this is a best-effort to avoid a race condition
-    // during our own access across multiple lint worker threads.
-    synchronized (INSTANCE_LOCK) {
+    // during our own access across multiple lint worker threads and classloaders.
+    synchronized (Language.ANY) {
       Language lang = Language.findLanguageByID(ID);
       if (lang != null) {
         return lang;
diff --git a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/QueryInterceptorTest.kt b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/QueryInterceptorTest.kt
index 4f6a445..82a15d5 100644
--- a/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/QueryInterceptorTest.kt
+++ b/room/integration-tests/kotlintestapp/src/androidTest/java/androidx/room/integration/kotlintestapp/test/QueryInterceptorTest.kt
@@ -82,12 +82,10 @@
             ApplicationProvider.getApplicationContext(),
             QueryInterceptorTestDatabase::class.java
         ).setQueryCallback(
-            object : RoomDatabase.QueryCallback {
-                override fun onQuery(sqlQuery: String, bindArgs: List<Any?>) {
-                    val argTrace = ArrayList<Any?>()
-                    argTrace.addAll(bindArgs)
-                    queryAndArgs.add(Pair(sqlQuery, argTrace))
-                }
+            { sqlQuery, bindArgs ->
+                val argTrace = ArrayList<Any?>()
+                argTrace.addAll(bindArgs)
+                queryAndArgs.add(Pair(sqlQuery, argTrace))
             },
             MoreExecutors.directExecutor()
         ).build()
@@ -190,12 +188,10 @@
             ApplicationProvider.getApplicationContext(),
             QueryInterceptorTestDatabase::class.java
         ).setQueryCallback(
-            object : RoomDatabase.QueryCallback {
-                override fun onQuery(sqlQuery: String, bindArgs: List<Any?>) {
-                    val argTrace = ArrayList<Any?>()
-                    argTrace.addAll(bindArgs)
-                    queryAndArgs.add(Pair(sqlQuery, argTrace))
-                }
+            { sqlQuery, bindArgs ->
+                val argTrace = ArrayList<Any?>()
+                argTrace.addAll(bindArgs)
+                queryAndArgs.add(Pair(sqlQuery, argTrace))
             },
             MoreExecutors.directExecutor()
         )
diff --git a/room/room-runtime/api/current.txt b/room/room-runtime/api/current.txt
index 85a503e..2b171d7 100644
--- a/room/room-runtime/api/current.txt
+++ b/room/room-runtime/api/current.txt
@@ -146,7 +146,7 @@
     method public void onOpenPrepackagedDatabase(androidx.sqlite.db.SupportSQLiteDatabase db);
   }
 
-  public static interface RoomDatabase.QueryCallback {
+  public static fun interface RoomDatabase.QueryCallback {
     method public void onQuery(String sqlQuery, java.util.List<?> bindArgs);
   }
 
diff --git a/room/room-runtime/api/restricted_current.txt b/room/room-runtime/api/restricted_current.txt
index 3c93dee..0d2b10b 100644
--- a/room/room-runtime/api/restricted_current.txt
+++ b/room/room-runtime/api/restricted_current.txt
@@ -201,7 +201,7 @@
     method public void onOpenPrepackagedDatabase(androidx.sqlite.db.SupportSQLiteDatabase db);
   }
 
-  public static interface RoomDatabase.QueryCallback {
+  public static fun interface RoomDatabase.QueryCallback {
     method public void onQuery(String sqlQuery, java.util.List<?> bindArgs);
   }
 
diff --git a/room/room-runtime/src/main/java/androidx/room/RoomDatabase.kt b/room/room-runtime/src/main/java/androidx/room/RoomDatabase.kt
index 6bf5259..bc86569 100644
--- a/room/room-runtime/src/main/java/androidx/room/RoomDatabase.kt
+++ b/room/room-runtime/src/main/java/androidx/room/RoomDatabase.kt
@@ -1526,7 +1526,7 @@
      *
      * Can be set using [RoomDatabase.Builder.setQueryCallback].
      */
-    interface QueryCallback {
+    fun interface QueryCallback {
         /**
          * Called when a SQL query is executed.
          *
diff --git a/settings.gradle b/settings.gradle
index 0f11a3a..f4bbd60 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -453,6 +453,7 @@
 includeProject(":autofill:autofill", [BuildType.MAIN])
 includeProject(":benchmark:benchmark-benchmark", "benchmark/benchmark", [BuildType.MAIN, BuildType.COMPOSE])
 includeProject(":benchmark:benchmark-common")
+includeProject(":benchmark:benchmark-internal")
 includeProject(":benchmark:benchmark-darwin", [BuildType.INFRAROGUE, BuildType.KMP])
 includeProject(":benchmark:benchmark-darwin-core", [BuildType.INFRAROGUE, BuildType.KMP])
 includeProject(":benchmark:benchmark-darwin-samples", [BuildType.INFRAROGUE, BuildType.KMP])
diff --git a/slice/slice-builders-ktx/lint-baseline.xml b/slice/slice-builders-ktx/lint-baseline.xml
deleted file mode 100644
index ba31f50..0000000
--- a/slice/slice-builders-ktx/lint-baseline.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<issues format="6" by="lint 8.1.0-alpha07" type="baseline" client="gradle" dependencies="false" name="AGP (8.0.0-beta03)" variant="all" version="8.1.0-alpha07">
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="annotation class SliceMarker"
-        errorLine2="                 ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.kt"/>
-    </issue>
-
-</issues>
diff --git a/slice/slice-builders-ktx/src/main/java/androidx/slice/builders/ListBuilder.kt b/slice/slice-builders-ktx/src/main/java/androidx/slice/builders/ListBuilder.kt
index 0075e93..101ed21 100644
--- a/slice/slice-builders-ktx/src/main/java/androidx/slice/builders/ListBuilder.kt
+++ b/slice/slice-builders-ktx/src/main/java/androidx/slice/builders/ListBuilder.kt
@@ -23,9 +23,6 @@
 import androidx.core.graphics.drawable.IconCompat
 import androidx.slice.builders.ListBuilder.ICON_IMAGE
 
-/**
- * @hide
- */
 @RestrictTo(LIBRARY)
 @DslMarker
 annotation class SliceMarker
diff --git a/slice/slice-builders/lint-baseline.xml b/slice/slice-builders/lint-baseline.xml
index bb7a657..125de78 100644
--- a/slice/slice-builders/lint-baseline.xml
+++ b/slice/slice-builders/lint-baseline.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<issues format="6" by="lint 8.1.0-alpha07" type="baseline" client="gradle" dependencies="false" name="AGP (8.0.0-beta03)" variant="all" version="8.1.0-alpha07">
+<issues format="6" by="lint 8.1.0-beta02" type="baseline" client="gradle" dependencies="false" name="AGP (8.1.0-beta02)" variant="all" version="8.1.0-beta02">
 
     <issue
         id="WrongConstant"
@@ -11,1401 +11,6 @@
     </issue>
 
     <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceAction getPrimaryAction() {"
-        errorLine2="                       ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public List&lt;CellBuilder> getCells() {"
-        errorLine2="                             ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public CellBuilder getSeeMoreCell() {"
-        errorLine2="                       ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public PendingIntent getSeeMoreIntent() {"
-        errorLine2="                         ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public CharSequence getDescription() {"
-        errorLine2="                        ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public int getLayoutDirection() {"
-        errorLine2="               ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public static final int TYPE_TEXT = 0;"
-        errorLine2="                                ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public static final int TYPE_TITLE = 1;"
-        errorLine2="                                ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public static final int TYPE_IMAGE = 2;"
-        errorLine2="                                ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public static final int TYPE_OVERLAY = 3;"
-        errorLine2="                                ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public List&lt;Object> getObjects() {"
-        errorLine2="                            ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public List&lt;Integer> getTypes() {"
-        errorLine2="                             ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public List&lt;Boolean> getLoadings() {"
-        errorLine2="                             ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public CharSequence getCellDescription() {"
-        errorLine2="                            ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public PendingIntent getContentIntent() {"
-        errorLine2="                             ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public CharSequence getTitle() {"
-        errorLine2="                            ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public CharSequence getSubtitle() {"
-        errorLine2="                            ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public SliceAction getSliceAction() {"
-        errorLine2="                           ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/GridRowBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class GridRowBuilderListV1Impl extends TemplateBuilderImpl {"
-        errorLine2="             ~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/impl/GridRowBuilderListV1Impl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public void apply(@NonNull Slice.Builder b) {"
-        errorLine2="                    ~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/impl/GridRowBuilderListV1Impl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public interface ListBuilder {"
-        errorLine2="                 ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/impl/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public @interface ImageMode {"
-        errorLine2="                      ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public @interface LayoutDirection {}"
-        errorLine2="                      ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected TemplateBuilderImpl selectImpl() {"
-        errorLine2="                                  ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public androidx.slice.builders.impl.ListBuilder getImpl() {"
-        errorLine2="                                                    ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public @interface RangeMode {"
-        errorLine2="                      ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public boolean isTitleItemLoading() {"
-        errorLine2="                       ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public int getTitleImageMode() {"
-        errorLine2="                   ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public IconCompat getTitleIcon() {"
-        errorLine2="                          ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public int getValue() {"
-        errorLine2="                   ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public int getMax() {"
-        errorLine2="                   ~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public boolean isValueSet() {"
-        errorLine2="                       ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public CharSequence getTitle() {"
-        errorLine2="                            ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public CharSequence getSubtitle() {"
-        errorLine2="                            ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public SliceAction getPrimaryAction() {"
-        errorLine2="                           ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public CharSequence getContentDescription() {"
-        errorLine2="                            ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public int getLayoutDirection() {"
-        errorLine2="                   ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public int getMode() {"
-        errorLine2="                   ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public static final int TYPE_ACTION = 2;"
-        errorLine2="                                ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public int getMin() {"
-        errorLine2="                   ~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public int getMax() {"
-        errorLine2="                   ~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public float getValue() {"
-        errorLine2="                     ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public boolean isValueSet() {"
-        errorLine2="                       ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public PendingIntent getAction() {"
-        errorLine2="                             ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public CharSequence getContentDescription() {"
-        errorLine2="                            ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public PendingIntent getInputAction() {"
-        errorLine2="                             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public CharSequence getTitle() {"
-        errorLine2="                            ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public CharSequence getSubtitle() {"
-        errorLine2="                            ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public SliceAction getPrimaryAction() {"
-        errorLine2="                           ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public boolean isTitleItemLoading() {"
-        errorLine2="                       ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public int getTitleImageMode() {"
-        errorLine2="                   ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public IconCompat getTitleIcon() {"
-        errorLine2="                          ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public boolean isTitleItemLoading() {"
-        errorLine2="                       ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public int getTitleImageMode() {"
-        errorLine2="                   ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public IconCompat getTitleIcon() {"
-        errorLine2="                          ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public static final int TYPE_ACTION = 2;"
-        errorLine2="                                ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public List&lt;Object> getEndItems() {"
-        errorLine2="                            ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public List&lt;Integer> getEndTypes() {"
-        errorLine2="                             ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public List&lt;Boolean> getEndLoads() {"
-        errorLine2="                             ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public int getMin() {"
-        errorLine2="                   ~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public int getMax() {"
-        errorLine2="                   ~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public int getValue() {"
-        errorLine2="                   ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public boolean isValueSet() {"
-        errorLine2="                       ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public CharSequence getTitle() {"
-        errorLine2="                            ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public CharSequence getSubtitle() {"
-        errorLine2="                            ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public PendingIntent getAction() {"
-        errorLine2="                             ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public PendingIntent getInputAction() {"
-        errorLine2="                             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public IconCompat getThumb() {"
-        errorLine2="                          ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public SliceAction getPrimaryAction() {"
-        errorLine2="                           ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public CharSequence getContentDescription() {"
-        errorLine2="                            ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public int getLayoutDirection() {"
-        errorLine2="                   ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public static final int TYPE_TIMESTAMP = 0;"
-        errorLine2="                                ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public static final int TYPE_ICON = 1;"
-        errorLine2="                                ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public static final int TYPE_ACTION = 2;"
-        errorLine2="                                ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public Uri getUri() {"
-        errorLine2="                   ~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public boolean isEndOfSection() {"
-        errorLine2="                       ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public boolean hasEndActionOrToggle() {"
-        errorLine2="                       ~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public boolean hasEndImage() {"
-        errorLine2="                       ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public boolean hasDefaultToggle() {"
-        errorLine2="                       ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public boolean hasTimestamp() {"
-        errorLine2="                       ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public long getTimeStamp() {"
-        errorLine2="                    ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public boolean isTitleItemLoading() {"
-        errorLine2="                       ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public int getTitleImageMode() {"
-        errorLine2="                   ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public IconCompat getTitleIcon() {"
-        errorLine2="                          ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public SliceAction getTitleAction() {"
-        errorLine2="                           ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public SliceAction getPrimaryAction() {"
-        errorLine2="                           ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public CharSequence getTitle() {"
-        errorLine2="                            ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public boolean isTitleLoading() {"
-        errorLine2="                       ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public CharSequence getSubtitle() {"
-        errorLine2="                            ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public boolean isSubtitleLoading() {"
-        errorLine2="                       ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public CharSequence getContentDescription() {"
-        errorLine2="                            ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public int getLayoutDirection() {"
-        errorLine2="                   ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public List&lt;Object> getEndItems() {"
-        errorLine2="                            ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public List&lt;Integer> getEndTypes() {"
-        errorLine2="                             ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public List&lt;Boolean> getEndLoads() {"
-        errorLine2="                             ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public boolean isTitleActionLoading() {"
-        errorLine2="                       ~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public HeaderBuilder(@NonNull final Uri uri) {"
-        errorLine2="               ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public Uri getUri() {"
-        errorLine2="                   ~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public CharSequence getTitle() {"
-        errorLine2="                            ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public boolean isTitleLoading() {"
-        errorLine2="                       ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public CharSequence getSubtitle() {"
-        errorLine2="                            ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public boolean isSubtitleLoading() {"
-        errorLine2="                       ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public CharSequence getSummary() {"
-        errorLine2="                            ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public boolean isSummaryLoading() {"
-        errorLine2="                       ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public SliceAction getPrimaryAction() {"
-        errorLine2="                           ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public CharSequence getContentDescription() {"
-        errorLine2="                            ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public int getLayoutDirection() {"
-        errorLine2="                   ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/ListBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class ListBuilderBasicImpl extends TemplateBuilderImpl implements ListBuilder {"
-        errorLine2="             ~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/impl/ListBuilderBasicImpl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class ListBuilderImpl extends TemplateBuilderImpl implements ListBuilder {"
-        errorLine2="             ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/impl/ListBuilderImpl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class MessagingBasicImpl extends TemplateBuilderImpl implements"
-        errorLine2="             ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/impl/MessagingBasicImpl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public interface MessagingBuilder {"
-        errorLine2="                 ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/impl/MessagingBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class MessagingListV1Impl extends TemplateBuilderImpl implements MessagingBuilder{"
-        errorLine2="             ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/impl/MessagingListV1Impl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class MessagingSliceBuilder extends TemplateSliceBuilder {"
-        errorLine2="             ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/MessagingSliceBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected TemplateBuilderImpl selectImpl() {"
-        errorLine2="                                  ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/MessagingSliceBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class MessagingV1Impl extends TemplateBuilderImpl implements MessagingBuilder {"
-        errorLine2="             ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/impl/MessagingV1Impl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public List&lt;Pair&lt;String, CharSequence>> getOptions() {"
-        errorLine2="                                            ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceAction getPrimaryAction() {"
-        errorLine2="                       ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public PendingIntent getInputAction() {"
-        errorLine2="                         ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public String getSelectedOption() {"
-        errorLine2="                  ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public CharSequence getTitle() {"
-        errorLine2="                        ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public CharSequence getSubtitle() {"
-        errorLine2="                        ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public CharSequence getContentDescription() {"
-        errorLine2="                        ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public int getLayoutDirection() {"
-        errorLine2="               ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void check() {"
-        errorLine2="                ~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SelectionBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class SelectionBuilderBasicImpl extends SelectionBuilderImpl {"
-        errorLine2="             ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/impl/SelectionBuilderBasicImpl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public abstract class SelectionBuilderImpl extends TemplateBuilderImpl {"
-        errorLine2="                      ~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/impl/SelectionBuilderImpl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class SelectionBuilderListV2Impl extends SelectionBuilderImpl {"
-        errorLine2="             ~~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/impl/SelectionBuilderListV2Impl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceAction(@NonNull PendingIntent action, @NonNull Icon actionIcon,"
-        errorLine2="           ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SliceAction.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceAction(@NonNull PendingIntent action, @NonNull Icon actionIcon,"
-        errorLine2="           ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SliceAction.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceAction(@NonNull PendingIntent action, @NonNull Icon actionIcon,"
-        errorLine2="           ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SliceAction.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceAction(@NonNull PendingIntent action, @NonNull IconCompat actionIcon,"
-        errorLine2="           ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SliceAction.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceAction(@NonNull PendingIntent action, @NonNull IconCompat actionIcon,"
-        errorLine2="           ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SliceAction.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceAction(@NonNull PendingIntent action, @NonNull IconCompat actionIcon,"
-        errorLine2="           ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SliceAction.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceAction(@NonNull PendingIntent action, @NonNull CharSequence actionTitle,"
-        errorLine2="           ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SliceAction.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceAction(@NonNull PendingIntent action, @NonNull CharSequence actionTitle,"
-        errorLine2="           ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SliceAction.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static SliceAction createDatePicker(@NonNull PendingIntent action,"
-        errorLine2="                              ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SliceAction.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static SliceAction createTimePicker(@NonNull PendingIntent action,"
-        errorLine2="                              ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SliceAction.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public Slice buildSlice(@NonNull Slice.Builder builder) {"
-        errorLine2="                 ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SliceAction.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceActionImpl getImpl() {"
-        errorLine2="                           ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SliceAction.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setPrimaryAction(@NonNull Slice.Builder builder) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/SliceAction.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public abstract class TemplateBuilderImpl {"
-        errorLine2="                      ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public Slice.Builder getBuilder() {"
-        errorLine2="                         ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public Slice.Builder createChildBuilder() {"
-        errorLine2="                         ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public abstract void apply(@NonNull Slice.Builder builder);"
-        errorLine2="                         ~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public Clock getClock() {"
-        errorLine2="                 ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceSpec getSpec() {"
-        errorLine2="                     ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected ArrayList&lt;String> parseImageMode(int imageMode, boolean isLoading) {"
-        errorLine2="                                ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected TemplateSliceBuilder(TemplateBuilderImpl impl) {"
-        errorLine2="              ~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/TemplateSliceBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public TemplateSliceBuilder(Context context, Uri uri) {"
-        errorLine2="           ~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/TemplateSliceBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected Slice.Builder getBuilder() {"
-        errorLine2="                            ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/TemplateSliceBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    abstract void setImpl(TemplateBuilderImpl impl);"
-        errorLine2="                  ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/TemplateSliceBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected TemplateBuilderImpl selectImpl() {"
-        errorLine2="                                  ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/TemplateSliceBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected boolean checkCompatible(SliceSpec candidate) {"
-        errorLine2="                      ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/TemplateSliceBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected Clock getClock() {"
-        errorLine2="                    ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/TemplateSliceBuilder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    static &lt;T> Pair&lt;SliceSpec, Class&lt;? extends TemplateBuilderImpl>> pair(SliceSpec spec,"
-        errorLine2="                                                                     ~~~~">
-        <location
-            file="src/main/java/androidx/slice/builders/TemplateSliceBuilder.java"/>
-    </issue>
-
-    <issue
         id="ClassVerificationFailure"
         message="This call references a method added in API level 26; however, the containing class androidx.slice.builders.impl.ListBuilderBasicImpl is reachable from earlier API levels and will fail run-time class verification."
         errorLine1="        setTtl(ttl == null ? INFINITY : ttl.toMillis());"
diff --git a/slice/slice-builders/src/main/java/androidx/slice/builders/GridRowBuilder.java b/slice/slice-builders/src/main/java/androidx/slice/builders/GridRowBuilder.java
index 4e8de26..4523685 100644
--- a/slice/slice-builders/src/main/java/androidx/slice/builders/GridRowBuilder.java
+++ b/slice/slice-builders/src/main/java/androidx/slice/builders/GridRowBuilder.java
@@ -184,7 +184,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public SliceAction getPrimaryAction() {
@@ -192,7 +191,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public List<CellBuilder> getCells() {
@@ -200,7 +198,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public CellBuilder getSeeMoreCell() {
@@ -208,7 +205,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public PendingIntent getSeeMoreIntent() {
@@ -216,7 +212,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public CharSequence getDescription() {
@@ -224,7 +219,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public int getLayoutDirection() {
@@ -265,22 +259,18 @@
      */
     public static class CellBuilder {
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public static final int TYPE_TEXT = 0;
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public static final int TYPE_TITLE = 1;
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public static final int TYPE_IMAGE = 2;
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public static final int TYPE_OVERLAY = 3;
@@ -465,7 +455,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public List<Object> getObjects() {
@@ -473,7 +462,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public List<Integer> getTypes() {
@@ -481,7 +469,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public List<Boolean> getLoadings() {
@@ -489,7 +476,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public CharSequence getCellDescription() {
@@ -497,7 +483,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public PendingIntent getContentIntent() {
@@ -505,7 +490,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -519,7 +503,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -533,7 +516,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
diff --git a/slice/slice-builders/src/main/java/androidx/slice/builders/ListBuilder.java b/slice/slice-builders/src/main/java/androidx/slice/builders/ListBuilder.java
index b532dfe..77d5f5b 100644
--- a/slice/slice-builders/src/main/java/androidx/slice/builders/ListBuilder.java
+++ b/slice/slice-builders/src/main/java/androidx/slice/builders/ListBuilder.java
@@ -180,7 +180,6 @@
     public static final int UNKNOWN_IMAGE = SliceHints.UNKNOWN_IMAGE;
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @IntDef({
@@ -197,7 +196,6 @@
     public static final long INFINITY = SliceHints.INFINITY;
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @IntDef({
@@ -494,7 +492,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     @Override
@@ -511,7 +508,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     @NonNull
@@ -520,7 +516,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @IntDef({
@@ -727,7 +722,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public boolean isTitleItemLoading() {
@@ -735,7 +729,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public int getTitleImageMode() {
@@ -743,7 +736,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -752,7 +744,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public int getValue() {
@@ -760,7 +751,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public int getMax() {
@@ -768,7 +758,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public boolean isValueSet() {
@@ -776,7 +765,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -785,7 +773,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -794,7 +781,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -803,7 +789,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -812,7 +797,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public int getLayoutDirection() {
@@ -820,7 +804,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public int getMode() {
@@ -838,7 +821,6 @@
     @SuppressLint("MissingBuildMethod")
     public static final class RatingBuilder {
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public static final int TYPE_ACTION = 2;
@@ -867,7 +849,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public int getMin() {
@@ -884,7 +865,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public int getMax() {
@@ -901,7 +881,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public float getValue() {
@@ -922,7 +901,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public boolean isValueSet() {
@@ -930,7 +908,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -939,7 +916,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -1029,7 +1005,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -1058,7 +1033,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -1067,7 +1041,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -1076,7 +1049,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -1085,7 +1057,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public boolean isTitleItemLoading() {
@@ -1093,7 +1064,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public int getTitleImageMode() {
@@ -1101,7 +1071,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -1338,7 +1307,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public boolean isTitleItemLoading() {
@@ -1346,7 +1314,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public int getTitleImageMode() {
@@ -1354,7 +1321,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -1363,13 +1329,11 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public static final int TYPE_ACTION = 2;
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @NonNull
@@ -1378,7 +1342,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @NonNull
@@ -1387,7 +1350,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @NonNull
@@ -1396,7 +1358,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public int getMin() {
@@ -1404,7 +1365,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public int getMax() {
@@ -1412,7 +1372,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public int getValue() {
@@ -1420,7 +1379,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public boolean isValueSet() {
@@ -1428,7 +1386,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -1437,7 +1394,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -1446,7 +1402,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -1455,7 +1410,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -1464,7 +1418,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -1473,7 +1426,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -1482,7 +1434,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -1491,7 +1442,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public int getLayoutDirection() {
@@ -1558,17 +1508,14 @@
         private boolean mTitleActionLoading;
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public static final int TYPE_TIMESTAMP = 0;
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public static final int TYPE_ICON = 1;
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public static final int TYPE_ACTION = 2;
@@ -1873,7 +1820,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -1882,7 +1828,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public boolean isEndOfSection() {
@@ -1890,7 +1835,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public boolean hasEndActionOrToggle() {
@@ -1898,7 +1842,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public boolean hasEndImage() {
@@ -1906,7 +1849,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public boolean hasDefaultToggle() {
@@ -1914,7 +1856,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public boolean hasTimestamp() {
@@ -1922,7 +1863,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public long getTimeStamp() {
@@ -1930,7 +1870,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public boolean isTitleItemLoading() {
@@ -1938,7 +1877,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public int getTitleImageMode() {
@@ -1946,7 +1884,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -1955,7 +1892,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -1964,7 +1900,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -1973,7 +1908,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -1982,7 +1916,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public boolean isTitleLoading() {
@@ -1990,7 +1923,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -1999,7 +1931,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public boolean isSubtitleLoading() {
@@ -2007,7 +1938,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -2016,7 +1946,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public int getLayoutDirection() {
@@ -2024,7 +1953,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @NonNull
@@ -2033,7 +1961,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @NonNull
@@ -2042,7 +1969,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @NonNull
@@ -2051,7 +1977,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public boolean isTitleActionLoading() {
@@ -2103,7 +2028,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY_GROUP_PREFIX)
         public HeaderBuilder(@NonNull final Uri uri) {
@@ -2227,7 +2151,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -2236,7 +2159,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -2245,7 +2167,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public boolean isTitleLoading() {
@@ -2253,7 +2174,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -2262,7 +2182,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public boolean isSubtitleLoading() {
@@ -2270,7 +2189,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -2279,7 +2197,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public boolean isSummaryLoading() {
@@ -2287,7 +2204,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -2296,7 +2212,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Nullable
@@ -2305,7 +2220,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         public int getLayoutDirection() {
diff --git a/slice/slice-builders/src/main/java/androidx/slice/builders/MessagingSliceBuilder.java b/slice/slice-builders/src/main/java/androidx/slice/builders/MessagingSliceBuilder.java
index e91c43f..4041d50 100644
--- a/slice/slice-builders/src/main/java/androidx/slice/builders/MessagingSliceBuilder.java
+++ b/slice/slice-builders/src/main/java/androidx/slice/builders/MessagingSliceBuilder.java
@@ -38,7 +38,6 @@
 
 /**
  * Builder to construct slice content in a messaging format.
- * @hide
  */
 @RestrictTo(LIBRARY_GROUP_PREFIX)
 @RequiresApi(19)
@@ -83,7 +82,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     @Override
diff --git a/slice/slice-builders/src/main/java/androidx/slice/builders/SelectionBuilder.java b/slice/slice-builders/src/main/java/androidx/slice/builders/SelectionBuilder.java
index be06a6b..4e5550a 100644
--- a/slice/slice-builders/src/main/java/androidx/slice/builders/SelectionBuilder.java
+++ b/slice/slice-builders/src/main/java/androidx/slice/builders/SelectionBuilder.java
@@ -180,7 +180,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public List<Pair<String, CharSequence>> getOptions() {
@@ -188,7 +187,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public SliceAction getPrimaryAction() {
@@ -196,7 +194,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public PendingIntent getInputAction() {
@@ -204,7 +201,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public String getSelectedOption() {
@@ -212,7 +208,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public CharSequence getTitle() {
@@ -220,7 +215,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public CharSequence getSubtitle() {
@@ -228,7 +222,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public CharSequence getContentDescription() {
@@ -236,7 +229,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public int getLayoutDirection() {
@@ -244,7 +236,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public void check() {
diff --git a/slice/slice-builders/src/main/java/androidx/slice/builders/SliceAction.java b/slice/slice-builders/src/main/java/androidx/slice/builders/SliceAction.java
index 0109be7..64263dd 100644
--- a/slice/slice-builders/src/main/java/androidx/slice/builders/SliceAction.java
+++ b/slice/slice-builders/src/main/java/androidx/slice/builders/SliceAction.java
@@ -43,7 +43,6 @@
     private final SliceActionImpl mSliceAction;
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     @RequiresApi(23)
@@ -53,7 +52,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     @RequiresApi(23)
@@ -63,7 +61,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     @RequiresApi(23)
@@ -79,7 +76,6 @@
      * @param actionIcon the icon to display for this action.
      * @param actionTitle the title for this action, also used for content description if one hasn't
      *                    been set via {@link #setContentDescription(CharSequence)}.
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public SliceAction(@NonNull PendingIntent action, @NonNull IconCompat actionIcon,
@@ -103,7 +99,6 @@
      * @see ListBuilder#ICON_IMAGE
      * @see ListBuilder#SMALL_IMAGE
      * @see ListBuilder#LARGE_IMAGE
-     * @hide
      */
     @RestrictTo(LIBRARY_GROUP)
     public SliceAction(@NonNull PendingIntent action, @NonNull IconCompat actionIcon,
@@ -120,7 +115,6 @@
      * @param actionTitle the title for this toggle, also used for content description if one hasn't
      *                    been set via {@link #setContentDescription(CharSequence)}.
      * @param isChecked the state of the toggle.
-     * @hide
      */
     @RestrictTo(LIBRARY_GROUP)
     public SliceAction(@NonNull PendingIntent action, @NonNull IconCompat actionIcon,
@@ -135,7 +129,6 @@
      * @param actionTitle the title for this toggle, also used for content description if one hasn't
      *                    been set via {@link #setContentDescription(CharSequence)}.
      * @param isChecked the state of the toggle.
-     * @hide
      */
     @RestrictTo(LIBRARY_GROUP)
     public SliceAction(@NonNull PendingIntent action, @NonNull CharSequence actionTitle,
@@ -150,7 +143,6 @@
      * @param actionTitle    the timestamp for this date or time picker.
      * @param dateTimeMillis the default state of the date or time picker.
      * @param isDatePicker   if it is a date picker, as opposed to a time picker.
-     * @hide
      */
     @RestrictTo(LIBRARY_GROUP)
     public SliceAction(@NonNull PendingIntent action, @NonNull CharSequence actionTitle,
@@ -203,8 +195,8 @@
      * @param action         the pending intent to invoke for this picker.
      * @param actionTitle    the timestamp title for this picker.
      * @param dateTimeMillis the default state of the date picker.
-     * @hide
      */
+    @RestrictTo(LIBRARY)
     @NonNull
     public static SliceAction createDatePicker(@NonNull PendingIntent action,
             @NonNull CharSequence actionTitle, long dateTimeMillis) {
@@ -218,8 +210,8 @@
      * @param action         the pending intent to invoke for this picker.
      * @param actionTitle    the timestamp title for this picker.
      * @param dateTimeMillis the default state of the time picker.
-     * @hide
      */
+    @RestrictTo(LIBRARY)
     @NonNull
     public static SliceAction createTimePicker(@NonNull PendingIntent action,
             @NonNull CharSequence actionTitle, long dateTimeMillis) {
@@ -465,7 +457,6 @@
      * @param builder this should be a new builder that has any additional hints the action might
      *                need.
      * @return the slice representation of this action.
-     * @hide
      */
     @RestrictTo(LIBRARY)
     @NonNull
@@ -474,7 +465,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     @NonNull
@@ -484,7 +474,6 @@
 
     /**
      * @param builder the parent slice builder that contains the primary action.
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public void setPrimaryAction(@NonNull Slice.Builder builder) {
diff --git a/slice/slice-builders/src/main/java/androidx/slice/builders/TemplateSliceBuilder.java b/slice/slice-builders/src/main/java/androidx/slice/builders/TemplateSliceBuilder.java
index 12d7b07..07accb6 100644
--- a/slice/slice-builders/src/main/java/androidx/slice/builders/TemplateSliceBuilder.java
+++ b/slice/slice-builders/src/main/java/androidx/slice/builders/TemplateSliceBuilder.java
@@ -51,7 +51,6 @@
     private List<SliceSpec> mSpecs;
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     protected TemplateSliceBuilder(TemplateBuilderImpl impl) {
@@ -62,7 +61,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public TemplateSliceBuilder(Context context, Uri uri) {
@@ -85,7 +83,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     protected Slice.Builder getBuilder() {
@@ -93,13 +90,11 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     abstract void setImpl(TemplateBuilderImpl impl);
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     protected TemplateBuilderImpl selectImpl() {
@@ -107,7 +102,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     protected boolean checkCompatible(SliceSpec candidate) {
@@ -129,7 +123,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     protected Clock getClock() {
@@ -141,7 +134,6 @@
 
     /**
      * This is for typing, to clean up the code.
-     * @hide
      */
     @RestrictTo(LIBRARY)
     @SuppressWarnings("unchecked")
diff --git a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/GridRowBuilderListV1Impl.java b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/GridRowBuilderListV1Impl.java
index 184cd4e..ec399bc 100644
--- a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/GridRowBuilderListV1Impl.java
+++ b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/GridRowBuilderListV1Impl.java
@@ -42,7 +42,6 @@
 import java.util.List;
 
 /**
- * @hide
  */
 @RestrictTo(LIBRARY)
 @RequiresApi(19)
@@ -229,7 +228,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @Override
diff --git a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/ListBuilder.java b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/ListBuilder.java
index de5bf68..8718ac9 100644
--- a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/ListBuilder.java
+++ b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/ListBuilder.java
@@ -39,7 +39,6 @@
 import java.util.Set;
 
 /**
- * @hide
  */
 @RestrictTo(LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/ListBuilderBasicImpl.java b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/ListBuilderBasicImpl.java
index c137500..faf5588 100644
--- a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/ListBuilderBasicImpl.java
+++ b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/ListBuilderBasicImpl.java
@@ -57,7 +57,6 @@
 import java.util.Set;
 
 /**
- * @hide
  */
 @RestrictTo(LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/ListBuilderImpl.java b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/ListBuilderImpl.java
index 1c34c39..111bd0b 100644
--- a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/ListBuilderImpl.java
+++ b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/ListBuilderImpl.java
@@ -82,7 +82,6 @@
 import java.util.Set;
 
 /**
- * @hide
  */
 @RestrictTo(LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/MessagingBasicImpl.java b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/MessagingBasicImpl.java
index cb5d540..239e6fb 100644
--- a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/MessagingBasicImpl.java
+++ b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/MessagingBasicImpl.java
@@ -34,7 +34,6 @@
 import androidx.slice.SliceSpec;
 
 /**
- * @hide
  */
 @RestrictTo(LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/MessagingBuilder.java b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/MessagingBuilder.java
index 4285eae..03f48ce 100644
--- a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/MessagingBuilder.java
+++ b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/MessagingBuilder.java
@@ -24,7 +24,6 @@
 import androidx.annotation.RestrictTo;
 
 /**
- * @hide
  */
 @RestrictTo(LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/MessagingListV1Impl.java b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/MessagingListV1Impl.java
index 93f5989..8dacf8f 100644
--- a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/MessagingListV1Impl.java
+++ b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/MessagingListV1Impl.java
@@ -30,7 +30,6 @@
 import androidx.slice.SliceSpec;
 
 /**
- * @hide
  */
 @RestrictTo(LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/MessagingV1Impl.java b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/MessagingV1Impl.java
index 25cfecb..d913d79 100644
--- a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/MessagingV1Impl.java
+++ b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/MessagingV1Impl.java
@@ -28,7 +28,6 @@
 import androidx.slice.SliceSpec;
 
 /**
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/SelectionBuilderBasicImpl.java b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/SelectionBuilderBasicImpl.java
index 1def00e..1c341f1 100644
--- a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/SelectionBuilderBasicImpl.java
+++ b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/SelectionBuilderBasicImpl.java
@@ -30,7 +30,6 @@
 import androidx.slice.builders.SelectionBuilder;
 
 /**
- * @hide
  */
 @RestrictTo(LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/SelectionBuilderImpl.java b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/SelectionBuilderImpl.java
index 5143668..f25d0a6 100644
--- a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/SelectionBuilderImpl.java
+++ b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/SelectionBuilderImpl.java
@@ -25,7 +25,6 @@
 import androidx.slice.builders.SelectionBuilder;
 
 /**
- * @hide
  */
 @RestrictTo(LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/SelectionBuilderListV2Impl.java b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/SelectionBuilderListV2Impl.java
index af4d92e..0c25ad0 100644
--- a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/SelectionBuilderListV2Impl.java
+++ b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/SelectionBuilderListV2Impl.java
@@ -38,7 +38,6 @@
 import java.util.List;
 
 /**
- * @hide
  */
 @RestrictTo(LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java
index 9a377d2..8cb26f66 100644
--- a/slice/slice-builders/src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java
+++ b/slice/slice-builders/src/main/java/androidx/slice/builders/impl/TemplateBuilderImpl.java
@@ -40,7 +40,6 @@
 import java.util.ArrayList;
 
 /**
- * @hide
  */
 @RestrictTo(LIBRARY)
 @RequiresApi(19)
@@ -74,7 +73,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public Slice.Builder getBuilder() {
@@ -82,7 +80,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public Slice.Builder createChildBuilder() {
@@ -90,13 +87,11 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public abstract void apply(@NonNull Slice.Builder builder);
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public Clock getClock() {
@@ -104,7 +99,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public SliceSpec getSpec() {
@@ -112,7 +106,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     @NonNull
diff --git a/slice/slice-core/lint-baseline.xml b/slice/slice-core/lint-baseline.xml
index 528ca08..f6b771e 100644
--- a/slice/slice-core/lint-baseline.xml
+++ b/slice/slice-core/lint-baseline.xml
@@ -1,680 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<issues format="6" by="lint 8.1.0-alpha07" type="baseline" client="gradle" dependencies="false" name="AGP (8.0.0-beta03)" variant="all" version="8.1.0-alpha07">
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="class ArrayUtils {"
-        errorLine2="      ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/ArrayUtils.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public interface Clock {"
-        errorLine2="                 ~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Clock.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class CompatPermissionManager {"
-        errorLine2="             ~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/compat/CompatPermissionManager.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class CompatPinnedList {"
-        errorLine2="             ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/compat/CompatPinnedList.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class CornerDrawable extends InsetDrawable {"
-        errorLine2="             ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/CornerDrawable.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static final String SUBTYPE_RANGE_MODE = &quot;range_mode&quot;;"
-        errorLine2="                               ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public @interface SliceHint { }"
-        errorLine2="                      ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    Slice(ArrayList&lt;SliceItem> items, @SliceHint String[] hints, Uri uri,"
-        errorLine2="    ~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public Slice() {"
-        errorLine2="           ~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public Slice(@NonNull Bundle in) {"
-        errorLine2="           ~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public @NonNull Bundle toBundle() {"
-        errorLine2="                           ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public @Nullable SliceSpec getSpec() {"
-        errorLine2="                               ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public @NonNull SliceItem[] getItemArray() {"
-        errorLine2="                                ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public @NonNull @SliceHint String[] getHintArray() {"
-        errorLine2="                                        ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public boolean hasHint(@NonNull @SliceHint String hint) {"
-        errorLine2="                   ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void onPreParceling(boolean isStream) {"
-        errorLine2="                ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void onPostParceling() {"
-        errorLine2="                ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static class Builder {"
-        errorLine2="                        ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public @NonNull Builder setSpec(@Nullable SliceSpec spec) {"
-        errorLine2="                                ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public @NonNull Builder addRemoteInput(@NonNull RemoteInput remoteInput,"
-        errorLine2="                                ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public @NonNull Builder addRemoteInput(@NonNull RemoteInput remoteInput,"
-        errorLine2="                                ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public @NonNull Builder addItem(@NonNull SliceItem item) {"
-        errorLine2="                                ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public String toString(@NonNull String indent) {"
-        errorLine2="                  ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static void appendHints(@NonNull StringBuilder sb, @Nullable String[] hints) {"
-        errorLine2="                       ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static Slice bindSlice(@NonNull Context context, @NonNull Uri uri,"
-        errorLine2="                        ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    static boolean isValidIcon(IconCompat icon) {"
-        errorLine2="                   ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/Slice.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class SliceActionImpl implements SliceAction {"
-        errorLine2="             ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/core/SliceActionImpl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceActionImpl(@NonNull PendingIntent action, @NonNull CharSequence actionTitle,"
-        errorLine2="           ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/core/SliceActionImpl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceActionImpl(@NonNull SliceItem slice) {"
-        errorLine2="           ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/core/SliceActionImpl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceItem getActionItem() {"
-        errorLine2="                     ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/core/SliceActionImpl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static int parseImageMode(@NonNull SliceItem iconItem) {"
-        errorLine2="                      ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/core/SliceActionImpl.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static Set&lt;androidx.slice.SliceSpec> wrap("
-        errorLine2="                                                ~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceConvert.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class SliceHints {"
-        errorLine2="             ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/core/SliceHints.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public @interface SliceType {"
-        errorLine2="                      ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceItem.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    @Slice.SliceHint String[] mHints = Slice.NO_HINTS;"
-        errorLine2="                              ~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceItem.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceItem(Object obj, @NonNull @SliceType String format, @Nullable String subType,"
-        errorLine2="           ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceItem.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceItem(Object obj, @NonNull @SliceType String format, @Nullable String subType,"
-        errorLine2="           ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceItem.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceItem() {"
-        errorLine2="           ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceItem.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceItem(@NonNull PendingIntent intent, @Nullable Slice slice,"
-        errorLine2="           ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceItem.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceItem(@NonNull ActionHandler action, @Nullable Slice slice,"
-        errorLine2="           ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceItem.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public @NonNull @Slice.SliceHint String[] getHintArray() {"
-        errorLine2="                                              ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceItem.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void addHint(@Slice.SliceHint @NonNull String hint) {"
-        errorLine2="                ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceItem.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public CharSequence getSanitizedText() {"
-        errorLine2="                        ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceItem.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public boolean fireActionInternal(@Nullable Context context, @Nullable Intent i)"
-        errorLine2="                   ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceItem.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public RemoteInput getRemoteInput() {"
-        errorLine2="                       ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceItem.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceItem(@NonNull Bundle in) {"
-        errorLine2="           ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceItem.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public Bundle toBundle() {"
-        errorLine2="                  ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceItem.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public boolean hasHints(@Nullable @Slice.SliceHint String[] hints) {"
-        errorLine2="                   ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceItem.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public boolean hasAnyHints(@Nullable @Slice.SliceHint String... hints) {"
-        errorLine2="                   ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceItem.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static String typeToString(@NonNull String format) {"
-        errorLine2="                         ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceItem.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public String toString(@NonNull String indent) {"
-        errorLine2="                  ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceItem.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public interface ActionHandler {"
-        errorLine2="                     ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceItem.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class SliceItemHolder implements VersionedParcelable {"
-        errorLine2="             ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceItemHolder.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    SliceManager() {"
-        errorLine2="    ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceManager.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public abstract @NonNull Set&lt;SliceSpec> getPinnedSpecs(@NonNull Uri uri);"
-        errorLine2="                                            ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceManager.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="class SliceManagerCompat extends SliceManager {"
-        errorLine2="      ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceManagerCompat.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="class SliceManagerWrapper extends SliceManager {"
-        errorLine2="      ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceManagerWrapper.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class SlicePermissionActivity extends AppCompatActivity implements OnClickListener,"
-        errorLine2="             ~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/compat/SlicePermissionActivity.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public Object getWrapper() {"
-        errorLine2="                  ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceProvider.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected CompatPermissionManager onCreatePermissionManager("
-        errorLine2="                                      ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceProvider.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public Slice createPermissionSlice(@NonNull Uri sliceUri,"
-        errorLine2="                 ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceProvider.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void handleSlicePinned(@NonNull Uri sliceUri) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceProvider.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void handleSliceUnpinned(@NonNull Uri sliceUri) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceProvider.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void validateIncomingAuthority(@Nullable String authority) throws SecurityException {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceProvider.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static void setSpecs(@Nullable Set&lt;SliceSpec> specs) {"
-        errorLine2="                       ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceProvider.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static Set&lt;SliceSpec> getCurrentSpecs() {"
-        errorLine2="                                 ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceProvider.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static void setClock(@Nullable Clock clock) {"
-        errorLine2="                       ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceProvider.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static Clock getClock() {"
-        errorLine2="                        ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceProvider.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class SliceProviderCompat {"
-        errorLine2="             ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/compat/SliceProviderCompat.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class SliceProviderWrapperContainer {"
-        errorLine2="             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/compat/SliceProviderWrapperContainer.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class SliceQuery {"
-        errorLine2="             ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/core/SliceQuery.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public final class SliceSpec implements VersionedParcelable {"
-        errorLine2="                   ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceSpec.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceSpec() {"
-        errorLine2="           ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceSpec.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class SliceSpecs {"
-        errorLine2="             ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceSpecs.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class SystemClock implements Clock {"
-        errorLine2="             ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SystemClock.java"/>
-    </issue>
+<issues format="6" by="lint 8.1.0-beta02" type="baseline" client="gradle" dependencies="false" name="AGP (8.1.0-beta02)" variant="all" version="8.1.0-beta02">
 
     <issue
         id="BanUncheckedReflection"
diff --git a/slice/slice-core/src/main/java/androidx/slice/ArrayUtils.java b/slice/slice-core/src/main/java/androidx/slice/ArrayUtils.java
index a020ad3..e5dd970 100644
--- a/slice/slice-core/src/main/java/androidx/slice/ArrayUtils.java
+++ b/slice/slice-core/src/main/java/androidx/slice/ArrayUtils.java
@@ -24,7 +24,6 @@
 import java.lang.reflect.Array;
 
 /**
- * @hide
  */
 @RestrictTo(Scope.LIBRARY_GROUP)
 @RequiresApi(19)
diff --git a/slice/slice-core/src/main/java/androidx/slice/Clock.java b/slice/slice-core/src/main/java/androidx/slice/Clock.java
index a1b758e..f68560c 100644
--- a/slice/slice-core/src/main/java/androidx/slice/Clock.java
+++ b/slice/slice-core/src/main/java/androidx/slice/Clock.java
@@ -22,7 +22,6 @@
 import androidx.annotation.RestrictTo;
 
 /**
- * @hide
  */
 @RestrictTo(LIBRARY_GROUP_PREFIX)
 @RequiresApi(19)
diff --git a/slice/slice-core/src/main/java/androidx/slice/CornerDrawable.java b/slice/slice-core/src/main/java/androidx/slice/CornerDrawable.java
index 5afbe40..9ccb915 100644
--- a/slice/slice-core/src/main/java/androidx/slice/CornerDrawable.java
+++ b/slice/slice-core/src/main/java/androidx/slice/CornerDrawable.java
@@ -30,7 +30,6 @@
  * A wrapper for Drawables that uses a path to add mask for corners around the drawable,
  * to match the radius of the underlying shape.
  *
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public class CornerDrawable extends InsetDrawable {
diff --git a/slice/slice-core/src/main/java/androidx/slice/Slice.java b/slice/slice-core/src/main/java/androidx/slice/Slice.java
index d7cf29b..8044c1e 100644
--- a/slice/slice-core/src/main/java/androidx/slice/Slice.java
+++ b/slice/slice-core/src/main/java/androidx/slice/Slice.java
@@ -51,7 +51,6 @@
 import static androidx.slice.core.SliceHints.HINT_SELECTION_OPTION;
 import static androidx.slice.core.SliceHints.HINT_SHOW_LABEL;
 
-import android.annotation.SuppressLint;
 import android.app.PendingIntent;
 import android.app.RemoteInput;
 import android.app.slice.SliceManager;
@@ -105,7 +104,6 @@
      * Subtype to tag an item as representing the progress bar mode for a
      * {@link android.app.slice.Slice#SUBTYPE_RANGE}
      *
-     * @hide
      */
     @RestrictTo(Scope.LIBRARY_GROUP)
     public static final String SUBTYPE_RANGE_MODE = "range_mode";
@@ -120,7 +118,6 @@
     static final SliceItem[] NO_ITEMS = new SliceItem[0];
 
     /**
-     * @hide
      */
     @RestrictTo(Scope.LIBRARY)
     @StringDef({
@@ -164,7 +161,6 @@
     String mUri = null;
 
     /**
-     * @hide
      */
     @RestrictTo(Scope.LIBRARY)
     Slice(ArrayList<SliceItem> items, @SliceHint String[] hints, Uri uri,
@@ -177,14 +173,12 @@
 
     /**
      * Used for VersionedParcelable
-     * @hide
      */
     @RestrictTo(Scope.LIBRARY)
     public Slice() {
     }
 
     /**
-     * @hide
      */
     @RestrictTo(Scope.LIBRARY)
     @SuppressWarnings("deprecation")
@@ -204,7 +198,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(Scope.LIBRARY)
     public @NonNull Bundle toBundle() {
@@ -225,7 +218,6 @@
 
     /**
      * @return The spec for this slice
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
     public @Nullable SliceSpec getSpec() {
@@ -247,7 +239,6 @@
     }
 
     /**
-     * @hide
      * @return
      */
     @RestrictTo(LIBRARY)
@@ -263,7 +254,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public @NonNull @SliceHint String[] getHintArray() {
@@ -271,7 +261,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(Scope.LIBRARY_GROUP_PREFIX)
     public boolean hasHint(@NonNull @SliceHint String hint) {
@@ -279,7 +268,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
     @Override
@@ -287,7 +275,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
     @Override
@@ -304,7 +291,6 @@
 
     /**
      * A Builder used to construct {@link Slice}s
-     * @hide
      */
     @RestrictTo(Scope.LIBRARY_GROUP_PREFIX)
     public static class Builder {
@@ -339,7 +325,6 @@
 
         /**
          * Add the spec for this slice.
-         * @hide
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
         public @NonNull Builder setSpec(@Nullable SliceSpec spec) {
@@ -462,7 +447,6 @@
          * Add remote input to the slice being constructed
          * @param subType Optional template-specific type information
          * @see SliceItem#getSubType()
-         * @hide
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
         public @NonNull Builder addRemoteInput(@NonNull RemoteInput remoteInput,
@@ -475,7 +459,6 @@
          * Add remote input to the slice being constructed
          * @param subType Optional template-specific type information
          * @see SliceItem#getSubType()
-         * @hide
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
         public @NonNull Builder addRemoteInput(@NonNull RemoteInput remoteInput,
@@ -553,7 +536,6 @@
 
         /**
          * Add a SliceItem to the slice being constructed.
-         * @hide
          */
         @RestrictTo(Scope.LIBRARY_GROUP)
         public @NonNull Builder addItem(@NonNull SliceItem item) {
@@ -580,7 +562,6 @@
 
     /**
      * @return A string representation of this slice.
-     * @hide
      */
     @NonNull
     @RestrictTo(Scope.LIBRARY)
@@ -606,7 +587,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(Scope.LIBRARY)
     public static void appendHints(@NonNull StringBuilder sb, @Nullable String[] hints) {
@@ -628,7 +608,6 @@
      * @param context Context to be used.
      * @param uri The URI to a slice provider
      * @return The Slice provided by the app or null if none is given.
-     * @hide
      * @see Slice
      */
     @RestrictTo(Scope.LIBRARY_GROUP_PREFIX)
@@ -651,7 +630,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     static boolean isValidIcon(IconCompat icon) {
diff --git a/slice/slice-core/src/main/java/androidx/slice/SliceConvert.java b/slice/slice-core/src/main/java/androidx/slice/SliceConvert.java
index 71e9c23..3711e65 100644
--- a/slice/slice-core/src/main/java/androidx/slice/SliceConvert.java
+++ b/slice/slice-core/src/main/java/androidx/slice/SliceConvert.java
@@ -169,7 +169,6 @@
     }
 
     /**
-     * @hide
      */
     @NonNull
     @RestrictTo(RestrictTo.Scope.LIBRARY)
diff --git a/slice/slice-core/src/main/java/androidx/slice/SliceItem.java b/slice/slice-core/src/main/java/androidx/slice/SliceItem.java
index f9e12a3..c35fdef 100644
--- a/slice/slice-core/src/main/java/androidx/slice/SliceItem.java
+++ b/slice/slice-core/src/main/java/androidx/slice/SliceItem.java
@@ -100,7 +100,6 @@
     private static final String SLICE_CONTENT_SENSITIVE = "sensitive";
 
     /**
-     * @hide
      */
     @RestrictTo(Scope.LIBRARY)
     @StringDef({FORMAT_SLICE, FORMAT_TEXT, FORMAT_IMAGE, FORMAT_ACTION, FORMAT_INT,
@@ -110,7 +109,6 @@
     }
 
     /**
-     * @hide
      */
     @NonNull
     @RestrictTo(Scope.LIBRARY)
@@ -137,7 +135,6 @@
     SliceItemHolder mHolder;
 
     /**
-     * @hide
      */
     @SuppressWarnings("NullableProblems")
     @SuppressLint("UnknownNullness") // obj cannot be correctly annotated
@@ -151,7 +148,6 @@
     }
 
     /**
-     * @hide
      */
     @SuppressLint("UnknownNullness") // obj cannot be correctly annotated
     @RestrictTo(Scope.LIBRARY_GROUP)
@@ -162,14 +158,12 @@
 
     /**
      * Used by VersionedParcelable.
-     * @hide
      */
     @RestrictTo(Scope.LIBRARY_GROUP)
     public SliceItem() {
     }
 
     /**
-     * @hide
      */
     @RestrictTo(Scope.LIBRARY_GROUP)
     public SliceItem(@NonNull PendingIntent intent, @Nullable Slice slice,
@@ -179,7 +173,6 @@
     }
 
     /**
-     * @hide
      */
     @SuppressLint("LambdaLast")
     @RestrictTo(Scope.LIBRARY_GROUP)
@@ -199,7 +192,6 @@
     }
 
     /**
-     * @hide
      */
     @SuppressWarnings("unused")
     @RestrictTo(Scope.LIBRARY)
@@ -208,7 +200,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(Scope.LIBRARY_GROUP)
     public void addHint(@Slice.SliceHint @NonNull String hint) {
@@ -258,7 +249,6 @@
     }
 
     /**
-     * @hide
      * @return The text held by this {@link android.app.slice.SliceItem#FORMAT_TEXT} SliceItem with
      * ony spans that are unsupported by the androidx Slice renderer removed.
      */
@@ -314,7 +304,6 @@
     }
 
     /**
-     * @hide
      */
     @SuppressWarnings("unchecked")
     @RestrictTo(Scope.LIBRARY_GROUP_PREFIX)
@@ -334,7 +323,6 @@
     /**
      * @return The remote input held by this {@link android.app.slice.SliceItem#FORMAT_REMOTE_INPUT}
      * SliceItem
-     * @hide
      */
     @Nullable
     @RequiresApi(20)
@@ -383,7 +371,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(Scope.LIBRARY)
     public SliceItem(@NonNull Bundle in) {
@@ -394,7 +381,6 @@
     }
 
     /**
-     * @hide
      */
     @NonNull
     @RestrictTo(Scope.LIBRARY)
@@ -408,7 +394,6 @@
     }
 
     /**
-     * @hide
      */
     @SuppressWarnings("unused")
     @RestrictTo(Scope.LIBRARY)
@@ -423,7 +408,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(Scope.LIBRARY_GROUP)
     public boolean hasAnyHints(@Nullable @Slice.SliceHint String... hints) {
@@ -494,7 +478,6 @@
     }
 
     /**
-     * @hide
      */
     @NonNull
     @RestrictTo(Scope.LIBRARY)
@@ -529,7 +512,6 @@
 
     /**
      * @return A string representation of this slice item.
-     * @hide
      */
     @NonNull
     @RestrictTo(Scope.LIBRARY)
@@ -754,7 +736,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(Scope.LIBRARY_GROUP_PREFIX)
     public interface ActionHandler {
diff --git a/slice/slice-core/src/main/java/androidx/slice/SliceItemHolder.java b/slice/slice-core/src/main/java/androidx/slice/SliceItemHolder.java
index 1cdd23398..ab2ebba 100644
--- a/slice/slice-core/src/main/java/androidx/slice/SliceItemHolder.java
+++ b/slice/slice-core/src/main/java/androidx/slice/SliceItemHolder.java
@@ -45,7 +45,6 @@
 import java.util.ArrayList;
 
 /**
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @VersionedParcelize(allowSerialization = true, ignoreParcelables = true,
diff --git a/slice/slice-core/src/main/java/androidx/slice/SliceManager.java b/slice/slice-core/src/main/java/androidx/slice/SliceManager.java
index e0baa5e..390f09a 100644
--- a/slice/slice-core/src/main/java/androidx/slice/SliceManager.java
+++ b/slice/slice-core/src/main/java/androidx/slice/SliceManager.java
@@ -49,7 +49,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     SliceManager() {
@@ -62,7 +61,6 @@
      * into account all clients and returns only specs supported by all.
      * @see SliceSpec
      *
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     public abstract @NonNull Set<SliceSpec> getPinnedSpecs(@NonNull Uri uri);
diff --git a/slice/slice-core/src/main/java/androidx/slice/SliceManagerCompat.java b/slice/slice-core/src/main/java/androidx/slice/SliceManagerCompat.java
index 7399d29..549d939 100644
--- a/slice/slice-core/src/main/java/androidx/slice/SliceManagerCompat.java
+++ b/slice/slice-core/src/main/java/androidx/slice/SliceManagerCompat.java
@@ -29,7 +29,6 @@
 
 
 /**
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-core/src/main/java/androidx/slice/SliceManagerWrapper.java b/slice/slice-core/src/main/java/androidx/slice/SliceManagerWrapper.java
index 349dc92..d1bd08e 100644
--- a/slice/slice-core/src/main/java/androidx/slice/SliceManagerWrapper.java
+++ b/slice/slice-core/src/main/java/androidx/slice/SliceManagerWrapper.java
@@ -33,7 +33,6 @@
 import java.util.Set;
 
 /**
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @RequiresApi(api = 28)
diff --git a/slice/slice-core/src/main/java/androidx/slice/SliceProvider.java b/slice/slice-core/src/main/java/androidx/slice/SliceProvider.java
index 8a72034..9cd8ddc 100644
--- a/slice/slice-core/src/main/java/androidx/slice/SliceProvider.java
+++ b/slice/slice-core/src/main/java/androidx/slice/SliceProvider.java
@@ -191,7 +191,6 @@
     public abstract boolean onCreateSliceProvider();
 
     /**
-     * @hide
      */
     @Nullable
     @RestrictTo(RestrictTo.Scope.LIBRARY)
@@ -224,7 +223,6 @@
     }
 
     /**
-     * @hide
      * @param autoGrantPermissions
      */
     @NonNull
@@ -326,7 +324,6 @@
 
     /**
      * Generate a slice that contains a permission request.
-     * @hide
      */
     @NonNull
     @RestrictTo(RestrictTo.Scope.LIBRARY)
@@ -448,7 +445,6 @@
     public void onSliceUnpinned(@NonNull Uri sliceUri) {}
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @RequiresApi(19)
@@ -460,7 +456,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @RequiresApi(19)
@@ -520,7 +515,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void validateIncomingAuthority(@Nullable String authority) throws SecurityException {
@@ -603,7 +597,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @RequiresApi(19)
@@ -612,7 +605,6 @@
     }
 
     /**
-     * @hide
      */
     @Nullable
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
@@ -622,7 +614,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @RequiresApi(19)
@@ -631,7 +622,6 @@
     }
 
     /**
-     * @hide
      */
     @Nullable
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
diff --git a/slice/slice-core/src/main/java/androidx/slice/SliceSpec.java b/slice/slice-core/src/main/java/androidx/slice/SliceSpec.java
index c0aaebe..13bacd9 100644
--- a/slice/slice-core/src/main/java/androidx/slice/SliceSpec.java
+++ b/slice/slice-core/src/main/java/androidx/slice/SliceSpec.java
@@ -39,7 +39,6 @@
  * {@link SliceSpec} that one of the supported {@link SliceSpec}s provided
  * {@link #canRender}.
  *
- * @hide
  * @see Slice
  * @see SliceProvider#onBindSlice(Uri)
  */
@@ -55,7 +54,6 @@
 
     /**
      * Used for VersionedParcelable
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public SliceSpec() {
diff --git a/slice/slice-core/src/main/java/androidx/slice/SliceSpecs.java b/slice/slice-core/src/main/java/androidx/slice/SliceSpecs.java
index 0374db9..436d24b 100644
--- a/slice/slice-core/src/main/java/androidx/slice/SliceSpecs.java
+++ b/slice/slice-core/src/main/java/androidx/slice/SliceSpecs.java
@@ -21,7 +21,6 @@
 
 /**
  * Constants for each of the slice specs
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
 @RequiresApi(19)
diff --git a/slice/slice-core/src/main/java/androidx/slice/SystemClock.java b/slice/slice-core/src/main/java/androidx/slice/SystemClock.java
index 4b740f3..888d3e4 100644
--- a/slice/slice-core/src/main/java/androidx/slice/SystemClock.java
+++ b/slice/slice-core/src/main/java/androidx/slice/SystemClock.java
@@ -22,7 +22,6 @@
 import androidx.annotation.RestrictTo;
 
 /**
- * @hide
  */
 @RestrictTo(LIBRARY_GROUP_PREFIX)
 @RequiresApi(19)
diff --git a/slice/slice-core/src/main/java/androidx/slice/compat/CompatPermissionManager.java b/slice/slice-core/src/main/java/androidx/slice/compat/CompatPermissionManager.java
index 52259f6..dc700dd 100644
--- a/slice/slice-core/src/main/java/androidx/slice/compat/CompatPermissionManager.java
+++ b/slice/slice-core/src/main/java/androidx/slice/compat/CompatPermissionManager.java
@@ -37,7 +37,6 @@
 import java.util.Set;
 
 /**
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 @RequiresApi(19)
diff --git a/slice/slice-core/src/main/java/androidx/slice/compat/CompatPinnedList.java b/slice/slice-core/src/main/java/androidx/slice/compat/CompatPinnedList.java
index 876ec00..f9de140 100644
--- a/slice/slice-core/src/main/java/androidx/slice/compat/CompatPinnedList.java
+++ b/slice/slice-core/src/main/java/androidx/slice/compat/CompatPinnedList.java
@@ -38,7 +38,6 @@
 /**
  * Tracks the current packages requesting pinning of any given slice. It will clear the
  * list after a reboot since the packages are no longer requesting pinning.
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-core/src/main/java/androidx/slice/compat/SlicePermissionActivity.java b/slice/slice-core/src/main/java/androidx/slice/compat/SlicePermissionActivity.java
index af0d22d..9d704cc 100644
--- a/slice/slice-core/src/main/java/androidx/slice/compat/SlicePermissionActivity.java
+++ b/slice/slice-core/src/main/java/androidx/slice/compat/SlicePermissionActivity.java
@@ -40,7 +40,6 @@
 
 /**
  * Dialog that grants slice permissions for an app.
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-core/src/main/java/androidx/slice/compat/SliceProviderCompat.java b/slice/slice-core/src/main/java/androidx/slice/compat/SliceProviderCompat.java
index f2ba233..a03e977 100644
--- a/slice/slice-core/src/main/java/androidx/slice/compat/SliceProviderCompat.java
+++ b/slice/slice-core/src/main/java/androidx/slice/compat/SliceProviderCompat.java
@@ -64,7 +64,6 @@
 import java.util.Set;
 
 /**
- * @hide
  */
 @RestrictTo(Scope.LIBRARY_GROUP)
 @RequiresApi(19)
diff --git a/slice/slice-core/src/main/java/androidx/slice/compat/SliceProviderWrapperContainer.java b/slice/slice-core/src/main/java/androidx/slice/compat/SliceProviderWrapperContainer.java
index c4e6120..b24671f 100644
--- a/slice/slice-core/src/main/java/androidx/slice/compat/SliceProviderWrapperContainer.java
+++ b/slice/slice-core/src/main/java/androidx/slice/compat/SliceProviderWrapperContainer.java
@@ -41,7 +41,6 @@
 import java.util.Set;
 
 /**
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 public class SliceProviderWrapperContainer {
diff --git a/slice/slice-core/src/main/java/androidx/slice/core/SliceActionImpl.java b/slice/slice-core/src/main/java/androidx/slice/core/SliceActionImpl.java
index e46617b..503cdbf 100644
--- a/slice/slice-core/src/main/java/androidx/slice/core/SliceActionImpl.java
+++ b/slice/slice-core/src/main/java/androidx/slice/core/SliceActionImpl.java
@@ -31,6 +31,7 @@
 import static android.app.slice.SliceItem.FORMAT_LONG;
 import static android.app.slice.SliceItem.FORMAT_TEXT;
 
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
 import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP;
 import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;
 import static androidx.slice.core.SliceHints.ACTION_WITH_LABEL;
@@ -60,7 +61,6 @@
 
 /**
  * Class representing an action, supports tappable icons, custom toggle icons, and default toggles.
- * @hide
  */
 @RestrictTo(LIBRARY_GROUP_PREFIX)
 @RequiresApi(19)
@@ -119,8 +119,8 @@
      * @param actionTitle    the timestamp title for this picker.
      * @param dateTimeMillis the default state of the date or time picker.
      * @param isDatePicker   if it is a date picker, as opposed to a time picker.
-     * @hide
      */
+    @RestrictTo(LIBRARY)
     public SliceActionImpl(@NonNull PendingIntent action, @NonNull CharSequence actionTitle,
             long dateTimeMillis, boolean isDatePicker) {
         mAction = action;
@@ -194,7 +194,6 @@
      *
      * @param slice the slice item to construct the action out of.
      *
-     * @hide
      */
     @RestrictTo(LIBRARY_GROUP)
     @SuppressLint("InlinedApi")
@@ -314,7 +313,6 @@
     }
 
     /**
-     * @hide
      */
     @Nullable
     @RestrictTo(LIBRARY_GROUP_PREFIX)
@@ -498,7 +496,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY_GROUP_PREFIX)
     public static int parseImageMode(@NonNull SliceItem iconItem) {
diff --git a/slice/slice-core/src/main/java/androidx/slice/core/SliceHints.java b/slice/slice-core/src/main/java/androidx/slice/core/SliceHints.java
index 85d312a..e08441b 100644
--- a/slice/slice-core/src/main/java/androidx/slice/core/SliceHints.java
+++ b/slice/slice-core/src/main/java/androidx/slice/core/SliceHints.java
@@ -28,7 +28,6 @@
 
 /**
  * Temporary class to contain hint constants for slices to be used.
- * @hide
  */
 @RestrictTo(LIBRARY_GROUP_PREFIX)
 @RequiresApi(19)
diff --git a/slice/slice-core/src/main/java/androidx/slice/core/SliceQuery.java b/slice/slice-core/src/main/java/androidx/slice/core/SliceQuery.java
index 684de91..3111e1b 100644
--- a/slice/slice-core/src/main/java/androidx/slice/core/SliceQuery.java
+++ b/slice/slice-core/src/main/java/androidx/slice/core/SliceQuery.java
@@ -37,7 +37,6 @@
 
 /**
  * Utilities for finding content within a Slice.
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
 @RequiresApi(19)
diff --git a/slice/slice-remotecallback/lint-baseline.xml b/slice/slice-remotecallback/lint-baseline.xml
deleted file mode 100644
index 5f18321..0000000
--- a/slice/slice-remotecallback/lint-baseline.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<issues format="6" by="lint 8.1.0-alpha07" type="baseline" client="gradle" dependencies="false" name="AGP (8.0.0-beta03)" variant="all" version="8.1.0-alpha07">
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public RemoteCallback toRemoteCallback(@NonNull Class&lt;T> cls, @NonNull Context context,"
-        errorLine2="                          ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/remotecallback/RemoteSliceProvider.java"/>
-    </issue>
-
-</issues>
diff --git a/slice/slice-remotecallback/src/main/java/androidx/slice/remotecallback/RemoteSliceProvider.java b/slice/slice-remotecallback/src/main/java/androidx/slice/remotecallback/RemoteSliceProvider.java
index c8ca571..be81d93 100644
--- a/slice/slice-remotecallback/src/main/java/androidx/slice/remotecallback/RemoteSliceProvider.java
+++ b/slice/slice-remotecallback/src/main/java/androidx/slice/remotecallback/RemoteSliceProvider.java
@@ -77,7 +77,6 @@
     /**
      * Note: Only visible because metalava doesn't realize this is hidden. Will properly
      * disappear when we have support for androidx-level @RestrictTo.
-     * @hide
      */
     @NonNull
     @Override
diff --git a/slice/slice-test/lint-baseline.xml b/slice/slice-test/lint-baseline.xml
index 59a7e74..9003689 100644
--- a/slice/slice-test/lint-baseline.xml
+++ b/slice/slice-test/lint-baseline.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<issues format="6" by="lint 8.0.0-alpha05" type="baseline" client="gradle" dependencies="false" name="AGP (8.0.0-alpha05)" variant="all" version="8.0.0-alpha05">
+<issues format="6" by="lint 8.1.0-beta02" type="baseline" client="gradle" dependencies="false" name="AGP (8.1.0-beta02)" variant="all" version="8.1.0-beta02">
 
     <issue
         id="UnspecifiedImmutableFlag"
diff --git a/slice/slice-view/api/current.txt b/slice/slice-view/api/current.txt
index 9ba9a2f..91918d9 100644
--- a/slice/slice-view/api/current.txt
+++ b/slice/slice-view/api/current.txt
@@ -152,8 +152,8 @@
     method public androidx.slice.widget.GridRowView getGridRowView();
     method public int getItemCount();
     method public androidx.slice.widget.RowView getRowView();
-    method public void onBindViewHolder(androidx.slice.widget.SliceAdapter.SliceViewHolder, int);
-    method public androidx.slice.widget.SliceAdapter.SliceViewHolder onCreateViewHolder(android.view.ViewGroup, int);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) public void onBindViewHolder(androidx.slice.widget.SliceAdapter.SliceViewHolder, int);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) public androidx.slice.widget.SliceAdapter.SliceViewHolder onCreateViewHolder(android.view.ViewGroup, int);
   }
 
   @RequiresApi(19) public abstract class SliceChildView extends android.widget.FrameLayout {
diff --git a/slice/slice-view/api/restricted_current.txt b/slice/slice-view/api/restricted_current.txt
index f46664b..9f3c43a 100644
--- a/slice/slice-view/api/restricted_current.txt
+++ b/slice/slice-view/api/restricted_current.txt
@@ -210,8 +210,8 @@
     method public androidx.slice.widget.GridRowView getGridRowView();
     method public int getItemCount();
     method public androidx.slice.widget.RowView getRowView();
-    method public void onBindViewHolder(androidx.slice.widget.SliceAdapter.SliceViewHolder, int);
-    method public androidx.slice.widget.SliceAdapter.SliceViewHolder onCreateViewHolder(android.view.ViewGroup, int);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) public void onBindViewHolder(androidx.slice.widget.SliceAdapter.SliceViewHolder, int);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) public androidx.slice.widget.SliceAdapter.SliceViewHolder onCreateViewHolder(android.view.ViewGroup, int);
   }
 
   @RequiresApi(19) public abstract class SliceChildView extends android.widget.FrameLayout {
diff --git a/slice/slice-view/lint-baseline.xml b/slice/slice-view/lint-baseline.xml
index d002e99..d89abc3 100644
--- a/slice/slice-view/lint-baseline.xml
+++ b/slice/slice-view/lint-baseline.xml
@@ -1,1661 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<issues format="6" by="lint 8.1.0-alpha07" type="baseline" client="gradle" dependencies="false" name="AGP (8.0.0-beta03)" variant="all" version="8.1.0-alpha07">
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class ActionRow extends FrameLayout {"
-        errorLine2="             ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/ActionRow.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="class DisplayedListItems {"
-        errorLine2="      ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/DisplayedListItems.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public @interface SliceRowType {}"
-        errorLine2="                      ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/EventInfo.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static final int ROW_TYPE_DATE_PICK = 7;"
-        errorLine2="                            ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/EventInfo.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static final int ROW_TYPE_TIME_PICK = 8;"
-        errorLine2="                            ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/EventInfo.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public @interface SliceActionType{}"
-        errorLine2="                      ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/EventInfo.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static final int ACTION_TYPE_DATE_PICK = 6;"
-        errorLine2="                            ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/EventInfo.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static final int ACTION_TYPE_TIME_PICK = 7;"
-        errorLine2="                            ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/EventInfo.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public @interface SliceButtonPosition {"
-        errorLine2="                      ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/EventInfo.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public GridContent(@NonNull SliceItem gridItem, int position) {"
-        errorLine2="           ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public CharSequence getTitle() {"
-        errorLine2="                        ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public ArrayList&lt;CellContent> getGridContent() {"
-        errorLine2="                                  ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceItem getContentIntent() {"
-        errorLine2="                     ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceItem getSeeMoreItem() {"
-        errorLine2="                     ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public boolean isAllImages() {"
-        errorLine2="                   ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public int getLargestImageMode() {"
-        errorLine2="               ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public int getMaxCellLineCount() {"
-        errorLine2="               ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public boolean hasImage() {"
-        errorLine2="                   ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public boolean getIsLastIndex() { return mIsLastIndex; }"
-        errorLine2="                   ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setIsLastIndex(boolean isLast) {"
-        errorLine2="                ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public int getHeight(@NonNull SliceStyle style, @NonNull SliceViewPolicy policy) {"
-        errorLine2="               ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static class CellContent {"
-        errorLine2="                        ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected final View mForeground;"
-        errorLine2="                         ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridRowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected int mRowIndex;"
-        errorLine2="                  ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridRowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected int mRowCount;"
-        errorLine2="                  ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridRowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected int mMaxCells = -1;"
-        errorLine2="                  ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridRowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected @Nullable GridContent mGridContent;"
-        errorLine2="                                    ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridRowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected final int mLargeImageHeight;"
-        errorLine2="                        ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridRowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected final int mSmallImageSize;"
-        errorLine2="                        ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridRowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected final int mSmallImageMinWidth;"
-        errorLine2="                        ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridRowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected final int mIconSize;"
-        errorLine2="                        ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridRowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected final LinearLayout mViewContainer;"
-        errorLine2="                                 ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridRowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setInsets(int l, int t, int r, int b) {"
-        errorLine2="                ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridRowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setTint(@ColorInt int tintColor) {"
-        errorLine2="                ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridRowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void onClick(@NonNull View view) {"
-        errorLine2="                ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridRowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public boolean onTouch(@NonNull View view, @NonNull MotionEvent event) {"
-        errorLine2="                   ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridRowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public int getHiddenItemCount() {"
-        errorLine2="               ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/GridRowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class ListContent extends SliceContent {"
-        errorLine2="             ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/ListContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class LocationBasedViewTracker implements Runnable, View.OnLayoutChangeListener {"
-        errorLine2="             ~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/LocationBasedViewTracker.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static void trackInputFocused(ViewGroup parent) {"
-        errorLine2="                       ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/LocationBasedViewTracker.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static void trackA11yFocus(ViewGroup parent) {"
-        errorLine2="                       ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/LocationBasedViewTracker.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class MessageView extends SliceChildView {"
-        errorLine2="             ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/MessageView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class RemoteInputView extends LinearLayout implements View.OnClickListener, TextWatcher {"
-        errorLine2="             ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/RemoteInputView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setRevealParameters(int cx, int cy, int r) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/RemoteInputView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static final boolean isConfirmKey(int keyCode) {"
-        errorLine2="                                ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/RemoteInputView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class RowContent extends SliceContent {"
-        errorLine2="             ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/RowContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public int getHeight(SliceStyle style, SliceViewPolicy policy) {"
-        errorLine2="               ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/RowContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class RowStyle {"
-        errorLine2="             ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/RowStyle.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected Set&lt;SliceItem> mLoadingActions = new HashSet&lt;>();"
-        errorLine2="                             ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/RowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setStyle(SliceStyle styles, RowStyle rowStyle) {"
-        errorLine2="                ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/RowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setInsets(int l, int t, int r, int b) {"
-        errorLine2="                ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/RowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setTint(@ColorInt int tintColor) {"
-        errorLine2="                ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/RowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setSliceActions(List&lt;SliceAction> actions) {"
-        errorLine2="                ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/RowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setShowLastUpdated(boolean showLastUpdated) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/RowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setAllowTwoLines(boolean allowTwoLines) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/RowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setLastUpdated(long lastUpdated) {"
-        errorLine2="                ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/RowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setLoadingActions(Set&lt;SliceItem> actions) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/RowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void resetView() {"
-        errorLine2="                ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/RowView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class ShortcutView extends SliceChildView {"
-        errorLine2="             ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/ShortcutView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class SliceActionView extends FrameLayout implements View.OnClickListener,"
-        errorLine2="             ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceActionView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setParents(SliceView parent, TemplateView templateView) {"
-        errorLine2="                ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceAdapter.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setInsets(int l, int t, int r, int b) {"
-        errorLine2="                ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceAdapter.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setSliceObserver(SliceView.OnSliceActionListener observer) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceAdapter.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setSliceActions(List&lt;SliceAction> actions) {"
-        errorLine2="                ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceAdapter.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setSliceItems(List&lt;SliceContent> slices, int color, int mode) {"
-        errorLine2="                ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceAdapter.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setStyle(SliceStyle style) {"
-        errorLine2="                ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceAdapter.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setPolicy(SliceViewPolicy p) {"
-        errorLine2="                ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceAdapter.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setShowLastUpdated(boolean showLastUpdated) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceAdapter.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setLastUpdated(long lastUpdated) {"
-        errorLine2="                ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceAdapter.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setLoadingActions(Set&lt;SliceItem> actions) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceAdapter.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public Set&lt;SliceItem> getLoadingActions() {"
-        errorLine2="                          ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceAdapter.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void onSliceActionLoading(SliceItem actionItem, int position) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceAdapter.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setAllowTwoLines(boolean allowTwoLines) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceAdapter.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void notifyHeaderChanged() {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceAdapter.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {"
-        errorLine2="                           ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceAdapter.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void onBindViewHolder(@NonNull SliceViewHolder holder, int position) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceAdapter.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected static class SliceWrapper {"
-        errorLine2="                           ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceAdapter.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public class SliceViewHolder extends RecyclerView.ViewHolder implements View.OnTouchListener,"
-        errorLine2="                 ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceAdapter.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected SliceView.OnSliceActionListener mObserver;"
-        errorLine2="                                              ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected int mMode;"
-        errorLine2="                  ~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected int mTintColor = -1;"
-        errorLine2="                  ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected boolean mShowLastUpdated;"
-        errorLine2="                      ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected long mLastUpdated = -1;"
-        errorLine2="                   ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected int mInsetStart;"
-        errorLine2="                  ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected int mInsetTop;"
-        errorLine2="                  ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected int mInsetEnd;"
-        errorLine2="                  ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected int mInsetBottom;"
-        errorLine2="                  ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected SliceActionView.SliceActionLoadingListener mLoadingListener;"
-        errorLine2="                                                         ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected SliceStyle mSliceStyle;"
-        errorLine2="                         ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected RowStyle mRowStyle;"
-        errorLine2="                       ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected SliceViewPolicy mViewPolicy;"
-        errorLine2="                              ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setSliceContent(ListContent content) {"
-        errorLine2="                ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setInsets(int l, int t, int r, int b) {"
-        errorLine2="                ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setSliceActions(List&lt;SliceAction> actions) {"
-        errorLine2="                ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public int getMode() {"
-        errorLine2="               ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setTint(@ColorInt int tintColor) {"
-        errorLine2="                ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setShowLastUpdated(boolean showLastUpdated) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setLastUpdated(long lastUpdated) {"
-        errorLine2="                ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setSliceActionListener(SliceView.OnSliceActionListener observer) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setSliceActionLoadingListener(SliceActionView.SliceActionLoadingListener listener) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setActionLoading(SliceItem item) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setLoadingActions(Set&lt;SliceItem> loadingActions) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setAllowTwoLines(boolean allowTwoLines) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public Set&lt;SliceItem> getLoadingActions() {"
-        errorLine2="                          ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setStyle(SliceStyle styles, @NonNull RowStyle rowStyle) {"
-        errorLine2="                ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setPolicy(@Nullable SliceViewPolicy policy) {"
-        errorLine2="                ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public int getHiddenItemCount() {"
-        errorLine2="               ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceChildView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected SliceItem mSliceItem;"
-        errorLine2="                        ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected SliceItem mColorItem;"
-        errorLine2="                        ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected SliceItem mLayoutDirItem;"
-        errorLine2="                        ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected SliceItem mContentDescr;"
-        errorLine2="                        ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    protected int mRowIndex;"
-        errorLine2="                  ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceContent(@Nullable SliceItem item, int rowIndex) {"
-        errorLine2="           ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceItem getSliceItem() {"
-        errorLine2="                     ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public int getAccentColor() {"
-        errorLine2="               ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public int getLayoutDir() {"
-        errorLine2="               ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public CharSequence getContentDescription() {"
-        errorLine2="                        ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public int getRowIndex() { return mRowIndex; }"
-        errorLine2="               ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public int getHeight(SliceStyle style, SliceViewPolicy policy) {"
-        errorLine2="               ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public boolean isValid() {"
-        errorLine2="                   ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceAction getShortcut(@Nullable Context context) {"
-        errorLine2="                       ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceContent.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static final SliceSpec OLD_BASIC = new SliceSpec(&quot;androidx.app.slice.BASIC&quot;, 1);"
-        errorLine2="                                  ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceLiveData.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static final SliceSpec OLD_LIST = new SliceSpec(&quot;androidx.app.slice.LIST&quot;, 1);"
-        errorLine2="                                  ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceLiveData.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static final Set&lt;SliceSpec> SUPPORTED_SPECS = new ArraySet&lt;>("
-        errorLine2="                                       ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceLiveData.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static CachedSliceLiveData fromStream(@NonNull Context context,"
-        errorLine2="                                      ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceLiveData.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        protected synchronized void loadInitialSlice() {"
-        errorLine2="                                    ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceLiveData.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        protected void updateSlice() {"
-        errorLine2="                       ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceLiveData.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public @interface SliceLoadingState{}"
-        errorLine2="                      ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceMetadata.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static List&lt;SliceAction> getSliceActions(@NonNull Slice slice) {"
-        errorLine2="                                    ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceMetadata.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public boolean isExpired() {"
-        errorLine2="                   ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceMetadata.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public boolean neverExpires() {"
-        errorLine2="                   ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceMetadata.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public long getTimeToExpiry() {"
-        errorLine2="                ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceMetadata.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public ListContent getListContent() {"
-        errorLine2="                       ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceMetadata.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="class SliceMetrics {"
-        errorLine2="      ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceMetrics.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="class SliceMetricsWrapper extends SliceMetrics {"
-        errorLine2="      ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceMetricsWrapper.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public SliceStructure(SliceItem s) {"
-        errorLine2="           ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceStructure.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public Uri getUri() {"
-        errorLine2="               ~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceStructure.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class SliceStyle {"
-        errorLine2="             ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceStyle.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static IconCompat convert(Context context, IconCompat icon, SerializeOptions options) {"
-        errorLine2="                             ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceUtils.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static int parseImageMode(@NonNull SliceItem iconItem) {"
-        errorLine2="                      ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceUtils.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public void checkThrow(String format) {"
-        errorLine2="                    ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceUtils.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public @FormatMode int getActionMode() {"
-        errorLine2="                               ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceUtils.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public @FormatMode int getImageMode() {"
-        errorLine2="                               ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceUtils.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public int getMaxWidth() {"
-        errorLine2="                   ~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceUtils.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public int getMaxHeight() {"
-        errorLine2="                   ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceUtils.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public Bitmap.CompressFormat getFormat() {"
-        errorLine2="                                     ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceUtils.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public int getQuality() {"
-        errorLine2="                   ~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceUtils.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public SliceParseException(String s, Throwable e) {"
-        errorLine2="               ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceUtils.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="        public SliceParseException(String s) {"
-        errorLine2="               ~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceUtils.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public @interface SliceMode {}"
-        errorLine2="                      ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public boolean isSliceViewClickable() {"
-        errorLine2="                   ~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setClickInfo(int[] info) {"
-        errorLine2="                ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setMode(@SliceMode int mode, boolean animate) {"
-        errorLine2="                ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setShowActionRow(boolean show) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public boolean isShowingActionRow() {"
-        errorLine2="                   ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static String modeToString(@SliceMode int mode) {"
-        errorLine2="                         ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public static final Comparator&lt;SliceAction> SLICE_ACTION_PRIORITY_COMPARATOR ="
-        errorLine2="                                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    SliceViewManager() {"
-        errorLine2="    ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceViewManager.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public abstract class SliceViewManagerBase extends SliceViewManager {"
-        errorLine2="                      ~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceViewManagerBase.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="class SliceViewManagerCompat extends SliceViewManagerBase {"
-        errorLine2="      ~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceViewManagerCompat.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="class SliceViewManagerWrapper extends SliceViewManagerBase {"
-        errorLine2="      ~~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceViewManagerWrapper.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class SliceViewPolicy {"
-        errorLine2="             ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceViewPolicy.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="public class SliceViewUtil {"
-        errorLine2="             ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/SliceViewUtil.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="class SliceXml {"
-        errorLine2="      ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/SliceXml.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setInsets(int l, int t, int r, int b) {"
-        errorLine2="                ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/TemplateView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void onForegroundActivated(MotionEvent event) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/TemplateView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setPolicy(SliceViewPolicy policy) {"
-        errorLine2="                ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/TemplateView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setActionLoading(SliceItem item) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/TemplateView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setLoadingActions(Set&lt;SliceItem> loadingActions) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/TemplateView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public Set&lt;SliceItem> getLoadingActions() {"
-        errorLine2="                          ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/TemplateView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setTint(int tint) {"
-        errorLine2="                ~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/TemplateView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setSliceActionListener(SliceView.OnSliceActionListener observer) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/TemplateView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setSliceActions(List&lt;SliceAction> actions) {"
-        errorLine2="                ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/TemplateView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setSliceContent(ListContent sliceContent) {"
-        errorLine2="                ~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/TemplateView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setStyle(SliceStyle style, @NonNull RowStyle rowStyle) {"
-        errorLine2="                ~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/TemplateView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setShowLastUpdated(boolean showLastUpdated) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/TemplateView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setLastUpdated(long lastUpdated) {"
-        errorLine2="                ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/TemplateView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void setAllowTwoLines(boolean allowTwoLines) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/TemplateView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void resetView() {"
-        errorLine2="                ~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/TemplateView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void onScrollingChanged(boolean newScrolling) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/TemplateView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void onMaxHeightChanged(int newNewHeight) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/TemplateView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void onMaxSmallChanged(int newMaxSmallHeight) {"
-        errorLine2="                ~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/TemplateView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public void onModeChanged(int newMode) {"
-        errorLine2="                ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/TemplateView.java"/>
-    </issue>
-
-    <issue
-        id="BanHideAnnotation"
-        message="@hide is not allowed in Javadoc"
-        errorLine1="    public int getHiddenItemCount() {"
-        errorLine2="               ~~~~~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/slice/widget/TemplateView.java"/>
-    </issue>
+<issues format="6" by="lint 8.1.0-beta02" type="baseline" client="gradle" dependencies="false" name="AGP (8.1.0-beta02)" variant="all" version="8.1.0-beta02">
 
     <issue
         id="BanSynchronizedMethods"
diff --git a/slice/slice-view/src/main/java/androidx/slice/SliceMetadata.java b/slice/slice-view/src/main/java/androidx/slice/SliceMetadata.java
index 545fe54..edbc303 100644
--- a/slice/slice-view/src/main/java/androidx/slice/SliceMetadata.java
+++ b/slice/slice-view/src/main/java/androidx/slice/SliceMetadata.java
@@ -76,7 +76,6 @@
 public class SliceMetadata {
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @IntDef({
@@ -468,7 +467,6 @@
 
     /**
      * @return the group of slice actions associated with the provided slice, if they exist.
-     * @hide
      */
     @Nullable
     @RestrictTo(RestrictTo.Scope.LIBRARY)
@@ -490,7 +488,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public boolean isExpired() {
@@ -499,7 +496,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public boolean neverExpires() {
@@ -507,7 +503,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public long getTimeToExpiry() {
@@ -517,7 +512,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public ListContent getListContent() {
diff --git a/slice/slice-view/src/main/java/androidx/slice/SliceStructure.java b/slice/slice-view/src/main/java/androidx/slice/SliceStructure.java
index d73d691..f4f1f27 100644
--- a/slice/slice-view/src/main/java/androidx/slice/SliceStructure.java
+++ b/slice/slice-view/src/main/java/androidx/slice/SliceStructure.java
@@ -56,7 +56,6 @@
 
     /**
      * Create a SliceStructure.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public SliceStructure(SliceItem s) {
@@ -72,7 +71,6 @@
 
     /**
      * @return the Uri associated with this content item if one exists.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Nullable
diff --git a/slice/slice-view/src/main/java/androidx/slice/SliceUtils.java b/slice/slice-view/src/main/java/androidx/slice/SliceUtils.java
index cf42a848..46f1d35 100644
--- a/slice/slice-view/src/main/java/androidx/slice/SliceUtils.java
+++ b/slice/slice-view/src/main/java/androidx/slice/SliceUtils.java
@@ -236,7 +236,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public static IconCompat convert(Context context, IconCompat icon, SerializeOptions options) {
@@ -314,7 +313,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public static int parseImageMode(@NonNull SliceItem iconItem) {
@@ -375,7 +373,6 @@
         private int mQuality = 100;
 
         /**
-         * @hide
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY)
         public void checkThrow(String format) {
@@ -394,7 +391,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY)
         public @FormatMode int getActionMode() {
@@ -402,7 +398,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY)
         public @FormatMode int getImageMode() {
@@ -410,7 +405,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY)
         public int getMaxWidth() {
@@ -418,7 +412,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY)
         public int getMaxHeight() {
@@ -426,7 +419,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY)
         public Bitmap.CompressFormat getFormat() {
@@ -434,7 +426,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY)
         public int getQuality() {
@@ -527,7 +518,6 @@
      */
     public static class SliceParseException extends Exception {
         /**
-         * @hide
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY)
         public SliceParseException(String s, Throwable e) {
@@ -535,7 +525,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(RestrictTo.Scope.LIBRARY)
         public SliceParseException(String s) {
diff --git a/slice/slice-view/src/main/java/androidx/slice/SliceViewManager.java b/slice/slice-view/src/main/java/androidx/slice/SliceViewManager.java
index 0d2b294..95c0d6d 100644
--- a/slice/slice-view/src/main/java/androidx/slice/SliceViewManager.java
+++ b/slice/slice-view/src/main/java/androidx/slice/SliceViewManager.java
@@ -50,7 +50,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     SliceViewManager() {
diff --git a/slice/slice-view/src/main/java/androidx/slice/SliceViewManagerBase.java b/slice/slice-view/src/main/java/androidx/slice/SliceViewManagerBase.java
index 4ab5626..217d0f17d 100644
--- a/slice/slice-view/src/main/java/androidx/slice/SliceViewManagerBase.java
+++ b/slice/slice-view/src/main/java/androidx/slice/SliceViewManagerBase.java
@@ -34,7 +34,6 @@
 import java.util.concurrent.Executor;
 
 /**
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-view/src/main/java/androidx/slice/SliceViewManagerCompat.java b/slice/slice-view/src/main/java/androidx/slice/SliceViewManagerCompat.java
index b129081..1c1d436 100644
--- a/slice/slice-view/src/main/java/androidx/slice/SliceViewManagerCompat.java
+++ b/slice/slice-view/src/main/java/androidx/slice/SliceViewManagerCompat.java
@@ -33,7 +33,6 @@
 
 
 /**
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-view/src/main/java/androidx/slice/SliceViewManagerWrapper.java b/slice/slice-view/src/main/java/androidx/slice/SliceViewManagerWrapper.java
index 5c9989d..c4364d9 100644
--- a/slice/slice-view/src/main/java/androidx/slice/SliceViewManagerWrapper.java
+++ b/slice/slice-view/src/main/java/androidx/slice/SliceViewManagerWrapper.java
@@ -40,7 +40,6 @@
 import java.util.Set;
 
 /**
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @RequiresApi(api = 28)
diff --git a/slice/slice-view/src/main/java/androidx/slice/SliceXml.java b/slice/slice-view/src/main/java/androidx/slice/SliceXml.java
index aa8b562..1251afb 100644
--- a/slice/slice-view/src/main/java/androidx/slice/SliceXml.java
+++ b/slice/slice-view/src/main/java/androidx/slice/SliceXml.java
@@ -56,7 +56,6 @@
 import java.util.List;
 
 /**
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/ActionRow.java b/slice/slice-view/src/main/java/androidx/slice/widget/ActionRow.java
index efd9763..15f0ac0 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/ActionRow.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/ActionRow.java
@@ -51,7 +51,6 @@
 import java.util.List;
 
 /**
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/DisplayedListItems.java b/slice/slice-view/src/main/java/androidx/slice/widget/DisplayedListItems.java
index b815243..4b5ee95 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/DisplayedListItems.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/DisplayedListItems.java
@@ -23,7 +23,6 @@
 /**
  * The slice items we can render on the available space.
  *
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
 class DisplayedListItems {
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/EventInfo.java b/slice/slice-view/src/main/java/androidx/slice/widget/EventInfo.java
index 2220d02..db5231f 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/EventInfo.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/EventInfo.java
@@ -30,7 +30,6 @@
 public class EventInfo {
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @IntDef({
@@ -82,19 +81,16 @@
     public static final int ROW_TYPE_SELECTION = 6;
     /**
      * Indicates the row represents a date selection (date picker).
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     public static final int ROW_TYPE_DATE_PICK = 7;
     /**
      * Indicates the row represents a time selection (time picker).
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     public static final int ROW_TYPE_TIME_PICK = 8;
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @IntDef({
@@ -134,19 +130,16 @@
     public static final int ACTION_TYPE_SELECTION = 5;
     /**
      * Indicates the event was a selection from a date picker.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     public static final int ACTION_TYPE_DATE_PICK = 6;
     /**
      * Indicates the event was a selection from a time picker.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
     public static final int ACTION_TYPE_TIME_PICK = 7;
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @IntDef({
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/GridContent.java b/slice/slice-view/src/main/java/androidx/slice/widget/GridContent.java
index b6c1724..ee38115 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/GridContent.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/GridContent.java
@@ -72,7 +72,6 @@
     private SliceItem mTitleItem;
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
     public GridContent(@NonNull SliceItem gridItem, int position) {
@@ -133,7 +132,6 @@
 
     /**
      * @return the title of this grid row, if it exists.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
     @Nullable
@@ -148,7 +146,6 @@
 
     /**
      * @return the list of cell content for this grid.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
     @NonNull
@@ -158,7 +155,6 @@
 
     /**
      * @return the content intent item for this grid.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
     @Nullable
@@ -168,7 +164,6 @@
 
     /**
      * @return the see more item to use when not all items in the grid can be displayed.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
     @Nullable
@@ -186,7 +181,6 @@
 
     /**
      * @return whether the contents of this grid is just images.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
     public boolean isAllImages() {
@@ -195,7 +189,6 @@
 
     /**
      * @return the largest image size in this row, if there are images.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
     public int getLargestImageMode() {
@@ -242,7 +235,6 @@
 
     /**
      * @return the max number of lines of text in the cells of this grid row.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
     public int getMaxCellLineCount() {
@@ -251,7 +243,6 @@
 
     /**
      * @return whether this row contains an image.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
     public boolean hasImage() {
@@ -260,14 +251,12 @@
 
     /**
      * @return whether this content is being displayed last in a list.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
     public boolean getIsLastIndex() { return mIsLastIndex; }
 
     /**
      * Sets whether this content is being displayed last in a list.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
     public void setIsLastIndex(boolean isLast) {
@@ -275,7 +264,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -286,7 +274,6 @@
     /**
      * Extracts information required to present content in a cell.
      *
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
     public static class CellContent {
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/GridRowView.java b/slice/slice-view/src/main/java/androidx/slice/widget/GridRowView.java
index 10215a4..9bbd5de 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/GridRowView.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/GridRowView.java
@@ -110,44 +110,44 @@
     private int mHiddenItemCount;
 
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected final View mForeground;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected int mRowIndex;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected int mRowCount;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected int mMaxCells = -1;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected @Nullable GridContent mGridContent;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected final int mLargeImageHeight;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected final int mSmallImageSize;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected final int mSmallImageMinWidth;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected final int mIconSize;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected final LinearLayout mViewContainer;
 
     public GridRowView(@NonNull Context context) {
@@ -173,7 +173,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -215,7 +214,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -776,7 +774,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -802,7 +799,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -840,7 +836,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/ListContent.java b/slice/slice-view/src/main/java/androidx/slice/widget/ListContent.java
index 10d5836..8151152 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/ListContent.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/ListContent.java
@@ -51,7 +51,6 @@
 
 /**
  * Extracts information required to present content in a list format from a slice.
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/LocationBasedViewTracker.java b/slice/slice-view/src/main/java/androidx/slice/widget/LocationBasedViewTracker.java
index b1b3c18..0404633 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/LocationBasedViewTracker.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/LocationBasedViewTracker.java
@@ -32,7 +32,6 @@
 
 /**
  * Utility class to track view based on relative location to the parent.
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 public class LocationBasedViewTracker implements Runnable, View.OnLayoutChangeListener {
@@ -110,7 +109,6 @@
 
     /**
      * Tries to preserve the input focus after the next content change
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public static void trackInputFocused(ViewGroup parent) {
@@ -122,7 +120,6 @@
 
     /**
      * Tries to preserve the accessibility focus after the next content change
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public static void trackA11yFocus(ViewGroup parent) {
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/MessageView.java b/slice/slice-view/src/main/java/androidx/slice/widget/MessageView.java
index 4f56a9b..8e44e18 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/MessageView.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/MessageView.java
@@ -37,7 +37,6 @@
 import java.util.List;
 
 /**
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/RemoteInputView.java b/slice/slice-view/src/main/java/androidx/slice/widget/RemoteInputView.java
index af12f00..09392c9 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/RemoteInputView.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/RemoteInputView.java
@@ -58,7 +58,6 @@
 /**
  * Host for the remote input.
  *
- * @hide
  */
 // TODO this should be unified with SystemUI RemoteInputView (b/67527720)
 @SuppressWarnings("AppCompatCustomView")
@@ -266,7 +265,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setRevealParameters(int cx, int cy, int r) {
@@ -432,7 +430,6 @@
     }
 
     /** Whether key will, by default, trigger a click on the focused view.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public static final boolean isConfirmKey(int keyCode) {
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/RowContent.java b/slice/slice-view/src/main/java/androidx/slice/widget/RowContent.java
index dd54cb42..eed88be 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/RowContent.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/RowContent.java
@@ -57,7 +57,6 @@
 
 /**
  * Extracts information required to present content in a row format from a slice.
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
 @RequiresApi(19)
@@ -353,7 +352,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/RowStyle.java b/slice/slice-view/src/main/java/androidx/slice/widget/RowStyle.java
index cf3c170..02416ac 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/RowStyle.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/RowStyle.java
@@ -28,7 +28,6 @@
 
 /**
  * Holds style information shared between child views of a row
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/RowView.java b/slice/slice-view/src/main/java/androidx/slice/widget/RowView.java
index f094431..34d23e5 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/RowView.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/RowView.java
@@ -159,7 +159,6 @@
     private boolean mIsStarRating;
     private final ProgressBar mActionSpinner;
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected Set<SliceItem> mLoadingActions = new HashSet<>();
@@ -236,7 +235,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -314,7 +312,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -386,7 +383,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -402,7 +398,6 @@
      * @param actions if the actions are null then there are no header actions for this row.
      * If the actions are an empty list, then something has explicitly set that no header
      * actions should appear.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -414,7 +409,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -426,7 +420,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -706,7 +699,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -1148,7 +1140,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -1367,7 +1358,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/ShortcutView.java b/slice/slice-view/src/main/java/androidx/slice/widget/ShortcutView.java
index ac95f15..89ae3d0 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/ShortcutView.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/ShortcutView.java
@@ -39,7 +39,6 @@
 import java.util.Set;
 
 /**
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/SliceActionView.java b/slice/slice-view/src/main/java/androidx/slice/widget/SliceActionView.java
index 719e639..e5b20d0 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/SliceActionView.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/SliceActionView.java
@@ -52,7 +52,6 @@
 
 /**
  * Supports displaying {@link androidx.slice.core.SliceActionImpl}s.
- * @hide
  */
 @SuppressWarnings("AppCompatCustomView")
 @RestrictTo(LIBRARY)
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/SliceAdapter.java b/slice/slice-view/src/main/java/androidx/slice/widget/SliceAdapter.java
index 08781d8..f8ae73a 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/SliceAdapter.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/SliceAdapter.java
@@ -32,6 +32,7 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.RequiresApi;
+import androidx.annotation.RestrictTo;
 import androidx.collection.ArrayMap;
 import androidx.recyclerview.widget.RecyclerView;
 import androidx.slice.SliceItem;
@@ -102,8 +103,8 @@
 
     /**
      * Sets the SliceView parent and the template parent.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setParents(SliceView parent, TemplateView templateView) {
         mParent = parent;
         mTemplateView = templateView;
@@ -113,8 +114,8 @@
      * Sets the insets (padding) for slice view. SliceAdapter will handle determining
      * if a child needs a particular padding, i.e. if it's the first row then the top inset
      * will be applied to it whereas subsequent rows would get a top inset of 0.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setInsets(int l, int t, int r, int b) {
         mInsetStart = l;
         mInsetTop = t;
@@ -124,16 +125,16 @@
 
     /**
      * Sets the observer to pass down to child views.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setSliceObserver(SliceView.OnSliceActionListener observer) {
         mSliceObserver = observer;
     }
 
     /**
      * Sets the actions to display for this slice, this adjusts what's displayed in the header item.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setSliceActions(List<SliceAction> actions) {
         mSliceActions = actions;
         notifyHeaderChanged();
@@ -141,8 +142,8 @@
 
     /**
      * Set the {@link SliceItem}'s to be displayed in the adapter and the accent color.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setSliceItems(List<SliceContent> slices, int color, int mode) {
         if (slices == null) {
             mLoadingActions.clear();
@@ -160,8 +161,8 @@
 
     /**
      * Sets the style information to use for views in this adapter.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setStyle(SliceStyle style) {
         mSliceStyle = style;
         notifyDataSetChanged();
@@ -169,16 +170,16 @@
 
     /**
      * Sets the policy information to use for views in this adapter.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setPolicy(SliceViewPolicy p) {
         mPolicy = p;
     }
 
     /**
      * Sets whether the last updated time should be shown on the slice.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setShowLastUpdated(boolean showLastUpdated) {
         if (mShowLastUpdated != showLastUpdated) {
             mShowLastUpdated = showLastUpdated;
@@ -188,8 +189,8 @@
 
     /**
      * Sets when the slice was last updated.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setLastUpdated(long lastUpdated) {
         if (mLastUpdated != lastUpdated) {
             mLastUpdated = lastUpdated;
@@ -199,8 +200,8 @@
 
     /**
      * Indicates that no actions should be loading and updates the views.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setLoadingActions(Set<SliceItem> actions) {
         if (actions == null) {
             mLoadingActions.clear();
@@ -212,15 +213,15 @@
 
     /**
      * Returns the currently loading actions.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public Set<SliceItem> getLoadingActions() {
         return mLoadingActions;
     }
 
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
     public void onSliceActionLoading(SliceItem actionItem, int position) {
         mLoadingActions.add(actionItem);
@@ -233,8 +234,8 @@
 
     /**
      * Sets whether this slice can have 2 lines of subtitle text in the first row.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setAllowTwoLines(boolean allowTwoLines) {
         mAllowTwoLines = allowTwoLines;
         notifyHeaderChanged();
@@ -242,8 +243,8 @@
 
     /**
      * Notifies that content in the header of this adapter has changed.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void notifyHeaderChanged() {
         if (getItemCount() > 0) {
             notifyItemChanged(HEADER_INDEX);
@@ -251,8 +252,8 @@
     }
 
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
     @NonNull
     public SliceViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
@@ -277,8 +278,8 @@
     }
 
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
     public void onBindViewHolder(@NonNull SliceViewHolder holder, int position) {
         SliceWrapper slice = mSlices.get(position);
@@ -320,8 +321,8 @@
     }
 
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected static class SliceWrapper {
         final SliceContent mItem;
         final int mType;
@@ -354,8 +355,8 @@
 
     /**
      * A {@link RecyclerView.ViewHolder} for presenting slices in {@link SliceAdapter}.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public class SliceViewHolder extends RecyclerView.ViewHolder implements View.OnTouchListener,
             View.OnClickListener {
         public final SliceChildView mSliceChildView;
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/SliceChildView.java b/slice/slice-view/src/main/java/androidx/slice/widget/SliceChildView.java
index 8c61fb4..b0795bf 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/SliceChildView.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/SliceChildView.java
@@ -40,56 +40,56 @@
 public abstract class SliceChildView extends FrameLayout {
 
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected SliceView.OnSliceActionListener mObserver;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected int mMode;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected int mTintColor = -1;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected boolean mShowLastUpdated;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected long mLastUpdated = -1;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected int mInsetStart;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected int mInsetTop;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected int mInsetEnd;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected int mInsetBottom;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected SliceActionView.SliceActionLoadingListener mLoadingListener;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected SliceStyle mSliceStyle;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected RowStyle mRowStyle;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected SliceViewPolicy mViewPolicy;
 
     public SliceChildView(@NonNull Context context) {
@@ -107,7 +107,6 @@
 
     /**
      * Sets the content to display in this slice.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setSliceContent(ListContent content) {
@@ -116,7 +115,6 @@
 
     /**
      * Sets the insets (padding) for the slice.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setInsets(int l, int t, int r, int b) {
@@ -136,7 +134,6 @@
 
     /**
      * Sets the slice actions for this view.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setSliceActions(List<SliceAction> actions) {
@@ -145,8 +142,8 @@
 
     /**
      * @return the mode of the slice being presented.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     @SliceView.SliceMode
     public int getMode() {
         return mViewPolicy != null ? mViewPolicy.getMode() : MODE_LARGE;
@@ -154,7 +151,6 @@
 
     /**
      * Sets a custom color to use for tinting elements like icons for this view.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setTint(@ColorInt int tintColor) {
@@ -163,7 +159,6 @@
 
     /**
      * Sets whether the last updated time should be displayed.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setShowLastUpdated(boolean showLastUpdated) {
@@ -172,7 +167,6 @@
 
     /**
      * Sets when the content of this view was last updated.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setLastUpdated(long lastUpdated) {
@@ -181,23 +175,22 @@
 
     /**
      * Sets the observer to notify when an interaction events occur on the view.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setSliceActionListener(SliceView.OnSliceActionListener observer) {
         mObserver = observer;
     }
 
     /**
      * Sets the listener to notify whenever an action is being loaded.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setSliceActionLoadingListener(SliceActionView.SliceActionLoadingListener listener) {
         mLoadingListener = listener;
     }
 
     /**
      * Indicates that a particular action is being loaded.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setActionLoading(SliceItem item) {
@@ -205,7 +198,6 @@
 
     /**
      * Sets the actions that are being loaded.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setLoadingActions(Set<SliceItem> loadingActions) {
@@ -213,7 +205,6 @@
 
     /**
      * Sets whether this slice can have 2 lines of subtitle text in the first row.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setAllowTwoLines(boolean allowTwoLines) {
@@ -221,7 +212,6 @@
 
     /**
      * The set of currently loading actions.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public Set<SliceItem> getLoadingActions() {
@@ -230,7 +220,6 @@
 
     /**
      * Sets the style information for this view.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setStyle(SliceStyle styles, @NonNull RowStyle rowStyle) {
@@ -240,7 +229,6 @@
 
     /**
      * Sets the policy information for this view.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setPolicy(@Nullable SliceViewPolicy policy) {
@@ -248,7 +236,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public int getHiddenItemCount() {
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/SliceContent.java b/slice/slice-view/src/main/java/androidx/slice/widget/SliceContent.java
index 6dc5983..a56e1e9 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/SliceContent.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/SliceContent.java
@@ -58,24 +58,24 @@
 public class SliceContent {
 
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected SliceItem mSliceItem;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected SliceItem mColorItem;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected SliceItem mLayoutDirItem;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected SliceItem mContentDescr;
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     protected int mRowIndex;
 
     public SliceContent(@Nullable Slice slice) {
@@ -86,7 +86,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public SliceContent(@Nullable SliceItem item, int rowIndex) {
@@ -108,8 +107,8 @@
 
     /**
      * @return the slice item used to construct this content.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Nullable
     public SliceItem getSliceItem() {
         return mSliceItem;
@@ -117,24 +116,24 @@
 
     /**
      * @return the accent color to use for this content or -1 if no color is set.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public int getAccentColor() {
         return mColorItem != null ? mColorItem.getInt() : -1;
     }
 
     /**
      * @return the layout direction to use for this content or -1 if no direction set.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public int getLayoutDir() {
         return mLayoutDirItem != null ? resolveLayoutDirection(mLayoutDirItem.getInt()) : -1;
     }
 
     /**
      * @return the content description to use for this row if set.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Nullable
     public CharSequence getContentDescription() {
         return mContentDescr != null ? mContentDescr.getText() : null;
@@ -142,31 +141,31 @@
 
     /**
      * @return the row index of this content, or -1 if no row index is set.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public int getRowIndex() { return mRowIndex; }
 
     /**
      * @return the desired height of this content based on the provided mode and context or the
      * default height if context is null.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public int getHeight(SliceStyle style, SliceViewPolicy policy) {
         return 0;
     }
 
     /**
      * @return whether this content is valid to display or not.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     public boolean isValid() {
         return mSliceItem != null;
     }
 
     /**
      * @return the action that represents the shortcut.
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Nullable
     public SliceAction getShortcut(@Nullable Context context) {
         if (mSliceItem == null) {
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/SliceLiveData.java b/slice/slice-view/src/main/java/androidx/slice/widget/SliceLiveData.java
index 9357327..8fc3a85 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/SliceLiveData.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/SliceLiveData.java
@@ -61,19 +61,16 @@
     private static final String TAG = "SliceLiveData";
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public static final SliceSpec OLD_BASIC = new SliceSpec("androidx.app.slice.BASIC", 1);
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public static final SliceSpec OLD_LIST = new SliceSpec("androidx.app.slice.LIST", 1);
 
     /**
-     * @hide
      */
     @RestrictTo(LIBRARY)
     public static final Set<SliceSpec> SUPPORTED_SPECS = new ArraySet<>(
@@ -139,7 +136,6 @@
 
     /**
      * Version for testing
-     * @hide
      */
     @RestrictTo(LIBRARY_GROUP_PREFIX)
     @NonNull
@@ -208,7 +204,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         @SuppressWarnings("deprecation") /* AsyncTask */
@@ -292,7 +287,6 @@
         }
 
         /**
-         * @hide
          */
         @RestrictTo(LIBRARY)
         protected void updateSlice() {
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/SliceMetrics.java b/slice/slice-view/src/main/java/androidx/slice/widget/SliceMetrics.java
index 6592759..faa5e10 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/SliceMetrics.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/SliceMetrics.java
@@ -26,7 +26,6 @@
 import androidx.annotation.RestrictTo;
 
 /**
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/SliceMetricsWrapper.java b/slice/slice-view/src/main/java/androidx/slice/widget/SliceMetricsWrapper.java
index ad74f35..adb43d8 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/SliceMetricsWrapper.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/SliceMetricsWrapper.java
@@ -24,7 +24,6 @@
 import androidx.annotation.RestrictTo;
 
 /**
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @RequiresApi(api = 28)
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/SliceStyle.java b/slice/slice-view/src/main/java/androidx/slice/widget/SliceStyle.java
index 60917e0..2440e67 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/SliceStyle.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/SliceStyle.java
@@ -41,7 +41,6 @@
 /**
  * Holds style information shared between child views of a slice
  *
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/SliceView.java b/slice/slice-view/src/main/java/androidx/slice/widget/SliceView.java
index 2d53b83..8c6fd44 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/SliceView.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/SliceView.java
@@ -115,7 +115,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @IntDef({
@@ -253,7 +252,6 @@
 
     /**
      * Indicates whether this view reacts to click events or not.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public boolean isSliceViewClickable() {
@@ -263,7 +261,6 @@
 
     /**
      * Sets the event info for logging a click.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setClickInfo(int[] info) {
@@ -629,7 +626,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void setMode(@SliceMode int mode, boolean animate) {
@@ -714,7 +710,6 @@
     }
 
     /**
-     * @hide
      *
      * Whether this view should show a row of actions with it.
      */
@@ -726,7 +721,6 @@
 
     /**
      * @return whether this view is showing a row of actions.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public boolean isShowingActionRow() {
@@ -853,7 +847,6 @@
 
     /**
      * @return String representation of the provided mode.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public static String modeToString(@SliceMode int mode) {
@@ -970,7 +963,6 @@
     };
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public static final Comparator<SliceAction> SLICE_ACTION_PRIORITY_COMPARATOR =
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/SliceViewPolicy.java b/slice/slice-view/src/main/java/androidx/slice/widget/SliceViewPolicy.java
index 7c32336..57dcf89 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/SliceViewPolicy.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/SliceViewPolicy.java
@@ -24,7 +24,6 @@
 /**
  * Class containing configurable settings for SliceView that may impact interaction and contents
  * of the slice that are displayed.
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/SliceViewUtil.java b/slice/slice-view/src/main/java/androidx/slice/widget/SliceViewUtil.java
index 88b64df..f4f0499 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/SliceViewUtil.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/SliceViewUtil.java
@@ -51,7 +51,6 @@
 /**
  * A bunch of utilities for slice UI.
  *
- * @hide
  */
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 @RequiresApi(19)
diff --git a/slice/slice-view/src/main/java/androidx/slice/widget/TemplateView.java b/slice/slice-view/src/main/java/androidx/slice/widget/TemplateView.java
index 33f8625..b26282b 100644
--- a/slice/slice-view/src/main/java/androidx/slice/widget/TemplateView.java
+++ b/slice/slice-view/src/main/java/androidx/slice/widget/TemplateView.java
@@ -98,7 +98,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -110,7 +109,6 @@
     /**
      * Called when the foreground view handling touch feedback should be activated.
      * @param event the event to handle.
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     public void onForegroundActivated(MotionEvent event) {
@@ -136,7 +134,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -147,7 +144,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -156,7 +152,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -165,7 +160,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -174,7 +168,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -184,8 +177,8 @@
     }
 
     /**
-     * @hide
      */
+    @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
     public void setSliceActionListener(SliceView.OnSliceActionListener observer) {
         mObserver = observer;
@@ -195,7 +188,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -204,7 +196,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -215,7 +206,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -232,7 +222,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -242,7 +231,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -252,7 +240,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -283,7 +270,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -295,7 +281,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -310,7 +295,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -321,7 +305,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -332,7 +315,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
@@ -343,7 +325,6 @@
     }
 
     /**
-     * @hide
      */
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Override
diff --git a/tv/tv-foundation/build.gradle b/tv/tv-foundation/build.gradle
index eace93c..365414c 100644
--- a/tv/tv-foundation/build.gradle
+++ b/tv/tv-foundation/build.gradle
@@ -30,12 +30,12 @@
 dependencies {
     api(libs.kotlinStdlib)
 
-    def composeVersion = '1.4.2'
+    def composeVersion = '1.4.3'
 
     implementation(libs.kotlinStdlibCommon)
-    implementation("androidx.profileinstaller:profileinstaller:1.3.0")
+    implementation("androidx.profileinstaller:profileinstaller:1.3.1")
 
-    api("androidx.annotation:annotation:1.5.0")
+    api("androidx.annotation:annotation:1.6.0")
     api("androidx.compose.animation:animation:$composeVersion")
     api("androidx.compose.runtime:runtime:$composeVersion")
 
diff --git a/tv/tv-material/build.gradle b/tv/tv-material/build.gradle
index 760e574..c215dc0 100644
--- a/tv/tv-material/build.gradle
+++ b/tv/tv-material/build.gradle
@@ -27,14 +27,14 @@
 dependencies {
     api(libs.kotlinStdlib)
 
-    def composeVersion = '1.4.2'
+    def composeVersion = '1.4.3'
 
-    api(project(":compose:animation:animation"))
+    api("androidx.compose.animation:animation:$composeVersion")
     api("androidx.compose.material:material-icons-core:$composeVersion")
     api(project(":tv:tv-foundation"))
 
     implementation(libs.kotlinStdlibCommon)
-    implementation("androidx.profileinstaller:profileinstaller:1.3.0")
+    implementation("androidx.profileinstaller:profileinstaller:1.3.1")
 
     androidTestImplementation(libs.truth)
 
diff --git a/wear/compose/compose-material/src/androidTest/kotlin/androidx/wear/compose/material/SwipeToDismissBoxScreenshotTest.kt b/wear/compose/compose-material/src/androidTest/kotlin/androidx/wear/compose/material/SwipeToDismissBoxScreenshotTest.kt
index f6c528c..cc0f06d 100644
--- a/wear/compose/compose-material/src/androidTest/kotlin/androidx/wear/compose/material/SwipeToDismissBoxScreenshotTest.kt
+++ b/wear/compose/compose-material/src/androidTest/kotlin/androidx/wear/compose/material/SwipeToDismissBoxScreenshotTest.kt
@@ -18,7 +18,9 @@
 
 import android.os.Build
 import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.BoxScope
 import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
 import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.testutils.assertAgainstGolden
 import androidx.compose.ui.Alignment
@@ -78,25 +80,57 @@
         verifySwipedScreenshot(LayoutDirection.Rtl, 0.5f)
     }
 
+    @Test
+    fun on_dismiss_overload_swiped_to_right_25_percent_ltr() {
+        verifySwipedScreenshot(LayoutDirection.Ltr, 0.25f, true,
+            "swiped_to_right_25_percent_ltr")
+    }
+
+    @Test
+    fun on_dismiss_overload_swiped_to_right_25_percent_rtl() {
+        verifySwipedScreenshot(LayoutDirection.Rtl, 0.25f, true,
+            "swiped_to_right_25_percent_rtl")
+    }
+
+    @Test
+    fun on_dismiss_overload_swiped_to_right_50_percent_ltr() {
+        verifySwipedScreenshot(LayoutDirection.Ltr, 0.5f, true,
+            "swiped_to_right_50_percent_ltr")
+    }
+
+    @Test
+    fun on_dismiss_overload_swiped_to_right_50_percent_rtl() {
+        verifySwipedScreenshot(LayoutDirection.Rtl, 0.5f, true,
+            "swiped_to_right_50_percent_rtl")
+    }
+
     private fun verifySwipedScreenshot(
         layoutDirection: LayoutDirection,
         swipedPercentage: Float,
+        isOnDismissOverload: Boolean = false,
+        goldenIdentifier: String = testName.methodName
     ) {
         rule.setContentWithTheme {
             CompositionLocalProvider(LocalLayoutDirection provides layoutDirection) {
                 val state = rememberSwipeToDismissBoxState()
-                SwipeToDismissBox(
-                    modifier = Modifier.testTag(TEST_TAG).size(106.dp),
-                    state = state
-                ) { isBackground ->
-                    if (isBackground) {
-                        Box(modifier = Modifier.align(Alignment.Center)) {
-                            Text(color = Color.White, text = "Background")
-                        }
-                    } else {
-                        Box(modifier = Modifier.align(Alignment.Center)) {
-                            Text(color = Color.White, text = "Foreground")
-                        }
+                if (isOnDismissOverload) {
+                    SwipeToDismissBox(
+                        onDismissed = {},
+                        modifier = Modifier
+                            .testTag(TEST_TAG)
+                            .size(106.dp),
+                        state = state
+                    ) { isBackground ->
+                        boxContent(isBackground = isBackground)
+                    }
+                } else {
+                    SwipeToDismissBox(
+                        modifier = Modifier
+                            .testTag(TEST_TAG)
+                            .size(106.dp),
+                        state = state
+                    ) { isBackground ->
+                        boxContent(isBackground = isBackground)
                     }
                 }
             }
@@ -108,6 +142,19 @@
 
         rule.onNodeWithTag(TEST_TAG)
             .captureToImage()
-            .assertAgainstGolden(screenshotRule, testName.methodName)
+            .assertAgainstGolden(screenshotRule, goldenIdentifier)
+    }
+
+    @Composable
+    private fun BoxScope.boxContent(isBackground: Boolean) {
+        if (isBackground) {
+            Box(modifier = Modifier.align(Alignment.Center)) {
+                Text(color = Color.White, text = "Background")
+            }
+        } else {
+            Box(modifier = Modifier.align(Alignment.Center)) {
+                Text(color = Color.White, text = "Foreground")
+            }
+        }
     }
 }
\ No newline at end of file
diff --git a/wear/compose/compose-material/src/main/java/androidx/wear/compose/material/SwipeToDismissBox.kt b/wear/compose/compose-material/src/main/java/androidx/wear/compose/material/SwipeToDismissBox.kt
index 5430358..204985b 100644
--- a/wear/compose/compose-material/src/main/java/androidx/wear/compose/material/SwipeToDismissBox.kt
+++ b/wear/compose/compose-material/src/main/java/androidx/wear/compose/material/SwipeToDismissBox.kt
@@ -38,7 +38,6 @@
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.composed
-import androidx.compose.ui.draw.clip
 import androidx.compose.ui.geometry.Offset
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.RectangleShape
@@ -258,7 +257,7 @@
     modifier: Modifier = Modifier,
     state: SwipeToDismissBoxState = rememberSwipeToDismissBoxState(),
     backgroundScrimColor: Color = MaterialTheme.colors.background,
-    contentScrimColor: Color = contentColorFor(backgroundScrimColor),
+    contentScrimColor: Color = MaterialTheme.colors.background,
     backgroundKey: Any = SwipeToDismissKeys.Background,
     contentKey: Any = SwipeToDismissKeys.Content,
     hasBackground: Boolean = true,
diff --git a/wear/protolayout/protolayout-proto/src/main/proto/color.proto b/wear/protolayout/protolayout-proto/src/main/proto/color.proto
index f5535d9..d19205a 100644
--- a/wear/protolayout/protolayout-proto/src/main/proto/color.proto
+++ b/wear/protolayout/protolayout-proto/src/main/proto/color.proto
@@ -10,9 +10,15 @@
 
 // A property defining a color.
 message ColorProp {
-  // The color value, in ARGB format.
+  // The static color value, in ARGB format. If a dynamic value is also set and the
+  // renderer supports dynamic values for the corresponding field, this static
+  // value will be ignored. If the static value is not specified, zero
+  // (equivalent to {@link Color#TRANSPARENT}) will be used instead.
   optional uint32 argb = 1;
 
-  // The dynamic value.
+  // The dynamic value. Note that when setting this value, the static value is
+  // still required to be set to support older renderers that only read the
+  // static value. If {@code dynamicValue} has an invalid result, the provided
+  // static value will be used instead.
   androidx.wear.protolayout.expression.proto.DynamicColor dynamic_value = 2;
 }
diff --git a/wear/protolayout/protolayout-proto/src/main/proto/dimension.proto b/wear/protolayout/protolayout-proto/src/main/proto/dimension.proto
index 2a15694..5ff8223 100644
--- a/wear/protolayout/protolayout-proto/src/main/proto/dimension.proto
+++ b/wear/protolayout/protolayout-proto/src/main/proto/dimension.proto
@@ -12,10 +12,15 @@
 
 // A type for linear dimensions, measured in dp.
 message DpProp {
-  // The value, in dp.
+  // The static value, in dp. If a dynamic value is also set and the renderer supports
+  // dynamic values for the corresponding field, this static value will be
+  // ignored. If the static value is not specified, zero will be used instead.
   optional float value = 1;
 
-  // The dynamic value, in dp.
+  // The dynamic value, in dp. Note that when setting this value, the static value is
+  // still required to be set to support older renderers that only read the
+  // static value. If {@code dynamicValue} has an invalid result, the provided
+  // static value will be used instead.
   androidx.wear.protolayout.expression.proto.DynamicFloat dynamic_value = 2;
 
   oneof optional_value_for_layout {
@@ -77,10 +82,15 @@
 
 // A type for angular dimensions, measured in degrees.
 message DegreesProp {
-  // The value, in degrees.
+  // The static value, in degrees. If a dynamic value is also set and the renderer
+  // supports dynamic values for the corresponding field, this static value will be
+  // ignored. If the static value is not specified, zero will be used instead.
   optional float value = 1;
 
-  // The dynamic value, in degrees.
+  // The dynamic value, in degrees. Note that when setting this value, the static value is
+  // still required to be set to support older renderers that only read the
+  // static value. If {@code dynamicValue} has an invalid result, the provided
+  // static value will be used instead.
   androidx.wear.protolayout.expression.proto.DynamicFloat dynamic_value = 2;
 
   oneof optional_value_for_layout {
diff --git a/wear/protolayout/protolayout-proto/src/main/proto/types.proto b/wear/protolayout/protolayout-proto/src/main/proto/types.proto
index 9d9227f..865f5e3 100644
--- a/wear/protolayout/protolayout-proto/src/main/proto/types.proto
+++ b/wear/protolayout/protolayout-proto/src/main/proto/types.proto
@@ -22,11 +22,17 @@
 message StringProp {
 
   oneof optional_value {
-    // The value.
+    // The static value. If a dynamic value is also set and the renderer supports
+    // dynamic values for the corresponding field, this static value will be
+    // ignored. If the static value is not specified, {@code null} will be used
+    // instead.
     string value = 1;
   }
 
-  // The dynamic value.
+  // The dynamic value. Note that when setting this value, the static value is
+  // still required to be set to support older renderers that only read the
+  // static value. If {@code dynamicValue} has an invalid result, the provided
+  // static value will be used instead.
   androidx.wear.protolayout.expression.proto.DynamicString dynamic_value = 2;
 
   oneof optional_value_for_layout {
@@ -42,10 +48,15 @@
 
 // A float type.
 message FloatProp {
-  // The value.
+  // The static value. If a dynamic value is also set and the renderer supports
+  // dynamic values for the corresponding field, this static value will be
+  // ignored. If the static value is not specified, zero will be used instead.
   optional float value = 1;
 
-  // The dynamic value.
+  // The dynamic value. Note that when setting this value, the static value is
+  // still required to be set to support older renderers that only read the
+  // static value. If {@code dynamicValue} has an invalid result, the provided
+  // static value will be used instead.
   androidx.wear.protolayout.expression.proto.DynamicFloat dynamic_value = 2;
 }
 
diff --git a/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/ColorBuilders.java b/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/ColorBuilders.java
index e70f637..36981b9 100644
--- a/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/ColorBuilders.java
+++ b/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/ColorBuilders.java
@@ -18,6 +18,8 @@
 
 import static androidx.wear.protolayout.expression.Preconditions.checkNotNull;
 
+import android.graphics.Color;
+
 import androidx.annotation.ColorInt;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
@@ -115,9 +117,10 @@
             }
 
             /**
-             * Sets the color value, in ARGB format.
-             * If a dynamic value is also set and the renderer supports dynamic values for the
-             * corresponding field, this static value will be ignored.
+             * Sets the static  color value, in ARGB format. If a dynamic value is also set and the
+             * renderer supports dynamic values for the corresponding field, this static value
+             * will be ignored. If the static value is not specified, zero (equivalent to {@link
+             * Color#TRANSPARENT}) will be used instead.
              *
              * @since 1.0
              */
@@ -130,7 +133,9 @@
 
             /**
              * Sets the dynamic value. Note that when setting this value, the static value is still
-             * required to be set to support older renderers that only read the static value.
+             * required to be set to support older renderers that only read the static value. If
+             * {@code dynamicValue} has an invalid result, the provided static value will be used
+             * instead.
              *
              * @since 1.2
              */
@@ -142,7 +147,13 @@
                 return this;
             }
 
-            /** Builds an instance from accumulated values. */
+            /**
+             * Builds an instance from accumulated values.
+             *
+             * @throws IllegalStateException if a dynamic value is set using {@link
+             *     #setDynamicValue(DynamicColor)} but neither {@link #Builder(int)} nor {@link
+             *     #setArgb(int)} is used to provide a static value.
+             */
             @NonNull
             public ColorProp build() {
                 if (mImpl.hasDynamicValue() && !mImpl.hasArgb()) {
diff --git a/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/DimensionBuilders.java b/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/DimensionBuilders.java
index 55627c1..1114eb6 100644
--- a/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/DimensionBuilders.java
+++ b/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/DimensionBuilders.java
@@ -229,7 +229,7 @@
             /**
              * Sets the static value, in dp. If a dynamic value is also set and the renderer
              * supports dynamic values for the corresponding field, this static value will be
-             * ignored.
+             * ignored. If the static value is not specified, zero will be used instead.
              *
              * @since 1.0
              */
@@ -243,6 +243,8 @@
             /**
              * Sets the dynamic value, in dp. Note that when setting this value, the static value is
              * still required to be set to support older renderers that only read the static value.
+             * If {@code dynamicValue} has an invalid result, the provided static value will be used
+             * instead.
              *
              * @since 1.2
              */
@@ -254,6 +256,13 @@
                 return this;
             }
 
+            /**
+             * Builds an instance from accumulated values.
+             *
+             * @throws IllegalStateException if a dynamic value is set using {@link
+             *     #setDynamicValue(DynamicFloat)} but neither {@link #Builder(float)} nor {@link
+             *     #setValue(float)} is used to provide a static value.
+             */
             @Override
             @NonNull
             public DpProp build() {
@@ -525,8 +534,7 @@
             public Builder() {}
 
             /**
-             * Sets the value, in sp. If a dynamic value is also set and the renderer supports
-             * dynamic values for the corresponding field, this static value will be ignored.
+             * Sets the value, in sp.
              *
              * @since 1.0
              */
@@ -727,7 +735,7 @@
             /**
              * Sets the static value, in degrees. If a dynamic value is also set and the renderer
              * supports dynamic values for the corresponding field, this static value will be
-             * ignored.
+             * ignored. If the static value is not specified, zero will be used instead.
              *
              * @since 1.0
              */
@@ -741,7 +749,8 @@
             /**
              * Sets the dynamic value, in degrees. Note that when setting this value, the static
              * value is still required to be set to support older renderers that only read the
-             * static value.
+             * static value. If {@code dynamicValue} has an invalid result, the provided static
+             * value will be used instead.
              *
              * @since 1.2
              */
@@ -753,7 +762,13 @@
                 return this;
             }
 
-            /** Builds an instance from accumulated values. */
+            /**
+             * Builds an instance from accumulated values.
+             *
+             * @throws IllegalStateException if a dynamic value is set using {@link
+             *     #setDynamicValue(DynamicFloat)} but neither {@link #Builder(float)} nor {@link
+             *     #setValue(float)} is used to provide a static value.
+             */
             @NonNull
             public DegreesProp build() {
                 if (mImpl.hasDynamicValue() && !mImpl.hasValue()) {
diff --git a/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/TypeBuilders.java b/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/TypeBuilders.java
index 15cf3aa..7a4cee0 100644
--- a/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/TypeBuilders.java
+++ b/wear/protolayout/protolayout/src/main/java/androidx/wear/protolayout/TypeBuilders.java
@@ -182,7 +182,8 @@
 
             /**
              * Sets the static value. If a dynamic value is also set and the renderer supports
-             * dynamic values for the corresponding field, this static value will be ignored.
+             * dynamic values for the corresponding field, this static value will be ignored. If the
+             * static value is not specified, {@code null} will be used instead.
              *
              * @since 1.0
              */
@@ -195,7 +196,9 @@
 
             /**
              * Sets the dynamic value. Note that when setting this value, the static value is still
-             * required to be set to support older renderers that only read the static value.
+             * required to be set to support older renderers that only read the static value. If
+             * {@code dynamicValue} has an invalid result, the provided static value will be used
+             * instead.
              *
              * @since 1.2
              */
@@ -207,7 +210,14 @@
                 return this;
             }
 
-            /** Builds an instance from accumulated values. */
+            /**
+             * Builds an instance from accumulated values.
+             *
+             * @throws IllegalStateException if a dynamic value is set using {@link
+             *     #setDynamicValue(DynamicBuilders.DynamicString)} but neither {@link
+             *     #Builder(String)} nor {@link #setValue(String)} is used to provide a static
+             *     value.
+             */
             @NonNull
             public StringProp build() {
                 if (mImpl.hasDynamicValue() && !mImpl.hasValue()) {
@@ -400,8 +410,8 @@
 
             /**
              * Sets the static value. If a dynamic value is also set and the renderer supports
-             * dynamic values for the corresponding field, this static value will be ignored.
-             * If the static value is not specified, Zero will be used instead. 
+             * dynamic values for the corresponding field, this static value will be ignored. If the
+             * static value is not specified, zero will be used instead.
              *
              * @since 1.0
              */
@@ -415,9 +425,8 @@
             /**
              * Sets the dynamic value. Note that when setting this value, the static value is still
              * required to be set (with either {@link #Builder(float)} or {@link #setValue(float)})
-             * to support older renderers that only read the static value. If {@code dynamicValue
-             * } has an invalid result, the provided static value will be used
-             * instead.
+             * to support older renderers that only read the static value. If {@code dynamicValue }
+             * has an invalid result, the provided static value will be used instead.
              *
              * @since 1.2
              */
@@ -432,15 +441,13 @@
             /**
              * Builds an instance from accumulated values.
              *
-             * @throws IllegalStateException if a dynamic value is set using
-             *                               {@link #setDynamicValue(DynamicFloat)} but neither
-             *                               {@link #Builder(float)} nor
-             *                               {@link #setValue(float)} is used to provide a static
-             *                               value.
+             * @throws IllegalStateException if a dynamic value is set using {@link
+             *     #setDynamicValue(DynamicFloat)} but neither {@link #Builder(float)} nor {@link
+             *     #setValue(float)} is used to provide a static value.
              */
             @NonNull
             public FloatProp build() {
-                if(mImpl.hasDynamicValue() && !mImpl.hasValue()){
+                if (mImpl.hasDynamicValue() && !mImpl.hasValue()) {
                     throw new IllegalStateException("Static value is missing.");
                 }
                 return new FloatProp(mImpl.build(), mFingerprint);
diff --git a/wear/watchface/watchface-complications-data-source-samples/build.gradle b/wear/watchface/watchface-complications-data-source-samples/build.gradle
index 6c7db9a..0ff1cd5 100644
--- a/wear/watchface/watchface-complications-data-source-samples/build.gradle
+++ b/wear/watchface/watchface-complications-data-source-samples/build.gradle
@@ -25,11 +25,14 @@
     api(project(":wear:watchface:watchface-complications-data-source"))
     api(libs.guavaAndroid)
     api(libs.kotlinStdlib)
+    // TODO(b/267170061): Use released protolayout-expression, remove protolayout-proto.
+    implementation(project(":wear:protolayout:protolayout-expression"))
+    implementation(project(":wear:protolayout:protolayout-proto"))
 }
 
 android {
     defaultConfig {
-        minSdkVersion 26
+        minSdkVersion 29
     }
     namespace "androidx.wear.watchface.complications.datasource.samples"
 }
diff --git a/wear/watchface/watchface-complications-data-source-samples/src/main/AndroidManifest.xml b/wear/watchface/watchface-complications-data-source-samples/src/main/AndroidManifest.xml
index dbbf0be..acd67f3 100644
--- a/wear/watchface/watchface-complications-data-source-samples/src/main/AndroidManifest.xml
+++ b/wear/watchface/watchface-complications-data-source-samples/src/main/AndroidManifest.xml
@@ -17,6 +17,10 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android">
     <uses-permission
         android:name="com.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE" />
+    <uses-permission
+        android:name="android.permission.ACTIVITY_RECOGNITION" />
+    <uses-permission
+        android:name="android.permission.BODY_SENSORS" />
     <application
         android:label="@string/app_name"
         android:icon="@drawable/circle"
@@ -215,6 +219,63 @@
             </intent-filter>
         </service>
 
+        <service android:name=".dynamic.TimeDataSourceService"
+            android:label="@string/dynamic_time_data_source_name"
+            android:exported="true"
+            android:icon="@drawable/circle"
+            android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER">
+            <meta-data
+                android:name="android.support.wearable.complications.SUPPORTED_TYPES"
+                android:value="RANGED_VALUE"/>
+            <meta-data
+                android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
+                android:value="0"/>
+            <intent-filter>
+                <action android:name=
+                    "android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST"/>
+            </intent-filter>
+        </service>
+
+        <service android:name=".dynamic.HeartRateDataSourceService"
+            android:label="@string/dynamic_heart_rate_data_source_name"
+            android:exported="true"
+            android:icon="@drawable/circle"
+            android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER">
+            <meta-data
+                android:name="android.support.wearable.complications.SUPPORTED_TYPES"
+                android:value="RANGED_VALUE"/>
+            <meta-data
+                android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
+                android:value="0"/>
+            <meta-data
+                android:name="android.support.wearable.complications.PROVIDER_CONFIG_ACTION"
+                android:value="androidx.wear.watchface.complications.datasource.samples.dynamic.REQUEST_BODY_SENSORS_PERMISSION"/>
+            <intent-filter>
+                <action android:name=
+                    "android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST"/>
+            </intent-filter>
+        </service>
+
+        <service android:name=".dynamic.StepsDataSourceService"
+            android:label="@string/dynamic_steps_data_source_name"
+            android:exported="true"
+            android:icon="@drawable/circle"
+            android:permission="com.google.android.wearable.permission.BIND_COMPLICATION_PROVIDER">
+            <meta-data
+                android:name="android.support.wearable.complications.SUPPORTED_TYPES"
+                android:value="RANGED_VALUE"/>
+            <meta-data
+                android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
+                android:value="0"/>
+            <meta-data
+                android:name="android.support.wearable.complications.PROVIDER_CONFIG_ACTION"
+                android:value="androidx.wear.watchface.complications.datasource.samples.dynamic.REQUEST_ACTIVITY_RECOGNITION_PERMISSION"/>
+            <intent-filter>
+                <action android:name=
+                    "android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST"/>
+            </intent-filter>
+        </service>
+
         <activity
             android:name=".ConfigActivity"
             android:exported="true"
@@ -227,5 +288,19 @@
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
+        <activity
+            android:name=".dynamic.RequestPermissionActivity"
+            android:exported="true"
+            android:label="@string/config_title" >
+            <intent-filter>
+                <action android:name=
+                    "androidx.wear.watchface.complications.datasource.samples.dynamic.REQUEST_ACTIVITY_RECOGNITION_PERMISSION" />
+                <action android:name=
+                    "androidx.wear.watchface.complications.datasource.samples.dynamic.REQUEST_BODY_SENSORS_PERMISSION" />
+                <category android:name=
+                    "android.support.wearable.complications.category.PROVIDER_CONFIG" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
     </application>
 </manifest>
diff --git a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/dynamic/HeartRateDataSourceService.kt b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/dynamic/HeartRateDataSourceService.kt
new file mode 100644
index 0000000..83548da
--- /dev/null
+++ b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/dynamic/HeartRateDataSourceService.kt
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.watchface.complications.datasource.samples.dynamic
+
+import android.Manifest.permission
+import android.content.pm.PackageManager.PERMISSION_GRANTED
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat
+import androidx.wear.protolayout.expression.PlatformHealthSources
+import androidx.wear.watchface.complications.data.ComplicationData
+import androidx.wear.watchface.complications.data.ComplicationType
+import androidx.wear.watchface.complications.data.DynamicComplicationText
+import androidx.wear.watchface.complications.data.PlainComplicationText
+import androidx.wear.watchface.complications.data.RangedValueComplicationData
+import androidx.wear.watchface.complications.datasource.ComplicationDataSourceService
+import androidx.wear.watchface.complications.datasource.ComplicationRequest
+
+class HeartRateDataSourceService : ComplicationDataSourceService() {
+    override fun onComplicationRequest(
+        request: ComplicationRequest,
+        listener: ComplicationRequestListener
+    ) {
+        val fallbackText = PlainComplicationText.Builder("--").build()
+
+        if (checkSelfPermission(permission.BODY_SENSORS) != PERMISSION_GRANTED) {
+            listener.onComplicationData(
+                RangedValueComplicationData.Builder(
+                        value = 0f,
+                        min = 0f,
+                        max = 200f,
+                        contentDescription = fallbackText,
+                    )
+                    .setText(fallbackText)
+                    .build()
+            )
+            return
+        }
+
+        val value = PlatformHealthSources.heartRateBpm()
+        val text = DynamicComplicationText(value.format(), "--")
+
+        listener.onComplicationData(
+            RangedValueComplicationData.Builder(
+                    dynamicValue =
+                        DynamicFloat.onCondition(value.gt(200f))
+                            .use(DynamicFloat.constant(200f))
+                            .elseUse(value),
+                    fallbackValue = 0f,
+                    min = 0f,
+                    max = 200f,
+                    contentDescription = text,
+                )
+                .setText(text)
+                .setDynamicValueInvalidationFallback(
+                    RangedValueComplicationData.Builder(
+                            value = 0f,
+                            min = 0f,
+                            max = 200f,
+                            contentDescription = fallbackText,
+                        )
+                        .setText(fallbackText)
+                        .build()
+                )
+                .build()
+        )
+    }
+
+    override fun getPreviewData(type: ComplicationType): ComplicationData {
+        val text = PlainComplicationText.Builder("82").build()
+        return RangedValueComplicationData.Builder(
+                value = 82f,
+                min = 0f,
+                max = 200f,
+                contentDescription = text,
+            )
+            .setText(text)
+            .build()
+    }
+}
diff --git a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/dynamic/RequestPermissionActivity.kt b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/dynamic/RequestPermissionActivity.kt
new file mode 100644
index 0000000..037c838
--- /dev/null
+++ b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/dynamic/RequestPermissionActivity.kt
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.watchface.complications.datasource.samples.dynamic
+
+import android.Manifest.permission
+import android.app.Activity
+import android.content.pm.PackageManager.PERMISSION_GRANTED
+import android.os.Bundle
+
+class RequestPermissionActivity : Activity() {
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+
+        val permission =
+            requireNotNull(ACTION_TO_PERMISSION[intent.action]) {
+                "Unknown action: ${intent.action}"
+            }
+        if (checkSelfPermission(permission) == PERMISSION_GRANTED) {
+            setResult(RESULT_OK)
+            finish()
+            return
+        }
+        requestPermissions(arrayOf(permission), 0)
+    }
+
+    override fun onRequestPermissionsResult(
+        requestCode: Int,
+        permissions: Array<out String>,
+        grantResults: IntArray
+    ) {
+        if (grantResults contentEquals intArrayOf(PERMISSION_GRANTED)) {
+            setResult(RESULT_OK)
+        } else {
+            setResult(RESULT_CANCELED)
+        }
+        finish()
+    }
+
+    companion object {
+        private val ACTION_TO_PERMISSION: Map<String, String> =
+            mapOf(
+                "androidx.wear.watchface.complications.datasource.samples.dynamic.REQUEST_ACTIVITY_RECOGNITION_PERMISSION" to // ktlint-disable max-line-length
+                permission.ACTIVITY_RECOGNITION,
+                "androidx.wear.watchface.complications.datasource.samples.dynamic.REQUEST_BODY_SENSORS_PERMISSION" to // ktlint-disable max-line-length
+                permission.BODY_SENSORS,
+            )
+    }
+}
diff --git a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/dynamic/StepsDataSourceService.kt b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/dynamic/StepsDataSourceService.kt
new file mode 100644
index 0000000..d03179c
--- /dev/null
+++ b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/dynamic/StepsDataSourceService.kt
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.watchface.complications.datasource.samples.dynamic
+
+import android.Manifest.permission
+import android.content.pm.PackageManager.PERMISSION_GRANTED
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat
+import androidx.wear.protolayout.expression.PlatformHealthSources
+import androidx.wear.watchface.complications.data.ComplicationData
+import androidx.wear.watchface.complications.data.ComplicationType
+import androidx.wear.watchface.complications.data.DynamicComplicationText
+import androidx.wear.watchface.complications.data.PlainComplicationText
+import androidx.wear.watchface.complications.data.RangedValueComplicationData
+import androidx.wear.watchface.complications.datasource.ComplicationDataSourceService
+import androidx.wear.watchface.complications.datasource.ComplicationRequest
+
+class StepsDataSourceService : ComplicationDataSourceService() {
+    override fun onComplicationRequest(
+        request: ComplicationRequest,
+        listener: ComplicationRequestListener
+    ) {
+        val fallbackText = PlainComplicationText.Builder("--").build()
+
+        if (checkSelfPermission(permission.ACTIVITY_RECOGNITION) != PERMISSION_GRANTED) {
+            listener.onComplicationData(
+                RangedValueComplicationData.Builder(
+                        value = 0f,
+                        min = 0f,
+                        max = 1000f,
+                        contentDescription = fallbackText,
+                    )
+                    .setText(fallbackText)
+                    .build()
+            )
+            return
+        }
+
+        val value = PlatformHealthSources.dailySteps()
+        val text = DynamicComplicationText(value.format(), "--")
+
+        listener.onComplicationData(
+            RangedValueComplicationData.Builder(
+                    dynamicValue =
+                        DynamicFloat.onCondition(value.gt(1000))
+                            .use(DynamicFloat.constant(1000f))
+                            .elseUse(value.asFloat()),
+                    fallbackValue = 0f,
+                    min = 0f,
+                    max = 1000f,
+                    contentDescription = text,
+                )
+                .setText(text)
+                .setDynamicValueInvalidationFallback(
+                    RangedValueComplicationData.Builder(
+                            value = 0f,
+                            min = 0f,
+                            max = 200f,
+                            contentDescription = fallbackText,
+                        )
+                        .setText(fallbackText)
+                        .build()
+                )
+                .build()
+        )
+    }
+
+    override fun getPreviewData(type: ComplicationType): ComplicationData {
+        val text = PlainComplicationText.Builder("123").build()
+        return RangedValueComplicationData.Builder(
+                value = 123f,
+                min = 0f,
+                max = 1000f,
+                contentDescription = text,
+            )
+            .setText(text)
+            .build()
+    }
+}
diff --git a/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/dynamic/TimeDataSourceService.kt b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/dynamic/TimeDataSourceService.kt
new file mode 100644
index 0000000..5e9ccf8
--- /dev/null
+++ b/wear/watchface/watchface-complications-data-source-samples/src/main/java/androidx/wear/watchface/complications/datasource/samples/dynamic/TimeDataSourceService.kt
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.watchface.complications.datasource.samples.dynamic
+
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicDuration
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicInstant
+import androidx.wear.protolayout.expression.DynamicBuilders.DynamicString
+import androidx.wear.watchface.complications.data.ComplicationData
+import androidx.wear.watchface.complications.data.ComplicationType
+import androidx.wear.watchface.complications.data.DynamicComplicationText
+import androidx.wear.watchface.complications.data.PlainComplicationText
+import androidx.wear.watchface.complications.data.RangedValueComplicationData
+import androidx.wear.watchface.complications.datasource.ComplicationDataSourceService
+import androidx.wear.watchface.complications.datasource.ComplicationRequest
+import java.time.Instant.EPOCH
+
+class TimeDataSourceService : ComplicationDataSourceService() {
+    override fun onComplicationRequest(
+        request: ComplicationRequest,
+        listener: ComplicationRequestListener
+    ) {
+        val epochDuration: DynamicDuration =
+            DynamicInstant.withSecondsPrecision(EPOCH)
+                .durationUntil(DynamicInstant.platformTimeWithSecondsPrecision())
+        val text =
+            DynamicComplicationText(
+                epochDuration.minutesPart
+                    .format()
+                    .concat(DynamicString.constant(":"))
+                    .concat(epochDuration.secondsPart.format()),
+                "--"
+            )
+
+        listener.onComplicationData(
+            RangedValueComplicationData.Builder(
+                    dynamicValue = epochDuration.secondsPart.rem(10f),
+                    fallbackValue = 0f,
+                    min = 0f,
+                    max = 9f,
+                    contentDescription = text,
+                )
+                .setText(text)
+                .build()
+        )
+    }
+
+    override fun getPreviewData(type: ComplicationType): ComplicationData {
+        val text = PlainComplicationText.Builder("12:42").build()
+        return RangedValueComplicationData.Builder(
+                value = 2f,
+                min = 0f,
+                max = 9f,
+                contentDescription = text,
+            )
+            .setText(text)
+            .build()
+    }
+}
diff --git a/wear/watchface/watchface-complications-data-source-samples/src/main/res/values/strings.xml b/wear/watchface/watchface-complications-data-source-samples/src/main/res/values/strings.xml
index 84c8731..e5b107f 100644
--- a/wear/watchface/watchface-complications-data-source-samples/src/main/res/values/strings.xml
+++ b/wear/watchface/watchface-complications-data-source-samples/src/main/res/values/strings.xml
@@ -26,6 +26,9 @@
     <string name="color_ramp2_data_source_name" translatable="false">Non interpolated color ramp</string>
     <string name="goal_progress_data_source_name" translatable="false">Goal Progress</string>
     <string name="weighted_elements_data_source_name" translatable="false">Weighted Elements</string>
+    <string name="dynamic_time_data_source_name" translatable="false">Example Dynamic Time</string>
+    <string name="dynamic_heart_rate_data_source_name" translatable="false">Example Dynamic Heart Rate</string>
+    <string name="dynamic_steps_data_source_name" translatable="false">Example Dynamic Steps</string>
 
     <string name="config_title" translatable="false">Configuration</string>
     <string name="config_button_title" translatable="false">Generate</string>
diff --git a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/ComplicationDataEvaluator.kt b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/ComplicationDataEvaluator.kt
index 7aee659..c26aa5e 100644
--- a/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/ComplicationDataEvaluator.kt
+++ b/wear/watchface/watchface-complications-data/src/main/java/androidx/wear/watchface/complications/data/ComplicationDataEvaluator.kt
@@ -43,15 +43,12 @@
 import kotlinx.coroutines.currentCoroutineContext
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.flow.distinctUntilChanged
 import kotlinx.coroutines.flow.emitAll
-import kotlinx.coroutines.flow.filter
 import kotlinx.coroutines.flow.flow
-import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.mapNotNull
-import kotlinx.coroutines.flow.merge
 import kotlinx.coroutines.flow.update
-import kotlinx.coroutines.flow.updateAndGet
 import kotlinx.coroutines.invoke
 import kotlinx.coroutines.launch
 
@@ -125,17 +122,21 @@
             ) -> WireComplicationData.Builder,
     ): Flow<WireComplicationData> {
         if (unevaluatedEntries.isNullOrEmpty()) return this
-        val evaluatedEntriesFlow: Flow<List<WireComplicationData>> =
-            combine(unevaluatedEntries.map { evaluate(it) })
+        val evaluatedEntriesFlow: Flow<Array<WireComplicationData>> =
+            combine(unevaluatedEntries.map { evaluate(it) }) { it }
 
-        return this.combine(evaluatedEntriesFlow).map {
-            (data: WireComplicationData, evaluatedEntries: List<WireComplicationData>?) ->
+        return this.combine(evaluatedEntriesFlow) {
+            data: WireComplicationData,
+            evaluatedEntries: Array<WireComplicationData> ->
+
             // Not mutating if invalid.
-            if (data === INVALID_DATA) return@map data
+            if (data === INVALID_DATA) return@combine data
             // An entry is invalid, emitting invalid.
-            if (evaluatedEntries.any { it === INVALID_DATA }) return@map INVALID_DATA
+            if (evaluatedEntries.any { it === INVALID_DATA }) return@combine INVALID_DATA
             // All is well, mutating the input.
-            return@map WireComplicationData.Builder(data).setter(evaluatedEntries).build()
+            return@combine WireComplicationData.Builder(data)
+                .setter(evaluatedEntries.toList())
+                .build()
         }
     }
 
@@ -152,17 +153,18 @@
         if (unevaluatedPlaceholder == null) return this
         val evaluatedPlaceholderFlow: Flow<WireComplicationData> = evaluate(unevaluatedPlaceholder)
 
-        return this.combine(evaluatedPlaceholderFlow).map {
-            (data: WireComplicationData, evaluatedPlaceholder: WireComplicationData?) ->
+        return this.combine(evaluatedPlaceholderFlow) {
+            data: WireComplicationData,
+            evaluatedPlaceholder: WireComplicationData ->
             if (!keepDynamicValues && data.type != TYPE_NO_DATA) {
                 // Clearing the placeholder when data is not TYPE_NO_DATA (it was meant as an
                 // dynamic value fallback).
-                return@map WireComplicationData.Builder(data).setPlaceholder(null).build()
+                return@combine WireComplicationData.Builder(data).setPlaceholder(null).build()
             }
             // Placeholder required but invalid, emitting invalid.
-            if (evaluatedPlaceholder === INVALID_DATA) return@map INVALID_DATA
+            if (evaluatedPlaceholder === INVALID_DATA) return@combine INVALID_DATA
             // All is well, mutating the input.
-            return@map WireComplicationData.Builder(data)
+            return@combine WireComplicationData.Builder(data)
                 .setPlaceholder(evaluatedPlaceholder)
                 .build()
         }
@@ -299,22 +301,26 @@
                     DynamicTypeEvaluator.Config.Builder()
                         .apply { stateStore?.let { setStateStore(it) } }
                         .apply { timeGateway?.let { setTimeGateway(it) } }
-                        .apply { sensorGateway?.let {
-                            addPlatformDataProvider(
-                                SensorGatewaySingleDataProvider(
-                                    sensorGateway, PlatformHealthSources.Keys.HEART_RATE_BPM
-                                ),
-                                Collections.singleton(PlatformHealthSources.Keys.HEART_RATE_BPM)
-                                    as Set<PlatformDataKey<*>>
-                            )
-                            addPlatformDataProvider(
-                                SensorGatewaySingleDataProvider(
-                                    sensorGateway, PlatformHealthSources.Keys.DAILY_STEPS
-                                ),
-                                Collections.singleton(PlatformHealthSources.Keys.DAILY_STEPS)
-                                    as Set<PlatformDataKey<*>>
-                            )
-                        } }
+                        .apply {
+                            sensorGateway?.let {
+                                addPlatformDataProvider(
+                                    SensorGatewaySingleDataProvider(
+                                        sensorGateway,
+                                        PlatformHealthSources.Keys.HEART_RATE_BPM
+                                    ),
+                                    Collections.singleton(PlatformHealthSources.Keys.HEART_RATE_BPM)
+                                        as Set<PlatformDataKey<*>>
+                                )
+                                addPlatformDataProvider(
+                                    SensorGatewaySingleDataProvider(
+                                        sensorGateway,
+                                        PlatformHealthSources.Keys.DAILY_STEPS
+                                    ),
+                                    Collections.singleton(PlatformHealthSources.Keys.DAILY_STEPS)
+                                        as Set<PlatformDataKey<*>>
+                                )
+                            }
+                        }
                         .build()
                 )
             try {
@@ -413,35 +419,3 @@
         runnable.run()
     }
 }
-
-/** Replacement of [kotlinx.coroutines.flow.combine], which doesn't seem to work. */
-internal fun <T> combine(flows: List<Flow<T>>): Flow<List<T>> = flow {
-    data class ValueExists(val value: T?, val exists: Boolean)
-    val latest = MutableStateFlow(List(flows.size) { ValueExists(null, false) })
-    @Suppress("UNCHECKED_CAST") // Flow<List<T?>> -> Flow<List<T>> safe after filtering exists.
-    emitAll(
-        flows
-            .mapIndexed { i, flow -> flow.map { i to it } } // List<Flow<Int, T>> (indexed flows)
-            .merge() // Flow<Int, T>
-            .map { (i, value) ->
-                // Updating latest and returning the current latest.
-                latest.updateAndGet {
-                    val newLatest = it.toMutableList()
-                    newLatest[i] = ValueExists(value, true)
-                    newLatest
-                }
-            } // Flow<List<ValueExists>>
-            // Filtering emissions until we have all values.
-            .filter { values -> values.all { it.exists } }
-            // Flow<List<T>> + defensive copy.
-            .map { values -> values.map { it.value } } as Flow<List<T>>
-    )
-}
-
-/**
- * Another replacement of [kotlinx.coroutines.flow.combine] which is similar to
- * `combine(List<Flow<T>>)` but allows different types for each flow.
- */
-@Suppress("UNCHECKED_CAST")
-internal fun <T1, T2> Flow<T1>.combine(other: Flow<T2>): Flow<Pair<T1, T2>> =
-    combine(listOf(this as Flow<*>, other as Flow<*>)).map { (a, b) -> (a as T1) to (b as T2) }
diff --git a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/ComplicationDataEvaluatorTest.kt b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/ComplicationDataEvaluatorTest.kt
index 01fdd1e..289c1f5 100644
--- a/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/ComplicationDataEvaluatorTest.kt
+++ b/wear/watchface/watchface-complications-data/src/test/java/androidx/wear/watchface/complications/data/ComplicationDataEvaluatorTest.kt
@@ -32,13 +32,17 @@
 import com.google.common.truth.Expect
 import com.google.common.truth.Truth.assertThat
 import java.time.Instant
+import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.SharingStarted
 import kotlinx.coroutines.flow.firstOrNull
 import kotlinx.coroutines.flow.shareIn
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.runBlocking
+import kotlinx.coroutines.test.StandardTestDispatcher
+import kotlinx.coroutines.test.TestDispatcher
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
@@ -54,6 +58,9 @@
 class ComplicationDataEvaluatorTest {
     @get:Rule val expect = Expect.create()
 
+    @OptIn(ExperimentalCoroutinesApi::class) // StandardTestDispatcher no longer experimental.
+    private val dispatcher: CoroutineDispatcher = StandardTestDispatcher()
+
     @Before
     fun setup() {
         ShadowLog.setLoggable("ComplicationData", Log.DEBUG)
@@ -300,13 +307,15 @@
                 evaluator
                     .evaluate(expressed)
                     .shareIn(
-                        CoroutineScope(Dispatchers.Main.immediate),
+                        CoroutineScope(dispatcher),
                         SharingStarted.Eagerly,
                         replay = 10,
                     )
 
+            advanceUntilIdle()
             for (state in scenario.states) {
                 stateStore.setAppStateEntryValues(state)
+                advanceUntilIdle()
             }
 
             expect
@@ -410,6 +419,11 @@
             )
     }
 
+    private fun advanceUntilIdle() {
+        @OptIn(ExperimentalCoroutinesApi::class) // StandardTestDispatcher no longer experimental.
+        (dispatcher as TestDispatcher).scheduler.advanceUntilIdle()
+    }
+
     private companion object {
         /** Converts `[{a: A}, {b: B}, {c: C}]` to `[{a: A}, {a: A, b: B}, {a: A, b: B, c: C}]`. */
         fun <K, V> aggregate(vararg maps: Map<K, V>): List<Map<K, V>> =
diff --git a/window/extensions/extensions/api/current.txt b/window/extensions/extensions/api/current.txt
index 490edb0..20f4ee8 100644
--- a/window/extensions/extensions/api/current.txt
+++ b/window/extensions/extensions/api/current.txt
@@ -16,13 +16,31 @@
 
 package androidx.window.extensions.area {
 
+  public interface ExtensionWindowAreaPresentation {
+    method public android.content.Context getPresentationContext();
+    method public void setPresentationView(android.view.View);
+  }
+
+  public interface ExtensionWindowAreaStatus {
+    method public android.util.DisplayMetrics getWindowAreaDisplayMetrics();
+    method public int getWindowAreaStatus();
+  }
+
   public interface WindowAreaComponent {
+    method public default void addRearDisplayPresentationStatusListener(androidx.window.extensions.core.util.function.Consumer<androidx.window.extensions.area.ExtensionWindowAreaStatus!>);
     method public void addRearDisplayStatusListener(androidx.window.extensions.core.util.function.Consumer<java.lang.Integer!>);
+    method public default void endRearDisplayPresentationSession();
     method public void endRearDisplaySession();
+    method public default android.util.DisplayMetrics getRearDisplayMetrics();
+    method public default androidx.window.extensions.area.ExtensionWindowAreaPresentation? getRearDisplayPresentation();
+    method public default void removeRearDisplayPresentationStatusListener(androidx.window.extensions.core.util.function.Consumer<androidx.window.extensions.area.ExtensionWindowAreaStatus!>);
     method public void removeRearDisplayStatusListener(androidx.window.extensions.core.util.function.Consumer<java.lang.Integer!>);
+    method public default void startRearDisplayPresentationSession(android.app.Activity, androidx.window.extensions.core.util.function.Consumer<java.lang.Integer!>);
     method public void startRearDisplaySession(android.app.Activity, androidx.window.extensions.core.util.function.Consumer<java.lang.Integer!>);
     field public static final int SESSION_STATE_ACTIVE = 1; // 0x1
+    field public static final int SESSION_STATE_CONTENT_VISIBLE = 2; // 0x2
     field public static final int SESSION_STATE_INACTIVE = 0; // 0x0
+    field public static final int STATUS_ACTIVE = 3; // 0x3
     field public static final int STATUS_AVAILABLE = 2; // 0x2
     field public static final int STATUS_UNAVAILABLE = 1; // 0x1
     field public static final int STATUS_UNSUPPORTED = 0; // 0x0
diff --git a/window/extensions/extensions/api/restricted_current.txt b/window/extensions/extensions/api/restricted_current.txt
index 490edb0..20f4ee8 100644
--- a/window/extensions/extensions/api/restricted_current.txt
+++ b/window/extensions/extensions/api/restricted_current.txt
@@ -16,13 +16,31 @@
 
 package androidx.window.extensions.area {
 
+  public interface ExtensionWindowAreaPresentation {
+    method public android.content.Context getPresentationContext();
+    method public void setPresentationView(android.view.View);
+  }
+
+  public interface ExtensionWindowAreaStatus {
+    method public android.util.DisplayMetrics getWindowAreaDisplayMetrics();
+    method public int getWindowAreaStatus();
+  }
+
   public interface WindowAreaComponent {
+    method public default void addRearDisplayPresentationStatusListener(androidx.window.extensions.core.util.function.Consumer<androidx.window.extensions.area.ExtensionWindowAreaStatus!>);
     method public void addRearDisplayStatusListener(androidx.window.extensions.core.util.function.Consumer<java.lang.Integer!>);
+    method public default void endRearDisplayPresentationSession();
     method public void endRearDisplaySession();
+    method public default android.util.DisplayMetrics getRearDisplayMetrics();
+    method public default androidx.window.extensions.area.ExtensionWindowAreaPresentation? getRearDisplayPresentation();
+    method public default void removeRearDisplayPresentationStatusListener(androidx.window.extensions.core.util.function.Consumer<androidx.window.extensions.area.ExtensionWindowAreaStatus!>);
     method public void removeRearDisplayStatusListener(androidx.window.extensions.core.util.function.Consumer<java.lang.Integer!>);
+    method public default void startRearDisplayPresentationSession(android.app.Activity, androidx.window.extensions.core.util.function.Consumer<java.lang.Integer!>);
     method public void startRearDisplaySession(android.app.Activity, androidx.window.extensions.core.util.function.Consumer<java.lang.Integer!>);
     field public static final int SESSION_STATE_ACTIVE = 1; // 0x1
+    field public static final int SESSION_STATE_CONTENT_VISIBLE = 2; // 0x2
     field public static final int SESSION_STATE_INACTIVE = 0; // 0x0
+    field public static final int STATUS_ACTIVE = 3; // 0x3
     field public static final int STATUS_AVAILABLE = 2; // 0x2
     field public static final int STATUS_UNAVAILABLE = 1; // 0x1
     field public static final int STATUS_UNSUPPORTED = 0; // 0x0
diff --git a/window/extensions/extensions/src/main/java/androidx/window/extensions/area/ExtensionWindowAreaPresentation.java b/window/extensions/extensions/src/main/java/androidx/window/extensions/area/ExtensionWindowAreaPresentation.java
new file mode 100644
index 0000000..ddb8e8a
--- /dev/null
+++ b/window/extensions/extensions/src/main/java/androidx/window/extensions/area/ExtensionWindowAreaPresentation.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.window.extensions.area;
+
+import android.content.Context;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+
+/**
+ * An interface representing a container in an extension window area in which app content can be
+ * shown.
+ *
+ * @since {@link androidx.window.extensions.WindowExtensions#VENDOR_API_LEVEL_3}
+ * @see WindowAreaComponent#getRearDisplayPresentation()
+ */
+public interface ExtensionWindowAreaPresentation {
+
+    /**
+     * Returns the {@link Context} for the window that is being used
+     * to display the additional content provided from the application.
+     */
+    @NonNull
+    Context getPresentationContext();
+
+    /**
+     * Sets the {@link View} that the application wants to display in the extension window area.
+     */
+    void setPresentationView(@NonNull View view);
+}
diff --git a/window/extensions/extensions/src/main/java/androidx/window/extensions/area/ExtensionWindowAreaStatus.java b/window/extensions/extensions/src/main/java/androidx/window/extensions/area/ExtensionWindowAreaStatus.java
new file mode 100644
index 0000000..2f521bc
--- /dev/null
+++ b/window/extensions/extensions/src/main/java/androidx/window/extensions/area/ExtensionWindowAreaStatus.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.window.extensions.area;
+
+import android.util.DisplayMetrics;
+
+import androidx.annotation.NonNull;
+
+/**
+ * Interface to provide information around the current status of a window area feature.
+ *
+ * @since {@link androidx.window.extensions.WindowExtensions#VENDOR_API_LEVEL_3}
+ * @see WindowAreaComponent#addRearDisplayPresentationStatusListener
+ */
+public interface ExtensionWindowAreaStatus {
+
+    /**
+     * Returns the {@link androidx.window.extensions.area.WindowAreaComponent.WindowAreaStatus}
+     * value that relates to the current status of a feature.
+     */
+    @WindowAreaComponent.WindowAreaStatus
+    int getWindowAreaStatus();
+
+    /**
+     * Returns the {@link DisplayMetrics} that corresponds to the window area that a feature
+     * interacts with. This is converted to size class information provided to developers.
+     */
+    @NonNull
+    DisplayMetrics getWindowAreaDisplayMetrics();
+}
diff --git a/window/extensions/extensions/src/main/java/androidx/window/extensions/area/WindowAreaComponent.java b/window/extensions/extensions/src/main/java/androidx/window/extensions/area/WindowAreaComponent.java
index 21d5a95..e20584c 100644
--- a/window/extensions/extensions/src/main/java/androidx/window/extensions/area/WindowAreaComponent.java
+++ b/window/extensions/extensions/src/main/java/androidx/window/extensions/area/WindowAreaComponent.java
@@ -17,9 +17,11 @@
 package androidx.window.extensions.area;
 
 import android.app.Activity;
+import android.util.DisplayMetrics;
 
 import androidx.annotation.IntDef;
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.annotation.RestrictTo;
 import androidx.window.extensions.WindowExtensions;
 import androidx.window.extensions.core.util.function.Consumer;
@@ -40,11 +42,12 @@
  * @see WindowExtensions#getWindowLayoutComponent()
  */
 public interface WindowAreaComponent {
-
     /**
      * WindowArea status constant to signify that the feature is
      * unsupported on this device. Could be due to the device not supporting that
      * specific feature.
+     *
+     * Since {@link WindowExtensions#VENDOR_API_LEVEL_2}
      */
     int STATUS_UNSUPPORTED = 0;
 
@@ -53,22 +56,35 @@
      * currently unavailable but is supported on this device. This value could signify
      * that the current device state does not support the specific feature or another
      * process is currently enabled in that feature.
+     *
+     * Since {@link WindowExtensions#VENDOR_API_LEVEL_2}
      */
     int STATUS_UNAVAILABLE = 1;
 
     /**
      * WindowArea status constant to signify that the feature is
      * available to be entered or enabled.
+     *
+     * Since {@link WindowExtensions#VENDOR_API_LEVEL_2}
      */
     int STATUS_AVAILABLE = 2;
 
+    /**
+     * WindowArea status constant to signify that the feature is
+     * already enabled.
+     *
+     * Since {@link WindowExtensions#VENDOR_API_LEVEL_3}
+     */
+    int STATUS_ACTIVE = 3;
+
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Retention(RetentionPolicy.SOURCE)
     @Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE})
     @IntDef({
             STATUS_UNSUPPORTED,
             STATUS_UNAVAILABLE,
-            STATUS_AVAILABLE
+            STATUS_AVAILABLE,
+            STATUS_ACTIVE
     })
     @interface WindowAreaStatus {}
 
@@ -80,19 +96,27 @@
     int SESSION_STATE_INACTIVE = 0;
 
     /**
-     * Session state constant to represent that there is an
-     * active session currently in progress. Used by the library to
-     * know when to return the session object to the developer when the
-     * session is created and active.
+     * Session state constant to represent that there is currently an active session. The library
+     * uses this state to know when a session is created and active. Note that this state is
+     * different from SESSION_STATE_CONTENT_VISIBLE, because the presentation content in this state
+     * is not visible.
      */
     int SESSION_STATE_ACTIVE = 1;
 
+    /**
+     * Session state constant to represent that there is an
+     * active presentation session currently in progress, and the content provided by the
+     * application is visible.
+     */
+    int SESSION_STATE_CONTENT_VISIBLE = 2;
+
     @RestrictTo(RestrictTo.Scope.LIBRARY)
     @Retention(RetentionPolicy.SOURCE)
     @Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE})
     @IntDef({
             SESSION_STATE_ACTIVE,
-            SESSION_STATE_INACTIVE
+            SESSION_STATE_INACTIVE,
+            SESSION_STATE_CONTENT_VISIBLE
     })
     @interface WindowAreaSessionState {}
 
@@ -106,21 +130,22 @@
      * correspond to the [WindowAreaStatus] value that aligns with the current status
      * of the rear display.
      * @param consumer interested in receiving updates to WindowAreaStatus.
+     * Since {@link WindowExtensions#VENDOR_API_LEVEL_2}
      */
-    void addRearDisplayStatusListener(@NonNull Consumer<@WindowAreaStatus Integer> consumer);
+    void addRearDisplayStatusListener(@NonNull Consumer<Integer> consumer);
 
     /**
      * Removes a listener no longer interested in receiving updates.
      * @param consumer no longer interested in receiving updates to WindowAreaStatus
+     * Since {@link WindowExtensions#VENDOR_API_LEVEL_2}
      */
-    void removeRearDisplayStatusListener(@NonNull Consumer<@WindowAreaStatus Integer> consumer);
+    void removeRearDisplayStatusListener(@NonNull Consumer<Integer> consumer);
 
     /**
      * Creates and starts a rear display session and sends state updates to the
      * consumer provided. This consumer will receive a constant represented by
      * [WindowAreaSessionState] to represent the state of the current rear display
-     * session. We will translate the values from the {@link Consumer} to a developer-friendly
-     * interface in the developer facing API.
+     * session. We will translate to a more friendly interface in the library.
      *
      * Because this is being called from the OEM provided extensions, the library
      * will post the result of the listener on the executor provided by the developer.
@@ -133,7 +158,9 @@
      * @throws UnsupportedOperationException if this method is called when RearDisplay
      * mode is not available. This could be to an incompatible device state or when
      * another process is currently in this mode.
+     * Since {@link WindowExtensions#VENDOR_API_LEVEL_2}
      */
+    @SuppressWarnings("ExecutorRegistration") // Jetpack will post it on the app-provided executor.
     void startRearDisplaySession(@NonNull Activity activity,
             @NonNull Consumer<@WindowAreaSessionState Integer> consumer);
 
@@ -141,6 +168,109 @@
      * Ends a RearDisplaySession and sends [STATE_INACTIVE] to the consumer
      * provided in the {@code startRearDisplaySession} method. This method is only
      * called through the {@code RearDisplaySession} provided to the developer.
+     * Since {@link WindowExtensions#VENDOR_API_LEVEL_2}
      */
     void endRearDisplaySession();
+
+    /**
+     * Adds a listener interested in receiving updates on the rear display presentation status
+     * of the device. Because this is being called from the OEM provided
+     * extensions, the library will post the result of the listener on the executor
+     * provided by the developer.
+     *
+     * The listener provided will receive {@link ExtensionWindowAreaStatus} values that
+     * correspond to the current status of the feature.
+     *
+     * @param consumer interested in receiving updates to {@link ExtensionWindowAreaStatus}.
+     * Since {@link WindowExtensions#VENDOR_API_LEVEL_3}
+     */
+    default void addRearDisplayPresentationStatusListener(
+            @NonNull Consumer<ExtensionWindowAreaStatus> consumer) {
+        throw new UnsupportedOperationException("This method must not be called unless there is a"
+                + " corresponding override implementation on the device.");
+    }
+
+    /**
+     * Removes a listener no longer interested in receiving updates.
+     *
+     * @param consumer no longer interested in receiving updates to WindowAreaStatus
+     * Since {@link WindowExtensions#VENDOR_API_LEVEL_3}
+     */
+    default void removeRearDisplayPresentationStatusListener(
+            @NonNull Consumer<ExtensionWindowAreaStatus> consumer) {
+        throw new UnsupportedOperationException("This method must not be called unless there is a"
+                + " corresponding override implementation on the device.");
+    }
+
+    /**
+     * Creates and starts a rear display presentation session and sends state updates to the
+     * consumer provided. This consumer will receive a constant represented by
+     * {@link WindowAreaSessionState} to represent the state of the current rear display
+     * session. We will translate to a more friendly interface in the library.
+     *
+     * Because this is being called from the OEM provided extensions, the library
+     * will post the result of the listener on the executor provided by the developer.
+     *
+     * Rear display presentation mode refers to a feature where an {@link Activity} can present
+     * additional content on a device with a second display that is facing the same direction
+     * as the rear camera (i.e. the cover display on a fold-in style device). The calling
+     * {@link Activity} stays on the user-facing display.
+     *
+     * @param activity that the OEM implementation will use as a base
+     * context and to identify the source display area of the request.
+     * The reference to the activity instance must not be stored in the OEM
+     * implementation to prevent memory leaks.
+     * @param consumer to provide updates to the client on the status of the session
+     * @throws UnsupportedOperationException if this method is called when rear display presentation
+     * mode is not available. This could be to an incompatible device state or when
+     * another process is currently in this mode.
+     * Since {@link WindowExtensions#VENDOR_API_LEVEL_3}
+     */
+    default void startRearDisplayPresentationSession(@NonNull Activity activity,
+            @NonNull Consumer<@WindowAreaSessionState Integer> consumer) {
+        throw new UnsupportedOperationException("This method must not be called unless there is a"
+                + " corresponding override implementation on the device.");
+    }
+
+    /**
+     * Ends the current rear display presentation session and provides updates to the
+     * callback provided. When this is ended, the presented content from the calling
+     * {@link Activity} will also be removed from the rear facing display.
+     * Because this is being called from the OEM provided extensions, the result of the listener
+     * will be posted on the executor provided by the developer at the initial call site.
+     *
+     * Since {@link WindowExtensions#VENDOR_API_LEVEL_3}
+     */
+    default void endRearDisplayPresentationSession() {
+        throw new UnsupportedOperationException("This method must not be called unless there is a"
+                + " corresponding override implementation on the device.");
+    }
+
+    /**
+     * Returns the {@link ExtensionWindowAreaPresentation} connected to the active
+     * rear display presentation session. If there is no session currently active, then it will
+     * return null.
+     *
+     * Since {@link WindowExtensions#VENDOR_API_LEVEL_3}
+     */
+    @Nullable
+    default ExtensionWindowAreaPresentation getRearDisplayPresentation() {
+        throw new UnsupportedOperationException("This method must not be called unless there is a"
+                + " corresponding override implementation on the device.");
+    }
+
+    /**
+     * Returns the {@link android.util.DisplayMetrics} associated with the rear facing display. If
+     * there is no rear facing display available on the device, returns an empty
+     * {@link android.util.DisplayMetrics} object.
+     *
+     * Since {@link WindowExtensions#VENDOR_API_LEVEL_3}
+     */
+    // TODO(b/273807238): Investigate how we can provide a listener to get runtime changes in
+    //  rear display metrics to better support other form-factors in the future.
+    @NonNull
+    default DisplayMetrics getRearDisplayMetrics() {
+        throw new UnsupportedOperationException("This method must not be called unless there is a"
+                + " corresponding override implementation on the device.");
+    }
 }
diff --git a/work/work-testing/api/current.txt b/work/work-testing/api/current.txt
index e6473bb..fda4ffa 100644
--- a/work/work-testing/api/current.txt
+++ b/work/work-testing/api/current.txt
@@ -46,8 +46,13 @@
     method public static androidx.work.testing.TestDriver? getTestDriver(android.content.Context);
     method public static void initializeTestWorkManager(android.content.Context);
     method public static void initializeTestWorkManager(android.content.Context, androidx.work.Configuration);
-    method public static void initializeTestWorkManagerWithRealExecutors(android.content.Context);
-    method public static void initializeTestWorkManagerWithRealExecutors(android.content.Context, androidx.work.Configuration);
+    method public static void initializeTestWorkManager(android.content.Context, androidx.work.Configuration, androidx.work.testing.WorkManagerTestInitHelper.ExecutorsMode);
+    method public static void initializeTestWorkManager(android.content.Context, androidx.work.testing.WorkManagerTestInitHelper.ExecutorsMode);
+  }
+
+  public enum WorkManagerTestInitHelper.ExecutorsMode {
+    enum_constant public static final androidx.work.testing.WorkManagerTestInitHelper.ExecutorsMode LEGACY_OVERRIDE_WITH_SYNCHRONOUS_EXECUTORS;
+    enum_constant public static final androidx.work.testing.WorkManagerTestInitHelper.ExecutorsMode PRESERVE_EXECUTORS;
   }
 
 }
diff --git a/work/work-testing/api/restricted_current.txt b/work/work-testing/api/restricted_current.txt
index e6473bb..fda4ffa 100644
--- a/work/work-testing/api/restricted_current.txt
+++ b/work/work-testing/api/restricted_current.txt
@@ -46,8 +46,13 @@
     method public static androidx.work.testing.TestDriver? getTestDriver(android.content.Context);
     method public static void initializeTestWorkManager(android.content.Context);
     method public static void initializeTestWorkManager(android.content.Context, androidx.work.Configuration);
-    method public static void initializeTestWorkManagerWithRealExecutors(android.content.Context);
-    method public static void initializeTestWorkManagerWithRealExecutors(android.content.Context, androidx.work.Configuration);
+    method public static void initializeTestWorkManager(android.content.Context, androidx.work.Configuration, androidx.work.testing.WorkManagerTestInitHelper.ExecutorsMode);
+    method public static void initializeTestWorkManager(android.content.Context, androidx.work.testing.WorkManagerTestInitHelper.ExecutorsMode);
+  }
+
+  public enum WorkManagerTestInitHelper.ExecutorsMode {
+    enum_constant public static final androidx.work.testing.WorkManagerTestInitHelper.ExecutorsMode LEGACY_OVERRIDE_WITH_SYNCHRONOUS_EXECUTORS;
+    enum_constant public static final androidx.work.testing.WorkManagerTestInitHelper.ExecutorsMode PRESERVE_EXECUTORS;
   }
 
 }
diff --git a/work/work-testing/src/androidTest/java/androidx/work/testing/TestSchedulerRealExecutorTest.kt b/work/work-testing/src/androidTest/java/androidx/work/testing/TestSchedulerRealExecutorTest.kt
index 78b5732..db35c0e 100644
--- a/work/work-testing/src/androidTest/java/androidx/work/testing/TestSchedulerRealExecutorTest.kt
+++ b/work/work-testing/src/androidTest/java/androidx/work/testing/TestSchedulerRealExecutorTest.kt
@@ -33,6 +33,7 @@
 import androidx.work.impl.WorkManagerImpl
 import androidx.work.impl.model.WorkSpec
 import androidx.work.impl.utils.taskexecutor.SerialExecutor
+import androidx.work.testing.WorkManagerTestInitHelper.ExecutorsMode.PRESERVE_EXECUTORS
 import androidx.work.testing.workers.CountingTestWorker
 import androidx.work.testing.workers.RetryWorker
 import androidx.work.testing.workers.TestWorker
@@ -49,7 +50,7 @@
     val context = ApplicationProvider.getApplicationContext<Context>()
 
     init {
-        WorkManagerTestInitHelper.initializeTestWorkManagerWithRealExecutors(context)
+        WorkManagerTestInitHelper.initializeTestWorkManager(context, PRESERVE_EXECUTORS)
         CountingTestWorker.COUNT.set(0)
     }
 
diff --git a/work/work-testing/src/main/java/androidx/work/testing/WorkManagerTestInitHelper.java b/work/work-testing/src/main/java/androidx/work/testing/WorkManagerTestInitHelper.java
index 22155ed..8abaefb 100644
--- a/work/work-testing/src/main/java/androidx/work/testing/WorkManagerTestInitHelper.java
+++ b/work/work-testing/src/main/java/androidx/work/testing/WorkManagerTestInitHelper.java
@@ -17,6 +17,7 @@
 package androidx.work.testing;
 
 import static androidx.work.testing.TestWorkManagerImplKt.createTestWorkManagerImpl;
+import static androidx.work.testing.WorkManagerTestInitHelper.ExecutorsMode.LEGACY_OVERRIDE_WITH_SYNCHRONOUS_EXECUTORS;
 
 import android.content.Context;
 
@@ -57,48 +58,82 @@
     public static void initializeTestWorkManager(
             @NonNull Context context,
             @NonNull Configuration configuration) {
+        initializeTestWorkManager(context, configuration,
+                LEGACY_OVERRIDE_WITH_SYNCHRONOUS_EXECUTORS);
+    }
 
-        // Check if the configuration being used has overridden the task executor. If not,
-        // swap to SynchronousExecutor. This is to preserve existing behavior.
-        SerialExecutor serialExecutor;
-        if (configuration.isUsingDefaultTaskExecutor()) {
-            Configuration.Builder builder = new Configuration.Builder(configuration)
-                    .setTaskExecutor(new SynchronousExecutor());
-            configuration = builder.build();
-            serialExecutor = new SynchronousSerialExecutor();
+    /**
+     * Modes that control which executors are used in tests.
+     */
+    public enum ExecutorsMode {
+        /**
+         * Use executors as they are configured in passed {@link Configuration} and preserving
+         * real main thread.
+         */
+        PRESERVE_EXECUTORS,
+
+        /**
+         * Preserve old behavior of {@link #initializeTestWorkManager(Context)} and
+         * {@link #initializeTestWorkManager(Context, Configuration)}.
+         *
+         * <p> In this mode {@link SynchronousExecutor} is used instead of main thread. Similarly,
+         * {@link SynchronousExecutor} is used as {@link Configuration#getTaskExecutor()}, unless
+         * {@link Configuration#getTaskExecutor()} was explicitly set in {@code configuration}
+         * passed in {@link #initializeTestWorkManager(Context, Configuration, ExecutorsMode)}
+         */
+        LEGACY_OVERRIDE_WITH_SYNCHRONOUS_EXECUTORS
+    }
+
+    /**
+     * Initializes a test {@link androidx.work.WorkManager} that can be controlled via {@link
+     * TestDriver}.
+     *
+     * @param context The application {@link Context}
+     * @param configuration test configuration of WorkManager
+     * @param executorsMode mode controlling executors used by WorkManager in tests. See
+     *                      documentation of modes in {@link ExecutorsMode}
+     */
+    public static void initializeTestWorkManager(@NonNull Context context,
+            @NonNull Configuration configuration, @NonNull ExecutorsMode executorsMode) {
+        WorkManagerImpl workManager;
+        if (executorsMode == LEGACY_OVERRIDE_WITH_SYNCHRONOUS_EXECUTORS) {
+            SerialExecutor serialExecutor;
+            if (configuration.isUsingDefaultTaskExecutor()) {
+                Configuration.Builder builder = new Configuration.Builder(configuration)
+                        .setTaskExecutor(new SynchronousExecutor());
+                configuration = builder.build();
+                serialExecutor = new SynchronousSerialExecutor();
+            } else {
+                serialExecutor = new SerialExecutorImpl(configuration.getTaskExecutor());
+            }
+            workManager = createTestWorkManagerImpl(context, configuration, serialExecutor);
         } else {
-            serialExecutor = new SerialExecutorImpl(configuration.getTaskExecutor());
+            workManager = createTestWorkManagerImpl(context, configuration);
         }
-
-        WorkManagerImpl.setDelegate(
-                createTestWorkManagerImpl(context, configuration, serialExecutor)
-        );
+        WorkManagerImpl.setDelegate(workManager);
     }
 
     /**
-     * Initializes a test {@link androidx.work.WorkManager} with a default configuration and
-     * real threading unlike {@link #initializeTestWorkManager(Context)} that uses a
-     * {@link SynchronousExecutor} as main thread and both executors
-     * (see {@link Configuration#getTaskExecutor()} and {@link Configuration#getExecutor()}).
+     * Initializes a test {@link androidx.work.WorkManager} that can be controlled via {@link
+     * TestDriver}.
      *
      * @param context The application {@link Context}
+     * @param executorsMode mode controlling executors used by WorkManager in tests. See
+     *                      documentation of modes in {@link ExecutorsMode}
      */
-    public static void initializeTestWorkManagerWithRealExecutors(@NonNull Context context) {
-        Configuration configuration = new Configuration.Builder().build();
-        WorkManagerImpl.setDelegate(createTestWorkManagerImpl(context, configuration));
-    }
-
-    /**
-     * Initializes a test {@link androidx.work.WorkManager} with a default configuration and
-     * real threading unlike {@link #initializeTestWorkManager(Context, Configuration)} that uses a
-     * {@link SynchronousExecutor} as main thread.
-     *
-     * @param context The application {@link Context}
-     * @param configuration The {@link androidx.work.Configuration}
-     */
-    public static void initializeTestWorkManagerWithRealExecutors(
-            @NonNull Context context, @NonNull Configuration configuration) {
-        WorkManagerImpl.setDelegate(createTestWorkManagerImpl(context, configuration));
+    public static void initializeTestWorkManager(@NonNull Context context,
+            @NonNull ExecutorsMode executorsMode) {
+        Configuration configuration;
+        if (executorsMode == LEGACY_OVERRIDE_WITH_SYNCHRONOUS_EXECUTORS) {
+            SynchronousExecutor synchronousExecutor = new SynchronousExecutor();
+            configuration = new Configuration.Builder()
+                    .setExecutor(synchronousExecutor)
+                    .setTaskExecutor(synchronousExecutor)
+                    .build();
+        } else {
+            configuration = new Configuration.Builder().build();
+        }
+        initializeTestWorkManager(context, configuration, executorsMode);
     }
 
     /**