diff --git a/appcompat/appcompat/src/main/java/androidx/appcompat/app/AppCompatDialogFragment.java b/appcompat/appcompat/src/main/java/androidx/appcompat/app/AppCompatDialogFragment.java
index ceae6f6..ffa9967 100644
--- a/appcompat/appcompat/src/main/java/androidx/appcompat/app/AppCompatDialogFragment.java
+++ b/appcompat/appcompat/src/main/java/androidx/appcompat/app/AppCompatDialogFragment.java
@@ -38,12 +38,12 @@
  */
 public class AppCompatDialogFragment extends DialogFragment {
 
-    /** {@inheritDoc} **/
+    /** {@inheritDoc} */
     public AppCompatDialogFragment() {
         super();
     }
 
-    /** {@inheritDoc} **/
+    /** {@inheritDoc} */
     public AppCompatDialogFragment(@LayoutRes int contentLayoutId) {
         super(contentLayoutId);
     }
diff --git a/camera/camera-camera2-pipe-testing/src/main/java/androidx/camera/camera2/pipe/testing/FakeCaptureSequence.kt b/camera/camera-camera2-pipe-testing/src/main/java/androidx/camera/camera2/pipe/testing/FakeCaptureSequence.kt
index b40b1e4..0fc23f2 100644
--- a/camera/camera-camera2-pipe-testing/src/main/java/androidx/camera/camera2/pipe/testing/FakeCaptureSequence.kt
+++ b/camera/camera-camera2-pipe-testing/src/main/java/androidx/camera/camera2/pipe/testing/FakeCaptureSequence.kt
@@ -26,7 +26,7 @@
 import androidx.camera.camera2.pipe.Request
 import androidx.camera.camera2.pipe.RequestMetadata
 
-/** A CaptureSequence used for testing interactions with a [FakeCaptureSequenceProcessor] **/
+/** A CaptureSequence used for testing interactions with a [FakeCaptureSequenceProcessor] */
 data class FakeCaptureSequence(
     override val repeating: Boolean,
     override val cameraId: CameraId,
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/CameraCaptureSessionStateCallbacks.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/CameraCaptureSessionStateCallbacks.java
index 40c2a9a..bd4f52c 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/CameraCaptureSessionStateCallbacks.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/CameraCaptureSessionStateCallbacks.java
@@ -38,7 +38,7 @@
 
     /**
      * Returns a session state callback which does nothing.
-     **/
+     */
     @NonNull
     public static CameraCaptureSession.StateCallback createNoOpCallback() {
         return new NoOpSessionStateCallback();
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/CaptureSession.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/CaptureSession.java
index 95dda70..1030126 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/CaptureSession.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/CaptureSession.java
@@ -105,7 +105,7 @@
     @Nullable
     @GuardedBy("mSessionLock")
     SessionConfig mSessionConfig;
-    /** The capture options from CameraEventCallback.onRepeating(). **/
+    /** The capture options from CameraEventCallback.onRepeating(). */
     @NonNull
     @GuardedBy("mSessionLock")
     Config mCameraEventOnRepeatingOptions = OptionsBundle.emptyBundle();
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java b/camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java
index dd99ca8..f4e2420 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java
@@ -1167,7 +1167,7 @@
      * {@link ImageCaptureLatencyEstimate#UNDEFINED_CAPTURE_LATENCY}. If the processing
      * latency is not supported then the processing latency component will be
      * {@link ImageCaptureLatencyEstimate#UNDEFINED_PROCESSING_LATENCY}.
-     **/
+     */
     @RestrictTo(Scope.LIBRARY_GROUP)
     @NonNull
     public ImageCaptureLatencyEstimate getRealtimeCaptureLatencyEstimate() {
diff --git a/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeCameraCaptureResult.java b/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeCameraCaptureResult.java
index a36925a..223a87f 100644
--- a/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeCameraCaptureResult.java
+++ b/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeCameraCaptureResult.java
@@ -140,35 +140,35 @@
             return fakeCameraCaptureResult;
         }
 
-        /** Set the {@link CameraCaptureMetaData.AfMode} **/
+        /** Set the {@link CameraCaptureMetaData.AfMode} */
         @NonNull
         public Builder setAfMode(@Nullable CameraCaptureMetaData.AfMode mode) {
             mAfMode = mode;
             return this;
         }
 
-        /** Set the {@link CameraCaptureMetaData.AfState} **/
+        /** Set the {@link CameraCaptureMetaData.AfState} */
         @NonNull
         public Builder setAfState(@Nullable CameraCaptureMetaData.AfState state) {
             mAfState = state;
             return this;
         }
 
-        /** Set the {@link CameraCaptureMetaData.AeState} **/
+        /** Set the {@link CameraCaptureMetaData.AeState} */
         @NonNull
         public Builder setAeState(@Nullable CameraCaptureMetaData.AeState state) {
             mAeState = state;
             return this;
         }
 
-        /** Set the {@link CameraCaptureMetaData.AwbState} **/
+        /** Set the {@link CameraCaptureMetaData.AwbState} */
         @NonNull
         public Builder setAwbState(@Nullable CameraCaptureMetaData.AwbState state) {
             mAwbState = state;
             return this;
         }
 
-        /** Set the {@link CameraCaptureMetaData.FlashState} **/
+        /** Set the {@link CameraCaptureMetaData.FlashState} */
         @NonNull
         public Builder setFlashState(@Nullable CameraCaptureMetaData.FlashState state) {
             mFlashState = state;
diff --git a/car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/LegacySurfacePackage.java b/car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/LegacySurfacePackage.java
index a377cb9..c429e4a 100644
--- a/car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/LegacySurfacePackage.java
+++ b/car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/LegacySurfacePackage.java
@@ -83,7 +83,7 @@
         };
     }
 
-    /** Empty constructor needed for serializations. **/
+    /** Empty constructor needed for serializations. */
     private LegacySurfacePackage() {
     }
 
diff --git a/car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/SurfaceWrapper.java b/car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/SurfaceWrapper.java
index ce2ffdf..e2f399a 100644
--- a/car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/SurfaceWrapper.java
+++ b/car/app/app-automotive/src/main/java/androidx/car/app/activity/renderer/surface/SurfaceWrapper.java
@@ -64,7 +64,7 @@
         mSurface = surface;
     }
 
-    /** Empty constructor needed for serializations. **/
+    /** Empty constructor needed for serializations. */
     private SurfaceWrapper() {
     }
 
diff --git a/car/app/app/src/main/java/androidx/car/app/mediaextensions/MetadataExtras.java b/car/app/app/src/main/java/androidx/car/app/mediaextensions/MetadataExtras.java
index 1ad83f2..1a46be5 100644
--- a/car/app/app/src/main/java/androidx/car/app/mediaextensions/MetadataExtras.java
+++ b/car/app/app/src/main/java/androidx/car/app/mediaextensions/MetadataExtras.java
@@ -58,7 +58,7 @@
      *      + subtitle:                 “Beethoven”                 // Artist
      *      + subtitleLinkMediaId:      “artist:Beethoven”          // Artist ID
      * </pre>
-     **/
+     */
     public static final String KEY_SUBTITLE_LINK_MEDIA_ID =
             "androidx.car.app.mediaextensions.KEY_SUBTITLE_LINK_MEDIA_ID";
 
@@ -90,7 +90,7 @@
      * ╚════+ mediaId:                  “artist:Beethoven”          // ID
      *      + title:                    “Beethoven”                 // Artist
      * </pre>
-     **/
+     */
     public static final String KEY_DESCRIPTION_LINK_MEDIA_ID =
             "androidx.car.app.mediaextensions.KEY_DESCRIPTION_LINK_MEDIA_ID";
 }
diff --git a/car/app/app/src/main/java/androidx/car/app/model/constraints/TabContentsConstraints.java b/car/app/app/src/main/java/androidx/car/app/model/constraints/TabContentsConstraints.java
index fe60984..79c64d8 100644
--- a/car/app/app/src/main/java/androidx/car/app/model/constraints/TabContentsConstraints.java
+++ b/car/app/app/src/main/java/androidx/car/app/model/constraints/TabContentsConstraints.java
@@ -39,7 +39,7 @@
 @RestrictTo(RestrictTo.Scope.LIBRARY)
 public class TabContentsConstraints {
 
-    /** Allow restricted set of templates as contents for a tab **/
+    /** Allow restricted set of templates as contents for a tab */
     @NonNull
     public static final TabContentsConstraints DEFAULT =
             new TabContentsConstraints(Arrays.asList(
diff --git a/car/app/app/src/main/java/androidx/car/app/navigation/model/constraints/ContentTemplateConstraints.java b/car/app/app/src/main/java/androidx/car/app/navigation/model/constraints/ContentTemplateConstraints.java
index 8b84e57..dda27ab 100644
--- a/car/app/app/src/main/java/androidx/car/app/navigation/model/constraints/ContentTemplateConstraints.java
+++ b/car/app/app/src/main/java/androidx/car/app/navigation/model/constraints/ContentTemplateConstraints.java
@@ -37,7 +37,7 @@
 @ExperimentalCarApi
 @RequiresCarApi(7)
 public class ContentTemplateConstraints {
-    /** Allowed templates for Map with Content Templates **/
+    /** Allowed templates for Map with Content Templates */
     @NonNull
     public static final ContentTemplateConstraints MAP_WITH_CONTENT_TEMPLATE_CONSTRAINTS =
             new ContentTemplateConstraints(ImmutableSet.of(
@@ -45,7 +45,7 @@
                     MessageTemplate.class
             ));
 
-    /** Allowed templates for TabContents **/
+    /** Allowed templates for TabContents */
     @NonNull
     public static final ContentTemplateConstraints TAB_CONTENTS_CONSTRAINTS =
             new ContentTemplateConstraints(ImmutableSet.of(
diff --git a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Transition.kt b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Transition.kt
index 7ae4fe0..3e9edc1 100644
--- a/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Transition.kt
+++ b/compose/animation/animation-core/src/commonMain/kotlin/androidx/compose/animation/core/Transition.kt
@@ -254,7 +254,7 @@
         get() = _animations
 
     // Seeking related
-    /** @suppress **/
+    /** @suppress */
     @InternalAnimationApi
     var isSeeking: Boolean by mutableStateOf(false)
         internal set
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListMeasureResult.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListMeasureResult.kt
index 9a7c9999..5eb612e 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListMeasureResult.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListMeasureResult.kt
@@ -35,7 +35,7 @@
     val consumedScroll: Float,
     /** MeasureResult defining the layout.*/
     measureResult: MeasureResult,
-    /** The amount of scroll-back that happened due to reaching the end of the list. **/
+    /** The amount of scroll-back that happened due to reaching the end of the list. */
     val scrollBackAmount: Float,
     // properties representing the info needed for LazyListLayoutInfo:
     /** see [LazyListLayoutInfo.visibleItemsInfo] */
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListMeasuredItemProvider.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListMeasuredItemProvider.kt
index d983cd7..0fe137d 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListMeasuredItemProvider.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyListMeasuredItemProvider.kt
@@ -52,7 +52,7 @@
     /**
      * Contains the mapping between the key and the index. It could contain not all the items of
      * the list as an optimization.
-     **/
+     */
     val keyIndexMap: LazyLayoutKeyIndexMap get() = itemProvider.keyIndexMap
 
     abstract fun createItem(
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridMeasuredItemProvider.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridMeasuredItemProvider.kt
index 9237016..f38e802 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridMeasuredItemProvider.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridMeasuredItemProvider.kt
@@ -62,7 +62,7 @@
     /**
      * Contains the mapping between the key and the index. It could contain not all the items of
      * the list as an optimization.
-     **/
+     */
     val keyIndexMap: LazyLayoutKeyIndexMap get() = itemProvider.keyIndexMap
 
     abstract fun createItem(
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridMeasuredLineProvider.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridMeasuredLineProvider.kt
index c852c3f..083c717 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridMeasuredLineProvider.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/grid/LazyGridMeasuredLineProvider.kt
@@ -94,7 +94,7 @@
     /**
      * Contains the mapping between the key and the index. It could contain not all the items of
      * the list as an optimization.
-     **/
+     */
     val keyIndexMap: LazyLayoutKeyIndexMap get() = measuredItemProvider.keyIndexMap
 
     abstract fun createLine(
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyAnimateScroll.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyAnimateScroll.kt
index 78fd421..bb283a0 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyAnimateScroll.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyAnimateScroll.kt
@@ -45,7 +45,7 @@
 /**
  * Abstraction over animated scroll for using [animateScrollToItem] in different layouts.
  * todo(b/243786897): revisit this API and make it public
- **/
+ */
 internal interface LazyAnimateScrollScope {
     val density: Density
 
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory.kt
index c6a41ab..057d0d3 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/layout/LazyLayoutItemContentFactory.kt
@@ -43,7 +43,7 @@
     /**
      * Returns the content type for the item with the given key. It is used to improve the item
      * compositions reusing efficiency.
-     **/
+     */
     fun getContentType(key: Any?): Any? {
         if (key == null) return null
 
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGrid.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGrid.kt
index 50ae912..2955238 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGrid.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGrid.kt
@@ -128,7 +128,7 @@
     }
 }
 
-/** Slot configuration of staggered grid **/
+/** Slot configuration of staggered grid */
 internal class LazyStaggeredGridSlots(
     val positions: IntArray,
     val sizes: IntArray
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridDsl.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridDsl.kt
index cca7a11..a06da0e 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridDsl.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridDsl.kt
@@ -236,7 +236,7 @@
     }
 }
 
-/** Dsl marker for [LazyStaggeredGridScope] below **/
+/** Dsl marker for [LazyStaggeredGridScope] below */
 @DslMarker
 internal annotation class LazyStaggeredGridScopeMarker
 
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridState.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridState.kt
index f37ea64..fb26323 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridState.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/staggeredgrid/LazyStaggeredGridState.kt
@@ -128,7 +128,7 @@
         }
     }
 
-    /** holder for current scroll position **/
+    /** holder for current scroll position */
     internal val scrollPosition = LazyStaggeredGridScrollPosition(
         initialFirstVisibleItems,
         initialFirstVisibleOffsets,
@@ -144,11 +144,11 @@
      */
     val layoutInfo: LazyStaggeredGridLayoutInfo get() = layoutInfoState.value
 
-    /** backing state for [layoutInfo] **/
+    /** backing state for [layoutInfo] */
     private val layoutInfoState: MutableState<LazyStaggeredGridLayoutInfo> =
         mutableStateOf(EmptyLazyStaggeredGridLayoutInfo)
 
-    /** storage for lane assignments for each item for consistent scrolling in both directions **/
+    /** storage for lane assignments for each item for consistent scrolling in both directions */
     internal val laneInfo = LazyStaggeredGridLaneInfo()
 
     override var canScrollForward: Boolean by mutableStateOf(false)
@@ -156,7 +156,7 @@
     override var canScrollBackward: Boolean by mutableStateOf(false)
         private set
 
-    /** implementation of [LazyAnimateScrollScope] scope required for [animateScrollToItem] **/
+    /** implementation of [LazyAnimateScrollScope] scope required for [animateScrollToItem] */
     private val animateScrollScope = LazyStaggeredGridAnimateScrollScope(this)
 
     internal var remeasurement: Remeasurement? = null
@@ -182,28 +182,28 @@
     /*@VisibleForTesting*/
     internal var prefetchingEnabled: Boolean = true
 
-    /** prefetch state used for precomputing items in the direction of scroll **/
+    /** prefetch state used for precomputing items in the direction of scroll */
     internal val prefetchState: LazyLayoutPrefetchState = LazyLayoutPrefetchState()
 
-    /** state controlling the scroll **/
+    /** state controlling the scroll */
     private val scrollableState = ScrollableState { -onScroll(-it) }
 
-    /** scroll to be consumed during next/current layout pass **/
+    /** scroll to be consumed during next/current layout pass */
     internal var scrollToBeConsumed = 0f
         private set
 
     /* @VisibleForTesting */
     internal var measurePassCount = 0
 
-    /** transient information from measure required for prefetching **/
+    /** transient information from measure required for prefetching */
     internal var isVertical = false
     internal var slots: LazyStaggeredGridSlots? = null
     internal var spanProvider: LazyStaggeredGridSpanProvider? = null
-    /** prefetch state **/
+    /** prefetch state */
     private var prefetchBaseIndex: Int = -1
     private val currentItemPrefetchHandles = mutableMapOf<Int, PrefetchHandle>()
 
-    /** state required for implementing [animateScrollScope] **/
+    /** state required for implementing [animateScrollScope] */
     internal var density: Density = Density(1f, 1f)
     internal val laneCount get() = slots?.sizes?.size ?: 0
 
@@ -214,7 +214,7 @@
      */
     val interactionSource get(): InteractionSource = mutableInteractionSource
 
-    /** backing field mutable field for [interactionSource] **/
+    /** backing field mutable field for [interactionSource] */
     internal val mutableInteractionSource = MutableInteractionSource()
 
     /**
@@ -249,7 +249,7 @@
     override val isScrollInProgress: Boolean
         get() = scrollableState.isScrollInProgress
 
-    /** Main scroll callback which adjusts scroll delta and remeasures layout **/
+    /** Main scroll callback which adjusts scroll delta and remeasures layout */
     private fun onScroll(distance: Float): Float {
         if (distance < 0 && !canScrollForward || distance > 0 && !canScrollBackward) {
             return 0f
@@ -343,7 +343,7 @@
     override fun dispatchRawDelta(delta: Float): Float =
         scrollableState.dispatchRawDelta(delta)
 
-    /** Start prefetch of the items based on provided delta **/
+    /** Start prefetch of the items based on provided delta */
     private fun notifyPrefetch(delta: Float) {
         val info = layoutInfoState.value
         if (info.visibleItemsInfo.isNotEmpty()) {
@@ -438,7 +438,7 @@
         }
     }
 
-    /** updates state after measure pass **/
+    /** updates state after measure pass */
     internal fun applyMeasureResult(result: LazyStaggeredGridMeasureResult) {
         scrollToBeConsumed -= result.consumedScroll
         canScrollBackward = result.canScrollBackward
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/LazyLayoutPager.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/LazyLayoutPager.kt
index 9f49b62..908b855 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/LazyLayoutPager.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/LazyLayoutPager.kt
@@ -77,13 +77,13 @@
     userScrollEnabled: Boolean,
     /** Number of pages to layout before and after the visible pages */
     beyondBoundsPageCount: Int = 0,
-    /** Space between pages **/
+    /** Space between pages */
     pageSpacing: Dp = 0.dp,
-    /** Allows to change how to calculate the Page size **/
+    /** Allows to change how to calculate the Page size */
     pageSize: PageSize,
-    /** A [NestedScrollConnection] that dictates how this [Pager] behaves with nested lists.  **/
+    /** A [NestedScrollConnection] that dictates how this [Pager] behaves with nested lists.  */
     pageNestedScrollConnection: NestedScrollConnection,
-    /** a stable and unique key representing the Page **/
+    /** a stable and unique key representing the Page */
     key: ((index: Int) -> Any)?,
     /** The alignment to align pages horizontally. Required when isVertical is true */
     horizontalAlignment: Alignment.Horizontal,
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerState.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerState.kt
index 37aafef0..51cf306 100644
--- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerState.kt
+++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/pager/PagerState.kt
@@ -229,7 +229,7 @@
      */
     private var wasScrollingForward = false
 
-    /** Backing state for PagerLayoutInfo **/
+    /** Backing state for PagerLayoutInfo */
     private var pagerLayoutInfoState = mutableStateOf(EmptyLayoutInfo)
 
     internal val layoutInfo: PagerLayoutInfo get() = pagerLayoutInfoState.value
diff --git a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Drawer.kt b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Drawer.kt
index 39517e6..8b5883f 100644
--- a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Drawer.kt
+++ b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Drawer.kt
@@ -311,7 +311,7 @@
 
     /**
      * The current offset, or [Float.NaN] if it has not been initialized yet.
-     **/
+     */
     @Suppress("OPT_IN_MARKER_ON_WRONG_TARGET")
     val offset: Float
         get() = anchoredDraggableState.offset
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/AppBar.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/AppBar.kt
index 8e30c16..a774514 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/AppBar.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/AppBar.kt
@@ -981,10 +981,10 @@
 /** Contains default values used for the bottom app bar implementations. */
 object BottomAppBarDefaults {
 
-    /** Default color used for [BottomAppBar] container **/
+    /** Default color used for [BottomAppBar] container */
     val containerColor: Color @Composable get() = BottomAppBarTokens.ContainerColor.toColor()
 
-    /** Default elevation used for [BottomAppBar] **/
+    /** Default elevation used for [BottomAppBar] */
     val ContainerElevation: Dp = BottomAppBarTokens.ContainerElevation
 
     /**
diff --git a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/NavigationDrawer.kt b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/NavigationDrawer.kt
index 6ae4764..401b7c78 100644
--- a/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/NavigationDrawer.kt
+++ b/compose/material3/material3/src/commonMain/kotlin/androidx/compose/material3/NavigationDrawer.kt
@@ -615,7 +615,7 @@
     /** Default container color for a navigation drawer */
     val containerColor: Color @Composable get() = NavigationDrawerTokens.ContainerColor.toColor()
 
-    /** Default and maximum width of a navigation drawer **/
+    /** Default and maximum width of a navigation drawer */
     val MaximumDrawerWidth = NavigationDrawerTokens.ContainerWidth
 
     /**
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/CompositionContext.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/CompositionContext.kt
index b614f8a..4b64873 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/CompositionContext.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/CompositionContext.kt
@@ -42,7 +42,7 @@
 
     /**
      *  The [CoroutineContext] with which effects for the composition will be executed in.
-     **/
+     */
     abstract val effectCoroutineContext: CoroutineContext
     internal abstract val recomposeCoroutineContext: CoroutineContext
     internal abstract fun composeInitial(
diff --git a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableSet/TrieNode.kt b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableSet/TrieNode.kt
index 9bc1540..2aa2ca9 100644
--- a/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableSet/TrieNode.kt
+++ b/compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/external/kotlinx/collections/immutable/implementations/immutableSet/TrieNode.kt
@@ -46,7 +46,7 @@
  * on the fly using [predicate]. By default filters out [TrieNode.EMPTY] instances
  *
  * return number of elements written to [newArray]
- **/
+ */
 private inline fun Array<Any?>.filterTo(
         newArray: Array<Any?>,
         newArrayOffset: Int = 0,
diff --git a/compose/ui/ui-geometry/src/commonMain/kotlin/androidx/compose/ui/geometry/CornerRadius.kt b/compose/ui/ui-geometry/src/commonMain/kotlin/androidx/compose/ui/geometry/CornerRadius.kt
index 55581e9..808e8e61 100644
--- a/compose/ui/ui-geometry/src/commonMain/kotlin/androidx/compose/ui/geometry/CornerRadius.kt
+++ b/compose/ui/ui-geometry/src/commonMain/kotlin/androidx/compose/ui/geometry/CornerRadius.kt
@@ -38,7 +38,7 @@
  * Note consumers should create an instance of this class through the corresponding
  * function constructor as it is represented as an inline class with 2 float
  * parameters packed into a single long to reduce allocation overhead
- **/
+ */
 @Immutable
 @kotlin.jvm.JvmInline
 value class CornerRadius internal constructor(@PublishedApi internal val packedValue: Long) {
diff --git a/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/ImageBitmap.kt b/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/ImageBitmap.kt
index a18cb7a1..1990708 100644
--- a/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/ImageBitmap.kt
+++ b/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics/ImageBitmap.kt
@@ -34,10 +34,10 @@
     /** The number of image pixels along the ImageBitmap's vertical axis. */
     val height: Int
 
-    /** ColorSpace the Image renders in **/
+    /** ColorSpace the Image renders in */
     val colorSpace: ColorSpace
 
-    /** Determines whether or not the ImageBitmap contains an alpha channel **/
+    /** Determines whether or not the ImageBitmap contains an alpha channel */
     val hasAlpha: Boolean
 
     /**
diff --git a/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/font/FontSynthesis.kt b/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/font/FontSynthesis.kt
index 4f6a3d9..80a3f17 100644
--- a/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/font/FontSynthesis.kt
+++ b/compose/ui/ui-text/src/commonMain/kotlin/androidx/compose/ui/text/font/FontSynthesis.kt
@@ -32,7 +32,7 @@
  *  [CSS font-synthesis](https://www.w3.org/TR/css-fonts-4/#font-synthesis) property.
  *
  *  @sample androidx.compose.ui.text.samples.FontFamilySynthesisSample
- **/
+ */
 @kotlin.jvm.JvmInline
 value class FontSynthesis internal constructor(internal val value: Int) {
 
diff --git a/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/PainterSample.kt b/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/PainterSample.kt
index f39a660..d4081c2 100644
--- a/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/PainterSample.kt
+++ b/compose/ui/ui/samples/src/main/java/androidx/compose/ui/samples/PainterSample.kt
@@ -55,7 +55,7 @@
                 .padding(30.dp)
                 .background(color = Color.Yellow)
                 .paint(CustomPainter())
-    ) { /** intentionally empty **/ }
+    ) { /** intentionally empty */ }
 }
 
 @Sampled
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/CircularFlow.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/CircularFlow.java
index b90540e..00cba1a 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/CircularFlow.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/CircularFlow.java
@@ -64,7 +64,7 @@
  *
  * Recommendation - always set radius and angle for all views in <i>constraint_referenced_ids</i>
  *
- **/
+ */
 
 public class CircularFlow extends VirtualLayout {
     private static final String TAG = "CircularFlow";
diff --git a/core/core-ktx/src/main/java/androidx/core/view/View.kt b/core/core-ktx/src/main/java/androidx/core/view/View.kt
index 74d4c8f..0b0febc 100644
--- a/core/core-ktx/src/main/java/androidx/core/view/View.kt
+++ b/core/core-ktx/src/main/java/androidx/core/view/View.kt
@@ -310,7 +310,7 @@
  *
  * @see View.getLayoutParams
  * @see View.setLayoutParams
- **/
+ */
 public inline fun View.updateLayoutParams(block: ViewGroup.LayoutParams.() -> Unit) {
     updateLayoutParams<ViewGroup.LayoutParams>(block)
 }
@@ -321,7 +321,7 @@
  *
  * @see View.getLayoutParams
  * @see View.setLayoutParams
- **/
+ */
 @JvmName("updateLayoutParamsTyped")
 public inline fun <reified T : ViewGroup.LayoutParams> View.updateLayoutParams(
     block: T.() -> Unit
diff --git a/core/core/src/main/java/androidx/core/app/NotificationCompatBuilder.java b/core/core/src/main/java/androidx/core/app/NotificationCompatBuilder.java
index 5c10236..f3c71f2 100644
--- a/core/core/src/main/java/androidx/core/app/NotificationCompatBuilder.java
+++ b/core/core/src/main/java/androidx/core/app/NotificationCompatBuilder.java
@@ -729,7 +729,7 @@
 
         @DoNotInline
         static Notification.Builder setSound(Notification.Builder builder, Uri sound,
-                Object audioAttributes /** AudioAttributes **/) {
+                Object audioAttributes /** AudioAttributes */) {
             return builder.setSound(sound, (AudioAttributes) audioAttributes);
         }
     }
@@ -751,7 +751,7 @@
 
         @DoNotInline
         static Notification.Builder setSmallIcon(Notification.Builder builder,
-                Object icon /** Icon **/) {
+                Object icon /** Icon */) {
             return builder.setSmallIcon((Icon) icon);
         }
 
@@ -888,7 +888,7 @@
 
         @DoNotInline
         static Notification.Builder setLocusId(Notification.Builder builder,
-                Object locusId /** LocusId **/) {
+                Object locusId /** LocusId */) {
             return builder.setLocusId((LocusId) locusId);
         }
 
diff --git a/core/core/src/main/java/androidx/core/provider/FontsContractCompat.java b/core/core/src/main/java/androidx/core/provider/FontsContractCompat.java
index 7d60696..4b40136 100644
--- a/core/core/src/main/java/androidx/core/provider/FontsContractCompat.java
+++ b/core/core/src/main/java/androidx/core/provider/FontsContractCompat.java
@@ -377,7 +377,7 @@
         /**
          * @deprecated Not being used by any cross library, and should not be used, internal
          * implementation detail.
-         **/
+         */
         // TODO after removing from public API make package private.
         @Deprecated
         @RestrictTo(LIBRARY_GROUP_PREFIX)
@@ -508,7 +508,7 @@
     /**
      * @deprecated Not being used by any cross library, and should not be used, internal
      * implementation detail.
-     **/
+     */
     @Deprecated // unused
     @RestrictTo(LIBRARY_GROUP_PREFIX)
     static final int RESULT_CODE_PROVIDER_NOT_FOUND = -1;
@@ -516,7 +516,7 @@
     /**
      * @deprecated Not being used by any cross library, and should not be used, internal
      * implementation detail.
-     **/
+     */
     @Deprecated // unused
     @RestrictTo(LIBRARY_GROUP_PREFIX)
     static final int RESULT_CODE_WRONG_CERTIFICATES = -2;
@@ -525,7 +525,7 @@
     /**
      * @deprecated Not being used by any cross library, and should not be used, internal
      * implementation detail.
-     **/
+     */
     @Deprecated // unused
     @RestrictTo(LIBRARY_GROUP_PREFIX)
     public static Typeface getFontSync(
@@ -547,7 +547,7 @@
     /**
      * @deprecated Not being used by any cross library, and should not be used, internal
      * implementation detail.
-     **/
+     */
     @Deprecated // unused
     @RestrictTo(LIBRARY_GROUP_PREFIX)
     public static void resetCache() {
@@ -582,7 +582,7 @@
     /**
      * @deprecated Not being used by any cross library, and should not be used, internal
      * implementation detail.
-     **/
+     */
     @Deprecated // unused
     @VisibleForTesting
     @RestrictTo(LIBRARY_GROUP_PREFIX)
diff --git a/core/uwb/uwb/src/main/java/androidx/core/uwb/RangingCapabilities.kt b/core/uwb/uwb/src/main/java/androidx/core/uwb/RangingCapabilities.kt
index b7e35fd..3d22c5b 100644
--- a/core/uwb/uwb/src/main/java/androidx/core/uwb/RangingCapabilities.kt
+++ b/core/uwb/uwb/src/main/java/androidx/core/uwb/RangingCapabilities.kt
@@ -24,7 +24,7 @@
  * @property minRangingInterval - Minimum ranging interval
  * @property supportedChannels - Set of supported channels
  * @property supportedConfigIds - Set of supported config ids
- **/
+ */
 class RangingCapabilities(
     val isDistanceSupported: Boolean,
     val isAzimuthalAngleSupported: Boolean,
diff --git a/credentials/credentials-play-services-auth/src/main/java/androidx/credentials/playservices/controllers/CredentialProviderBaseController.kt b/credentials/credentials-play-services-auth/src/main/java/androidx/credentials/playservices/controllers/CredentialProviderBaseController.kt
index fad0c4c..4667e2f 100644
--- a/credentials/credentials-play-services-auth/src/main/java/androidx/credentials/playservices/controllers/CredentialProviderBaseController.kt
+++ b/credentials/credentials-play-services-auth/src/main/java/androidx/credentials/playservices/controllers/CredentialProviderBaseController.kt
@@ -59,7 +59,7 @@
         const val CREATE_INTERRUPTED = "CREATE_INTERRUPTED"
         const val CREATE_UNKNOWN = "CREATE_UNKNOWN"
 
-        /** ---- Data Constants to pass between the controllers and the hidden activity---- **/
+        /** ---- Data Constants to pass between the controllers and the hidden activity---- */
 
         // Key to indicate type sent from controller to hidden activity
         const val TYPE_TAG = "TYPE"
diff --git a/credentials/credentials/src/main/java/androidx/credentials/provider/BeginCreateCredentialResponse.kt b/credentials/credentials/src/main/java/androidx/credentials/provider/BeginCreateCredentialResponse.kt
index cc6c167..f5fa685 100644
--- a/credentials/credentials/src/main/java/androidx/credentials/provider/BeginCreateCredentialResponse.kt
+++ b/credentials/credentials/src/main/java/androidx/credentials/provider/BeginCreateCredentialResponse.kt
@@ -38,7 +38,7 @@
     val remoteEntry: RemoteEntry? = null
 ) {
 
-    /** Builder for [BeginCreateCredentialResponse]. **/
+    /** Builder for [BeginCreateCredentialResponse]. */
     class Builder {
         private var createEntries: MutableList<CreateEntry> = mutableListOf()
         private var remoteEntry: RemoteEntry? = null
diff --git a/credentials/credentials/src/main/java/androidx/credentials/provider/BeginGetCredentialResponse.kt b/credentials/credentials/src/main/java/androidx/credentials/provider/BeginGetCredentialResponse.kt
index 5225e5a..b76cf44 100644
--- a/credentials/credentials/src/main/java/androidx/credentials/provider/BeginGetCredentialResponse.kt
+++ b/credentials/credentials/src/main/java/androidx/credentials/provider/BeginGetCredentialResponse.kt
@@ -46,7 +46,7 @@
     val authenticationActions: List<AuthenticationAction> = listOf(),
     val remoteEntry: RemoteEntry? = null
 ) {
-    /** Builder for [BeginGetCredentialResponse]. **/
+    /** Builder for [BeginGetCredentialResponse]. */
     class Builder {
         private var credentialEntries: MutableList<CredentialEntry> = mutableListOf()
         private var actions: MutableList<Action> = mutableListOf()
diff --git a/datastore/datastore-core/src/commonMain/kotlin/androidx/datastore/core/CorruptionHandler.kt b/datastore/datastore-core/src/commonMain/kotlin/androidx/datastore/core/CorruptionHandler.kt
index 0ce09b6..d88f0f2 100644
--- a/datastore/datastore-core/src/commonMain/kotlin/androidx/datastore/core/CorruptionHandler.kt
+++ b/datastore/datastore-core/src/commonMain/kotlin/androidx/datastore/core/CorruptionHandler.kt
@@ -30,6 +30,6 @@
      *
      * @param ex is the exception encountered when attempting to deserialize data from disk.
      * @return The value that DataStore should attempt to write to disk.
-     **/
+     */
     public suspend fun handleCorruption(ex: CorruptionException): T
 }
\ No newline at end of file
diff --git a/datastore/datastore-rxjava2/src/main/java/androidx/datastore/rxjava2/RxSharedPreferencesMigration.kt b/datastore/datastore-rxjava2/src/main/java/androidx/datastore/rxjava2/RxSharedPreferencesMigration.kt
index ae5de44c..a385212 100644
--- a/datastore/datastore-rxjava2/src/main/java/androidx/datastore/rxjava2/RxSharedPreferencesMigration.kt
+++ b/datastore/datastore-rxjava2/src/main/java/androidx/datastore/rxjava2/RxSharedPreferencesMigration.kt
@@ -27,7 +27,7 @@
 @JvmDefaultWithCompatibility
 /**
  * Client implemented migration interface.
- **/
+ */
 public interface RxSharedPreferencesMigration<T> {
     /**
      * Whether or not the migration should be run. This can be used to skip a read from the
diff --git a/datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxSharedPreferencesMigration.kt b/datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxSharedPreferencesMigration.kt
index c7cb50e..6dfdf1e 100644
--- a/datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxSharedPreferencesMigration.kt
+++ b/datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxSharedPreferencesMigration.kt
@@ -27,7 +27,7 @@
 @JvmDefaultWithCompatibility
 /**
  * Client implemented migration interface.
- **/
+ */
 public interface RxSharedPreferencesMigration<T> {
     /**
      * Whether or not the migration should be run. This can be used to skip a read from the
diff --git a/dynamicanimation/dynamicanimation/src/main/java/androidx/dynamicanimation/animation/DynamicAnimation.java b/dynamicanimation/dynamicanimation/src/main/java/androidx/dynamicanimation/animation/DynamicAnimation.java
index e99a8cc..6ed0e9a 100644
--- a/dynamicanimation/dynamicanimation/src/main/java/androidx/dynamicanimation/animation/DynamicAnimation.java
+++ b/dynamicanimation/dynamicanimation/src/main/java/androidx/dynamicanimation/animation/DynamicAnimation.java
@@ -796,7 +796,7 @@
     /****************Sub class animations**************/
     /**
      * Returns the acceleration at the given value with the given velocity.
-     **/
+     */
     abstract float getAcceleration(float value, float velocity);
 
     /**
diff --git a/enterprise/enterprise-feedback-testing/src/main/java/androidx/enterprise/feedback/FakeKeyedAppStatesReporter.java b/enterprise/enterprise-feedback-testing/src/main/java/androidx/enterprise/feedback/FakeKeyedAppStatesReporter.java
index 9b221bd..2164e24 100644
--- a/enterprise/enterprise-feedback-testing/src/main/java/androidx/enterprise/feedback/FakeKeyedAppStatesReporter.java
+++ b/enterprise/enterprise-feedback-testing/src/main/java/androidx/enterprise/feedback/FakeKeyedAppStatesReporter.java
@@ -55,7 +55,7 @@
             Collections.synchronizedMap(new HashMap<String, KeyedAppState>());
     private AtomicInteger mNumberOfUploads = new AtomicInteger();
 
-    /** @deprecated see {@link #setStates(Collection, KeyedAppStatesCallback)}. **/
+    /** @deprecated see {@link #setStates(Collection, KeyedAppStatesCallback)}. */
     @Override
     @Deprecated
     public void setStates(@NonNull Collection<KeyedAppState> states) {
@@ -81,7 +81,7 @@
         }
     }
 
-    /** @deprecated See {@link #setStatesImmediate(Collection, KeyedAppStatesCallback)}. **/
+    /** @deprecated See {@link #setStatesImmediate(Collection, KeyedAppStatesCallback)}. */
     @Override
     @Deprecated
     public void setStatesImmediate(@NonNull Collection<KeyedAppState> states) {
diff --git a/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/curved/GlanceCurvedModifier.kt b/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/curved/GlanceCurvedModifier.kt
index dd08bc9..1130cea 100644
--- a/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/curved/GlanceCurvedModifier.kt
+++ b/glance/glance-wear-tiles/src/main/java/androidx/glance/wear/tiles/curved/GlanceCurvedModifier.kt
@@ -166,7 +166,7 @@
         null to this
     }
 
-/** @suppress **/
+/** @suppress */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public data class SweepAngleModifier(public val degrees: Float) : GlanceCurvedModifier.Element
 
@@ -176,7 +176,7 @@
 public fun GlanceCurvedModifier.sweepAngleDegrees(degrees: Float) =
     this.then(SweepAngleModifier(degrees))
 
-/** @suppress **/
+/** @suppress */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public data class ThicknessModifier(public val thickness: Dp) : GlanceCurvedModifier.Element
 
@@ -186,7 +186,7 @@
 public fun GlanceCurvedModifier.thickness(thickness: Dp) =
     this.then(ThicknessModifier(thickness))
 
-/** @suppress **/
+/** @suppress */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public data class ActionCurvedModifier(public val action: Action) : GlanceCurvedModifier.Element
 
@@ -196,7 +196,7 @@
 public fun GlanceCurvedModifier.clickable(onClick: Action): GlanceCurvedModifier =
     this.then(ActionCurvedModifier(onClick))
 
-/** @suppress **/
+/** @suppress */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public data class SemanticsCurvedModifier(
     val configuration: SemanticsConfiguration
diff --git a/glance/glance/src/main/java/androidx/glance/semantics/SemanticsModifier.kt b/glance/glance/src/main/java/androidx/glance/semantics/SemanticsModifier.kt
index 9467c58..76f5ad3 100644
--- a/glance/glance/src/main/java/androidx/glance/semantics/SemanticsModifier.kt
+++ b/glance/glance/src/main/java/androidx/glance/semantics/SemanticsModifier.kt
@@ -18,7 +18,7 @@
 import androidx.annotation.RestrictTo
 import androidx.glance.GlanceModifier
 
-/** @suppress **/
+/** @suppress */
 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 data class SemanticsModifier(
     val configuration: SemanticsConfiguration
diff --git a/glance/glance/src/main/java/androidx/glance/text/FontWeight.kt b/glance/glance/src/main/java/androidx/glance/text/FontWeight.kt
index 4e151be..f386ea3 100644
--- a/glance/glance/src/main/java/androidx/glance/text/FontWeight.kt
+++ b/glance/glance/src/main/java/androidx/glance/text/FontWeight.kt
@@ -21,7 +21,7 @@
  */
 @JvmInline
 value class FontWeight private constructor(
-    /** numerical value for the weight (a number from 0 to 1000) **/
+    /** numerical value for the weight (a number from 0 to 1000) */
     val value: Int,
 ) {
     companion object {
diff --git a/graphics/graphics-core/src/main/java/androidx/graphics/surface/SurfaceControlCompat.kt b/graphics/graphics-core/src/main/java/androidx/graphics/surface/SurfaceControlCompat.kt
index d7af2c2..df82137 100644
--- a/graphics/graphics-core/src/main/java/androidx/graphics/surface/SurfaceControlCompat.kt
+++ b/graphics/graphics-core/src/main/java/androidx/graphics/surface/SurfaceControlCompat.kt
@@ -520,7 +520,7 @@
          *
          * Must be finite && >= 1.0f
          * @return this
-         **/
+         */
         @RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
         fun setExtendedRangeBrightness(
             surfaceControl: SurfaceControlCompat,
diff --git a/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/MenstruationPeriodRecord.kt b/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/MenstruationPeriodRecord.kt
index c256001..698f654 100644
--- a/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/MenstruationPeriodRecord.kt
+++ b/health/connect/connect-client/src/main/java/androidx/health/connect/client/records/MenstruationPeriodRecord.kt
@@ -42,7 +42,7 @@
 
     /*
      * Generated by the IDE: Code -> Generate -> "equals() and hashCode()".
-     **/
+     */
     override fun equals(other: Any?): Boolean {
         if (this === other) return true
         if (other !is MenstruationPeriodRecord) return false
@@ -58,7 +58,7 @@
 
     /*
      * Generated by the IDE: Code -> Generate -> "equals() and hashCode()".
-     **/
+     */
     override fun hashCode(): Int {
         var result = startTime.hashCode()
         result = 31 * result + (startZoneOffset?.hashCode() ?: 0)
diff --git a/kruth/kruth/src/commonMain/kotlin/androidx/kruth/Subject.kt b/kruth/kruth/src/commonMain/kotlin/androidx/kruth/Subject.kt
index 9ec8b1c..76c5ae1b 100644
--- a/kruth/kruth/src/commonMain/kotlin/androidx/kruth/Subject.kt
+++ b/kruth/kruth/src/commonMain/kotlin/androidx/kruth/Subject.kt
@@ -67,7 +67,7 @@
 
     /**
      * Fails if the subject is null.
-     **/
+     */
     open fun isNotNull() {
         actual.standardIsNotEqualTo(null)
     }
@@ -134,7 +134,7 @@
 
     /**
      * Fails if the subject is an instance of the given class.
-     **/
+     */
     inline fun <reified V> isNotInstanceOf() {
         if (actual is V) {
             doFail("Expected $actual to be not an instance of ${typeOf<V>()} but it was")
diff --git a/leanback/leanback/src/main/java/androidx/leanback/app/package-info.java b/leanback/leanback/src/main/java/androidx/leanback/app/package-info.java
index b3bb913..4e7a474 100644
--- a/leanback/leanback/src/main/java/androidx/leanback/app/package-info.java
+++ b/leanback/leanback/src/main/java/androidx/leanback/app/package-info.java
@@ -62,6 +62,6 @@
  * A {@link androidx.leanback.app.GuidedStepSupportFragment} is used to guide the user
  * through a decision or series of decisions.
  * </p>
- **/
+ */
 
 package androidx.leanback.app;
diff --git a/media2/media2-session/src/main/java/androidx/media2/session/MediaLibraryService.java b/media2/media2-session/src/main/java/androidx/media2/session/MediaLibraryService.java
index 567f9d1..5566fb6 100644
--- a/media2/media2-session/src/main/java/androidx/media2/session/MediaLibraryService.java
+++ b/media2/media2-session/src/main/java/androidx/media2/session/MediaLibraryService.java
@@ -99,7 +99,7 @@
      *     <td>Actual package name via {@link Context#getPackageName()}</td>
      *     <td>Actual UID</td></tr>
      * </table>
-     **/
+     */
     public static final class MediaLibrarySession extends MediaSession {
         private final boolean mThrowsWhenInvalidReturn;
 
@@ -335,7 +335,7 @@
             /**
              * Prevents session to be crashed when it returns any invalid return.
              *
-             **/
+             */
             @RestrictTo(LIBRARY)
             @NonNull
             @VisibleForTesting
@@ -587,7 +587,7 @@
          * implementation must return the params with the {@code true} as well.
          *
          * @return {@code true} for offline items. {@code false} otherwise.
-         **/
+         */
         public boolean isOffline() {
             return convertToBoolean(mOffline);
         }
@@ -601,7 +601,7 @@
          * media items is considered ordered by relevance, first being the top suggestion.
          *
          * @return {@code true} for suggested items. {@code false} otherwise
-         **/
+         */
         public boolean isSuggested() {
             return convertToBoolean(mSuggested);
         }
diff --git a/media2/media2-session/src/main/java/androidx/media2/session/MediaUtils.java b/media2/media2-session/src/main/java/androidx/media2/session/MediaUtils.java
index a7afcb0..d726eb2 100644
--- a/media2/media2-session/src/main/java/androidx/media2/session/MediaUtils.java
+++ b/media2/media2-session/src/main/java/androidx/media2/session/MediaUtils.java
@@ -969,7 +969,7 @@
      *
      * @param attrs audio attributes
      * @return int legacy stream type from {@link AudioManager}
-     **/
+     */
     public static int getLegacyStreamType(@Nullable AudioAttributesCompat attrs) {
         int stream;
         if (attrs == null) {
diff --git a/media2/media2-session/src/main/java/androidx/media2/session/RemoteResult.java b/media2/media2-session/src/main/java/androidx/media2/session/RemoteResult.java
index 08c9682..bf836e6 100644
--- a/media2/media2-session/src/main/java/androidx/media2/session/RemoteResult.java
+++ b/media2/media2-session/src/main/java/androidx/media2/session/RemoteResult.java
@@ -21,7 +21,7 @@
 /**
  * Base interface for result classes in {@link MediaSession} and {@link MediaController} that may
  * be sent across the processes.
- **/
+ */
 interface RemoteResult extends BaseResult {
     /**
      * Result code representing that the session and controller were disconnected.
diff --git a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/SystemOutputSwitcherDialogController.java b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/SystemOutputSwitcherDialogController.java
index 3e74545..47c6bf5 100644
--- a/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/SystemOutputSwitcherDialogController.java
+++ b/mediarouter/mediarouter/src/main/java/androidx/mediarouter/app/SystemOutputSwitcherDialogController.java
@@ -43,11 +43,11 @@
     private static final String PACKAGE_NAME_SYSTEM_UI =
             "com.android.systemui";
 
-    /** Output switcher dialog intent action in Android S. **/
+    /** Output switcher dialog intent action in Android S. */
     private static final String OUTPUT_SWITCHER_INTENT_ACTION_ANDROID_S =
             "com.android.systemui.action.LAUNCH_MEDIA_OUTPUT_DIALOG";
 
-    /** Output switcher dialog intent action in Android R. **/
+    /** Output switcher dialog intent action in Android R. */
     private static final String OUTPUT_SWITCHER_INTENT_ACTION_ANDROID_R =
             "com.android.settings.panel.action.MEDIA_OUTPUT";
 
diff --git a/recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/StableIdKeyProvider.java b/recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/StableIdKeyProvider.java
index f1a2af7..3d6bdb3 100644
--- a/recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/StableIdKeyProvider.java
+++ b/recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/StableIdKeyProvider.java
@@ -151,7 +151,7 @@
      * A wrapper interface for RecyclerView allowing for easy unit testing.
      */
     interface ViewHost {
-        /** Registers View{Holder} lifecycle event listener. **/
+        /** Registers View{Holder} lifecycle event listener. */
         void registerLifecycleListener(@NonNull LifecycleListener listener);
 
         /**
diff --git a/recyclerview/recyclerview/src/main/java/androidx/recyclerview/widget/LinearSnapHelper.java b/recyclerview/recyclerview/src/main/java/androidx/recyclerview/widget/LinearSnapHelper.java
index 6481b87..09603f2 100644
--- a/recyclerview/recyclerview/src/main/java/androidx/recyclerview/widget/LinearSnapHelper.java
+++ b/recyclerview/recyclerview/src/main/java/androidx/recyclerview/widget/LinearSnapHelper.java
@@ -195,7 +195,7 @@
                     + (helper.getDecoratedMeasurement(child) / 2);
             int absDistance = Math.abs(childCenter - center);
 
-            /** if child center is closer than previous closest, set it as closest  **/
+            /** if child center is closer than previous closest, set it as closest  */
             if (absDistance < absClosest) {
                 absClosest = absDistance;
                 closestChild = child;
diff --git a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/BoxedPrimitivesTest.java b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/BoxedPrimitivesTest.java
index ad3024c..d8ca0a2 100644
--- a/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/BoxedPrimitivesTest.java
+++ b/room/integration-tests/testapp/src/androidTest/java/androidx/room/integration/testapp/test/BoxedPrimitivesTest.java
@@ -96,7 +96,7 @@
     /**
      * assert the case where row was inserted via entity hence we should've read the default values
      * already.
-     **/
+     */
     private void testInsertedAsEntity(BaseDao<? extends BaseBoxed> dao, long rowId) {
         BaseBoxed read = dao.find(rowId);
         // default getter value
diff --git a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/kotlin/KotlinClassMetadataUtils.kt b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/kotlin/KotlinClassMetadataUtils.kt
index b604f30..7d93ec0 100644
--- a/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/kotlin/KotlinClassMetadataUtils.kt
+++ b/room/room-compiler-processing/src/main/java/androidx/room/compiler/processing/javac/kotlin/KotlinClassMetadataUtils.kt
@@ -201,9 +201,9 @@
 }
 
 internal interface KmFunctionContainer : KmFlags {
-    /** Name of the function in source code **/
+    /** Name of the function in source code */
     val name: String
-    /** Name of the function in byte code **/
+    /** Name of the function in byte code */
     val jvmName: String
     val descriptor: String
     val typeParameters: List<KmTypeParameterContainer>
diff --git a/sqlite/sqlite-inspection/src/main/java/androidx/sqlite/inspection/DatabaseRegistry.java b/sqlite/sqlite-inspection/src/main/java/androidx/sqlite/inspection/DatabaseRegistry.java
index 2ff137d..0a80c05 100644
--- a/sqlite/sqlite-inspection/src/main/java/androidx/sqlite/inspection/DatabaseRegistry.java
+++ b/sqlite/sqlite-inspection/src/main/java/androidx/sqlite/inspection/DatabaseRegistry.java
@@ -371,7 +371,7 @@
          * This should only be called after removing the object from
          * {@link DatabaseRegistry#mKeepOpenReferences}. Otherwise, the object will get in its
          * own way or releasing its references.
-         **/
+         */
         private void releaseAllReferences() {
             synchronized (mLock) {
                 for (; mAcquiredReferenceCount > 0; mAcquiredReferenceCount--) {
diff --git a/sqlite/sqlite-inspection/src/main/java/androidx/sqlite/inspection/SqliteInspector.java b/sqlite/sqlite-inspection/src/main/java/androidx/sqlite/inspection/SqliteInspector.java
index 19e5564..b1776de 100644
--- a/sqlite/sqlite-inspection/src/main/java/androidx/sqlite/inspection/SqliteInspector.java
+++ b/sqlite/sqlite-inspection/src/main/java/androidx/sqlite/inspection/SqliteInspector.java
@@ -438,7 +438,7 @@
     private void registerInvalidationHooks(EntryExitMatchingHookRegistry hookRegistry) {
         /**
          * Schedules a task using {@link mScheduledExecutor} and executes it on {@link mIOExecutor}.
-         **/
+         */
         final RequestCollapsingThrottler.DeferredExecutor deferredExecutor =
                 new RequestCollapsingThrottler.DeferredExecutor() {
                     @Override
diff --git a/text/text/src/main/java/androidx/compose/ui/text/android/BoringLayoutFactory.kt b/text/text/src/main/java/androidx/compose/ui/text/android/BoringLayoutFactory.kt
index 0e0c05b..ccb66d0 100644
--- a/text/text/src/main/java/androidx/compose/ui/text/android/BoringLayoutFactory.kt
+++ b/text/text/src/main/java/androidx/compose/ui/text/android/BoringLayoutFactory.kt
@@ -73,7 +73,7 @@
      *
      * @see BoringLayout.isFallbackLineSpacingEnabled
      * @see StaticLayout.Builder.setUseLineSpacingFromFallbacks
-     **/
+     */
     @androidx.annotation.OptIn(markerClass = [BuildCompat.PrereleaseSdkCheck::class])
     fun create(
         text: CharSequence,
diff --git a/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/grid/LazyMeasuredItemProvider.kt b/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/grid/LazyMeasuredItemProvider.kt
index 1329963..7ebe5e7 100644
--- a/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/grid/LazyMeasuredItemProvider.kt
+++ b/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/grid/LazyMeasuredItemProvider.kt
@@ -62,7 +62,7 @@
     /**
      * Contains the mapping between the key and the index. It could contain not all the items of
      * the list as an optimization.
-     **/
+     */
     val keyToIndexMap: LazyLayoutKeyIndexMap get() = itemProvider.keyToIndexMap
 }
 
diff --git a/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/grid/LazyMeasuredLineProvider.kt b/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/grid/LazyMeasuredLineProvider.kt
index 6b68329..50cb0d3 100644
--- a/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/grid/LazyMeasuredLineProvider.kt
+++ b/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/grid/LazyMeasuredLineProvider.kt
@@ -93,7 +93,7 @@
     /**
      * Contains the mapping between the key and the index. It could contain not all the items of
      * the list as an optimization.
-     **/
+     */
     val keyToIndexMap: LazyLayoutKeyIndexMap get() = measuredItemProvider.keyToIndexMap
 }
 
diff --git a/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/layout/LazyAnimateScroll.kt b/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/layout/LazyAnimateScroll.kt
index aa12e0a..e40f926 100644
--- a/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/layout/LazyAnimateScroll.kt
+++ b/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/layout/LazyAnimateScroll.kt
@@ -45,7 +45,7 @@
 /**
  * Abstraction over animated scroll for using [animateScrollToItem] in different layouts.
  * todo(b/243786897): revisit this API and make it public
- **/
+ */
 internal interface LazyAnimateScrollScope {
     val density: Density
 
diff --git a/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/list/LazyMeasuredItemProvider.kt b/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/list/LazyMeasuredItemProvider.kt
index a291b8a..ce25e61 100644
--- a/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/list/LazyMeasuredItemProvider.kt
+++ b/tv/tv-foundation/src/main/java/androidx/tv/foundation/lazy/list/LazyMeasuredItemProvider.kt
@@ -53,7 +53,7 @@
     /**
      * Contains the mapping between the key and the index. It could contain not all the items of
      * the list as an optimization.
-     **/
+     */
     val keyToIndexMap: LazyLayoutKeyIndexMap get() = itemProvider.keyToIndexMap
 }
 
diff --git a/wear/compose/compose-material/src/main/java/androidx/wear/compose/material/HorizontalPageIndicator.kt b/wear/compose/compose-material/src/main/java/androidx/wear/compose/material/HorizontalPageIndicator.kt
index 08dd5cc..6955e11 100644
--- a/wear/compose/compose-material/src/main/java/androidx/wear/compose/material/HorizontalPageIndicator.kt
+++ b/wear/compose/compose-material/src/main/java/androidx/wear/compose/material/HorizontalPageIndicator.kt
@@ -82,7 +82,7 @@
  * @param spacing The spacing between indicator items in [Dp]
  * @param indicatorShape The shape of each [HorizontalPageIndicator] item.
  * Defaults to [CircleShape]
- **/
+ */
 @Composable
 public fun HorizontalPageIndicator(
     pageIndicatorState: PageIndicatorState,
diff --git a/wear/wear/src/main/java/androidx/wear/activity/ConfirmationActivity.java b/wear/wear/src/main/java/androidx/wear/activity/ConfirmationActivity.java
index fc93614..1f4764d 100644
--- a/wear/wear/src/main/java/androidx/wear/activity/ConfirmationActivity.java
+++ b/wear/wear/src/main/java/androidx/wear/activity/ConfirmationActivity.java
@@ -85,7 +85,7 @@
     public static final int OPEN_ON_PHONE_ANIMATION = 2;
     public static final int FAILURE_ANIMATION = 3;
 
-    /** Default animation duration in milliseconds. **/
+    /** Default animation duration in milliseconds. */
     static final int DEFAULT_ANIMATION_DURATION_MILLIS =
             ConfirmationOverlay.DEFAULT_ANIMATION_DURATION_MS;
 
diff --git a/wear/wear/src/main/java/androidx/wear/widget/ConfirmationOverlay.java b/wear/wear/src/main/java/androidx/wear/widget/ConfirmationOverlay.java
index 89b5914..604b1e0 100644
--- a/wear/wear/src/main/java/androidx/wear/widget/ConfirmationOverlay.java
+++ b/wear/wear/src/main/java/androidx/wear/widget/ConfirmationOverlay.java
@@ -101,10 +101,10 @@
         void onAnimationFinished();
     }
 
-    /** Default animation duration in ms. **/
+    /** Default animation duration in ms. */
     public static final int DEFAULT_ANIMATION_DURATION_MS = 1000;
 
-    /** Default animation duration in ms. **/
+    /** Default animation duration in ms. */
     private static final int A11Y_ANIMATION_DURATION_MS = 5000;
 
     /** Types of animations to display in the overlay. */
diff --git a/work/work-multiprocess/src/main/java/androidx/work/multiprocess/ListenableCallback.java b/work/work-multiprocess/src/main/java/androidx/work/multiprocess/ListenableCallback.java
index 5f78eb7..ed49d93 100644
--- a/work/work-multiprocess/src/main/java/androidx/work/multiprocess/ListenableCallback.java
+++ b/work/work-multiprocess/src/main/java/androidx/work/multiprocess/ListenableCallback.java
@@ -100,7 +100,7 @@
 
         /**
          * Dispatches failures callbacks safely.
-         **/
+         */
         public static void reportFailure(
                 @NonNull IWorkManagerImplCallback callback,
                 @NonNull Throwable throwable) {
