diff --git a/src/com/android/customization/picker/clock/ui/binder/CarouselAccessibilityDelegate.kt b/src/com/android/customization/picker/clock/ui/binder/CarouselAccessibilityDelegate.kt
index 5e3c26e..eb11171 100644
--- a/src/com/android/customization/picker/clock/ui/binder/CarouselAccessibilityDelegate.kt
+++ b/src/com/android/customization/picker/clock/ui/binder/CarouselAccessibilityDelegate.kt
@@ -34,28 +34,28 @@
     private val ACTION_SCROLL_BACKWARD = R.id.action_scroll_backward
     private val ACTION_SCROLL_FORWARD = R.id.action_scroll_forward
 
-    override fun onInitializeAccessibilityNodeInfo(host: View?, info: AccessibilityNodeInfo?) {
+    override fun onInitializeAccessibilityNodeInfo(host: View, info: AccessibilityNodeInfo) {
         super.onInitializeAccessibilityNodeInfo(host, info)
-        info?.isScrollable = true
-        info?.addAction(
+        info.isScrollable = true
+        info.addAction(
             AccessibilityNodeInfo.AccessibilityAction(
                 ACTION_SCROLL_FORWARD,
                 context.getString(R.string.scroll_forward_and_select)
             )
         )
-        info?.addAction(
+        info.addAction(
             AccessibilityNodeInfo.AccessibilityAction(
                 ACTION_SCROLL_BACKWARD,
                 context.getString(R.string.scroll_backward_and_select)
             )
         )
-        info?.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_ACCESSIBILITY_FOCUS)
+        info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_ACCESSIBILITY_FOCUS)
         // We need to specifically set the content description since for some reason the talkback
         // service does not go to children of the clock carousel in the view hierarchy
-        info?.contentDescription = contentDescriptionOfSelectedClock
+        info.contentDescription = contentDescriptionOfSelectedClock
     }
 
-    override fun performAccessibilityAction(host: View?, action: Int, args: Bundle?): Boolean {
+    override fun performAccessibilityAction(host: View, action: Int, args: Bundle?): Boolean {
         when (action) {
             ACTION_SCROLL_BACKWARD -> {
                 scrollBackwardCallback.invoke()
diff --git a/src/com/android/customization/picker/color/ui/view/ColorOptionIconView.kt b/src/com/android/customization/picker/color/ui/view/ColorOptionIconView.kt
index 0514843..257bffb 100644
--- a/src/com/android/customization/picker/color/ui/view/ColorOptionIconView.kt
+++ b/src/com/android/customization/picker/color/ui/view/ColorOptionIconView.kt
@@ -69,7 +69,7 @@
         super.onSizeChanged(w, h, oldw, oldh)
     }
 
-    override fun onDraw(canvas: Canvas?) {
+    override fun onDraw(canvas: Canvas) {
         super.onDraw(canvas)
         // The w and h need to be an even number to avoid tiny pixel-level gaps between the pies
         w = w.roundDownToEven()
@@ -79,7 +79,7 @@
         val height = h.toFloat()
 
         oval.set(0f, 0f, width, height)
-        canvas?.apply {
+        canvas.apply {
             paint.color = color3
             drawArc(
                 oval,
diff --git a/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt b/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt
index 8e91798..a828f83 100644
--- a/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt
+++ b/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt
@@ -102,7 +102,7 @@
         val view = super.createView(context)
         if (screen == CustomizationSections.Screen.LOCK_SCREEN) {
             val screenPreviewClickView: ScreenPreviewClickView =
-                view.findViewById(R.id.screen_preview_click_view)
+                view.requireViewById(R.id.screen_preview_click_view)
             val clockColorAndSizeButtonStub: ViewStub =
                 view.requireViewById(R.id.clock_color_and_size_button)
             clockColorAndSizeButtonStub.layoutResource = R.layout.clock_color_and_size_button
@@ -161,7 +161,7 @@
             var bindJob: Job? = null
             onAttachStateChangeListener =
                 object : OnAttachStateChangeListener {
-                    override fun onViewAttachedToWindow(view: View?) {
+                    override fun onViewAttachedToWindow(view: View) {
                         bindJob =
                             lifecycleOwner.lifecycleScope.launch {
                                 ClockCarouselViewBinder.bind(
@@ -182,7 +182,7 @@
                             }
                     }
 
-                    override fun onViewDetachedFromWindow(view: View?) {
+                    override fun onViewDetachedFromWindow(view: View) {
                         bindJob?.cancel()
                     }
                 }
