diff --git a/car/api/current.txt b/car/api/current.txt
index 958a4be..5aa26ed 100644
--- a/car/api/current.txt
+++ b/car/api/current.txt
@@ -231,6 +231,7 @@
     ctor public ListItem.ViewHolder(android.view.View);
     method public final void addCleanUp(androidx.car.widget.ListItem.ViewBinder<androidx.car.widget.ListItem.ViewHolder>);
     method public final void cleanUp();
+    method protected abstract void complyWithUxRestrictions(android.car.drivingstate.CarUxRestrictions);
   }
 
   public class ListItemAdapter extends androidx.recyclerview.widget.RecyclerView.Adapter implements androidx.car.widget.PagedListView.DividerVisibilityManager androidx.car.widget.PagedListView.ItemCap {
@@ -394,6 +395,7 @@
 
   public static class SeekbarListItem.ViewHolder extends androidx.car.widget.ListItem.ViewHolder {
     ctor public SeekbarListItem.ViewHolder(android.view.View);
+    method protected void complyWithUxRestrictions(android.car.drivingstate.CarUxRestrictions);
     method public android.widget.RelativeLayout getContainerLayout();
     method public android.widget.ImageView getPrimaryIcon();
     method public android.widget.SeekBar getSeekBar();
@@ -421,6 +423,7 @@
 
   public static class SubheaderListItem.ViewHolder extends androidx.car.widget.ListItem.ViewHolder {
     ctor public SubheaderListItem.ViewHolder(android.view.View);
+    method protected void complyWithUxRestrictions(android.car.drivingstate.CarUxRestrictions);
     method public android.widget.TextView getText();
   }
 
@@ -450,6 +453,7 @@
 
   public static class TextListItem.ViewHolder extends androidx.car.widget.ListItem.ViewHolder {
     ctor public TextListItem.ViewHolder(android.view.View);
+    method protected void complyWithUxRestrictions(android.car.drivingstate.CarUxRestrictions);
     method public android.widget.Button getAction1();
     method public android.view.View getAction1Divider();
     method public android.widget.Button getAction2();
diff --git a/car/src/main/java/androidx/car/widget/ListItem.java b/car/src/main/java/androidx/car/widget/ListItem.java
index 8103dd5..54a863f 100644
--- a/car/src/main/java/androidx/car/widget/ListItem.java
+++ b/car/src/main/java/androidx/car/widget/ListItem.java
@@ -3,16 +3,16 @@
 import android.car.drivingstate.CarUxRestrictions;
 import android.view.View;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.function.Function;
-
 import androidx.annotation.CallSuper;
 import androidx.annotation.Nullable;
 import androidx.annotation.StyleRes;
 import androidx.car.R;
 import androidx.recyclerview.widget.RecyclerView;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Function;
+
 /**
  * Definition of items that can be inserted into {@link ListItemAdapter}.
  *
@@ -252,6 +252,6 @@
          *
          * @param restrictions current car UX restrictions.
          */
-        abstract void complyWithUxRestrictions(CarUxRestrictions restrictions);
+        protected abstract void complyWithUxRestrictions(CarUxRestrictions restrictions);
     }
 }
diff --git a/car/src/main/java/androidx/car/widget/SeekbarListItem.java b/car/src/main/java/androidx/car/widget/SeekbarListItem.java
index 862c273..b6477c1 100644
--- a/car/src/main/java/androidx/car/widget/SeekbarListItem.java
+++ b/car/src/main/java/androidx/car/widget/SeekbarListItem.java
@@ -535,7 +535,7 @@
         }
 
         @Override
-        void complyWithUxRestrictions(CarUxRestrictions restrictions) {
+        protected void complyWithUxRestrictions(CarUxRestrictions restrictions) {
             CarUxRestrictionsUtils.comply(itemView.getContext(), restrictions, getText());
         }
 
diff --git a/car/src/main/java/androidx/car/widget/SubheaderListItem.java b/car/src/main/java/androidx/car/widget/SubheaderListItem.java
index 8724696..e1a371a 100644
--- a/car/src/main/java/androidx/car/widget/SubheaderListItem.java
+++ b/car/src/main/java/androidx/car/widget/SubheaderListItem.java
@@ -16,6 +16,8 @@
 
 package androidx.car.widget;
 
+import static java.lang.annotation.RetentionPolicy.SOURCE;
+
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
 import android.content.res.TypedArray;
@@ -23,15 +25,16 @@
 import android.view.ViewGroup;
 import android.widget.TextView;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import androidx.annotation.DimenRes;
 import androidx.annotation.IntDef;
 import androidx.annotation.StyleRes;
 import androidx.car.R;
 import androidx.car.utils.CarUxRestrictionsUtils;
 
+import java.lang.annotation.Retention;
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * Class to build a sub-header list item.
  *
@@ -72,6 +75,7 @@
     @IntDef({
             TEXT_START_MARGIN_TYPE_NONE, TEXT_START_MARGIN_TYPE_LARGE,
             TEXT_START_MARGIN_TYPE_SMALL})
+    @Retention(SOURCE)
     public @interface TextStartMarginType {}
 
     /**
@@ -191,7 +195,7 @@
          * @param restrictions current car UX restrictions.
          */
         @Override
-        void complyWithUxRestrictions(CarUxRestrictions restrictions) {
+        protected void complyWithUxRestrictions(CarUxRestrictions restrictions) {
             CarUxRestrictionsUtils.comply(itemView.getContext(), restrictions, getText());
         }
 
diff --git a/car/src/main/java/androidx/car/widget/TextListItem.java b/car/src/main/java/androidx/car/widget/TextListItem.java
index 3681d3e..0b28b62 100644
--- a/car/src/main/java/androidx/car/widget/TextListItem.java
+++ b/car/src/main/java/androidx/car/widget/TextListItem.java
@@ -16,6 +16,8 @@
 
 package androidx.car.widget;
 
+import static java.lang.annotation.RetentionPolicy.SOURCE;
+
 import android.car.drivingstate.CarUxRestrictions;
 import android.content.Context;
 import android.content.res.Resources;
@@ -30,10 +32,6 @@
 import android.widget.Switch;
 import android.widget.TextView;
 
-import java.lang.annotation.Retention;
-import java.util.ArrayList;
-import java.util.List;
-
 import androidx.annotation.DrawableRes;
 import androidx.annotation.IdRes;
 import androidx.annotation.IntDef;
@@ -42,7 +40,9 @@
 import androidx.car.utils.CarUxRestrictionsUtils;
 import androidx.recyclerview.widget.RecyclerView;
 
-import static java.lang.annotation.RetentionPolicy.SOURCE;
+import java.lang.annotation.Retention;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * Class to build a list item of text.
@@ -868,7 +868,7 @@
          * @param restrictions current car UX restrictions.
          */
         @Override
-        void complyWithUxRestrictions(CarUxRestrictions restrictions) {
+        protected void complyWithUxRestrictions(CarUxRestrictions restrictions) {
             CarUxRestrictionsUtils.comply(itemView.getContext(), restrictions, getBody());
         }
 
