Migrate constraintlayout to use JSpecify annotations

CL created by running `development/jspecify_update.py constraintlayout`

We are updating all AndroidX libraries to use the Jspecify nullness annotations (https://docs.google.com/document/d/1XjainD032hUdCfgXIzRThHvP9FJANYuocKaTDXWuLXo/edit?usp=sharing)

Bug: 326456246
Test: `checkApi`, `lint`, `runErrorProne`
Relnote: "This library now uses [JSpecify nullness annotations](https://jspecify.dev/), which are type-use. Kotlin developers should use the following compiler arguments to enforce correct usage: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode"
Change-Id: I69cfdb2f635e36fda566b8f45979947c66aa8861
diff --git a/constraintlayout/constraintlayout-core/build.gradle b/constraintlayout/constraintlayout-core/build.gradle
index a2570c0..8826adc 100644
--- a/constraintlayout/constraintlayout-core/build.gradle
+++ b/constraintlayout/constraintlayout-core/build.gradle
@@ -29,6 +29,7 @@
 }
 
 dependencies {
+    api(libs.jspecify)
     api("androidx.annotation:annotation:1.8.1")
     testImplementation(libs.junit)
 }
@@ -39,6 +40,4 @@
     mavenVersion = LibraryVersions.CONSTRAINTLAYOUT_CORE
     inceptionYear = "2022"
     description = "This library contains engines and algorithms for constraint based layout and complex animations (it is used by the ConstraintLayout library)"
-    // TODO: b/326456246
-    optOutJSpecify = true
 }
diff --git a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/parser/CLContainer.java b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/parser/CLContainer.java
index f3a66d0..9791396 100644
--- a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/parser/CLContainer.java
+++ b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/parser/CLContainer.java
@@ -15,7 +15,7 @@
  */
 package androidx.constraintlayout.core.parser;
 
-import androidx.annotation.NonNull;
+import org.jspecify.annotations.NonNull;
 
 import java.util.ArrayList;
 import java.util.Objects;
@@ -352,9 +352,8 @@
         return null;
     }
 
-    @NonNull
     @Override
-    public CLContainer clone() {
+    public @NonNull CLContainer clone() {
         CLContainer clone = (CLContainer) super.clone();
         ArrayList<CLElement> clonedArray = new ArrayList<>(mElements.size());
         for (CLElement element: mElements) {
diff --git a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/parser/CLElement.java b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/parser/CLElement.java
index acb7a97..f8badbf 100644
--- a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/parser/CLElement.java
+++ b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/parser/CLElement.java
@@ -15,7 +15,7 @@
  */
 package androidx.constraintlayout.core.parser;
 
-import androidx.annotation.NonNull;
+import org.jspecify.annotations.NonNull;
 
 import java.util.Arrays;
 import java.util.Objects;
@@ -204,9 +204,8 @@
         return result;
     }
 
-    @NonNull
     @Override
-    public CLElement clone() {
+    public @NonNull CLElement clone() {
         try {
             return (CLElement) super.clone();
         } catch (CloneNotSupportedException e) {
diff --git a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/parser/CLObject.java b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/parser/CLObject.java
index 479edae..49cdbfa 100644
--- a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/parser/CLObject.java
+++ b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/parser/CLObject.java
@@ -15,7 +15,7 @@
  */
 package androidx.constraintlayout.core.parser;
 
-import androidx.annotation.NonNull;
+import org.jspecify.annotations.NonNull;
 
 import java.util.Iterator;
 
@@ -106,9 +106,8 @@
         }
     }
 
-    @NonNull
     @Override
-    public CLObject clone() {
+    public @NonNull CLObject clone() {
         // Overriding to get expected return type
         return (CLObject) super.clone();
     }
diff --git a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/parser/CLString.java b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/parser/CLString.java
index 5ce2fd4..173657f 100644
--- a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/parser/CLString.java
+++ b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/parser/CLString.java
@@ -15,7 +15,7 @@
  */
 package androidx.constraintlayout.core.parser;
 
-import androidx.annotation.NonNull;
+import org.jspecify.annotations.NonNull;
 
 /**
  * {@link CLElement} implementation for json Strings when used as property values or array elements.
@@ -34,8 +34,7 @@
     /**
      * Creates a {@link CLString} element from a String object.
      */
-    @NonNull
-    public static CLString from(@NonNull String content) {
+    public static @NonNull CLString from(@NonNull String content) {
         CLString stringElement = new CLString(content.toCharArray());
         stringElement.setStart(0L);
         stringElement.setEnd(content.length() - 1);
diff --git a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/ConstraintReference.java b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/ConstraintReference.java
index 53e09a9..facf8ac 100644
--- a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/ConstraintReference.java
+++ b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/ConstraintReference.java
@@ -20,13 +20,14 @@
 import static androidx.constraintlayout.core.widgets.ConstraintWidget.UNKNOWN;
 import static androidx.constraintlayout.core.widgets.ConstraintWidget.VERTICAL;
 
-import androidx.annotation.Nullable;
 import androidx.constraintlayout.core.motion.utils.TypedBundle;
 import androidx.constraintlayout.core.motion.utils.TypedValues;
 import androidx.constraintlayout.core.state.helpers.Facade;
 import androidx.constraintlayout.core.widgets.ConstraintAnchor;
 import androidx.constraintlayout.core.widgets.ConstraintWidget;
 
+import org.jspecify.annotations.Nullable;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 
diff --git a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/ConstraintSetParser.java b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/ConstraintSetParser.java
index efd960d..1cf37f2 100644
--- a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/ConstraintSetParser.java
+++ b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/ConstraintSetParser.java
@@ -22,7 +22,6 @@
 import static androidx.constraintlayout.core.widgets.ConstraintWidget.HORIZONTAL;
 import static androidx.constraintlayout.core.widgets.ConstraintWidget.VERTICAL;
 
-import androidx.annotation.NonNull;
 import androidx.annotation.RestrictTo;
 import androidx.constraintlayout.core.motion.utils.TypedBundle;
 import androidx.constraintlayout.core.motion.utils.TypedValues;
@@ -42,6 +41,8 @@
 import androidx.constraintlayout.core.widgets.ConstraintWidget;
 import androidx.constraintlayout.core.widgets.Flow;
 
+import org.jspecify.annotations.NonNull;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 
diff --git a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/State.java b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/State.java
index a0f208d..84056ff 100644
--- a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/State.java
+++ b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/State.java
@@ -20,7 +20,6 @@
 import static androidx.constraintlayout.core.widgets.ConstraintWidget.CHAIN_SPREAD;
 import static androidx.constraintlayout.core.widgets.ConstraintWidget.CHAIN_SPREAD_INSIDE;
 
-import androidx.annotation.NonNull;
 import androidx.constraintlayout.core.state.helpers.AlignHorizontallyReference;
 import androidx.constraintlayout.core.state.helpers.AlignVerticallyReference;
 import androidx.constraintlayout.core.state.helpers.BarrierReference;
@@ -33,6 +32,8 @@
 import androidx.constraintlayout.core.widgets.ConstraintWidgetContainer;
 import androidx.constraintlayout.core.widgets.HelperWidget;
 
+import org.jspecify.annotations.NonNull;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
@@ -423,8 +424,7 @@
      * @param gridType type of Grid pattern - Grid, Row, or Column
      * @return a GridReference object
      */
-    @NonNull
-    public GridReference getGrid(@NonNull Object key, @NonNull String gridType) {
+    public @NonNull GridReference getGrid(@NonNull Object key, @NonNull String gridType) {
         ConstraintReference reference = constraints(key);
         if (reference.getFacade() == null || !(reference.getFacade() instanceof GridReference)) {
             State.Helper Type = Helper.GRID;
diff --git a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/Transition.java b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/Transition.java
index cf66b93..9b605dd 100644
--- a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/Transition.java
+++ b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/Transition.java
@@ -16,7 +16,6 @@
 
 package androidx.constraintlayout.core.state;
 
-import androidx.annotation.NonNull;
 import androidx.annotation.RestrictTo;
 import androidx.constraintlayout.core.motion.CustomVariable;
 import androidx.constraintlayout.core.motion.Motion;
@@ -35,6 +34,8 @@
 import androidx.constraintlayout.core.widgets.ConstraintWidget;
 import androidx.constraintlayout.core.widgets.ConstraintWidgetContainer;
 
+import org.jspecify.annotations.NonNull;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
diff --git a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/TransitionParser.java b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/TransitionParser.java
index 9801b39..29b7c16 100644
--- a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/TransitionParser.java
+++ b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/TransitionParser.java
@@ -18,7 +18,6 @@
 
 import static androidx.constraintlayout.core.state.ConstraintSetParser.parseColorString;
 
-import androidx.annotation.NonNull;
 import androidx.annotation.RestrictTo;
 import androidx.constraintlayout.core.motion.CustomVariable;
 import androidx.constraintlayout.core.motion.utils.TypedBundle;
@@ -31,6 +30,8 @@
 import androidx.constraintlayout.core.parser.CLObject;
 import androidx.constraintlayout.core.parser.CLParsingException;
 
+import org.jspecify.annotations.NonNull;
+
 /**
  * Contains code for Parsing Transitions
  */
diff --git a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/WidgetFrame.java b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/WidgetFrame.java
index 4adf478..5ab1701 100644
--- a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/WidgetFrame.java
+++ b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/WidgetFrame.java
@@ -16,7 +16,6 @@
 
 package androidx.constraintlayout.core.state;
 
-import androidx.annotation.NonNull;
 import androidx.constraintlayout.core.motion.CustomAttribute;
 import androidx.constraintlayout.core.motion.CustomVariable;
 import androidx.constraintlayout.core.motion.utils.TypedBundle;
@@ -29,6 +28,8 @@
 import androidx.constraintlayout.core.widgets.ConstraintAnchor;
 import androidx.constraintlayout.core.widgets.ConstraintWidget;
 
+import org.jspecify.annotations.NonNull;
+
 import java.util.HashMap;
 import java.util.Set;
 
diff --git a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/helpers/ChainReference.java b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/helpers/ChainReference.java
index 51269c7..ea5b4a7 100644
--- a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/helpers/ChainReference.java
+++ b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/helpers/ChainReference.java
@@ -18,11 +18,12 @@
 
 import static androidx.constraintlayout.core.widgets.ConstraintWidget.UNKNOWN;
 
-import androidx.annotation.NonNull;
 import androidx.annotation.RestrictTo;
 import androidx.constraintlayout.core.state.HelperReference;
 import androidx.constraintlayout.core.state.State;
 
+import org.jspecify.annotations.NonNull;
+
 import java.util.HashMap;
 
 /**
@@ -55,13 +56,13 @@
     private HashMap<String, Float> mMapPreGoneMargin;
     private HashMap<String, Float> mMapPostGoneMargin;
 
-    protected @NonNull State.Chain mStyle = State.Chain.SPREAD;
+    protected State.@NonNull Chain mStyle = State.Chain.SPREAD;
 
-    public ChainReference(@NonNull State state, @NonNull State.Helper type) {
+    public ChainReference(@NonNull State state, State.@NonNull Helper type) {
         super(state, type);
     }
 
-    public @NonNull State.Chain getStyle() {
+    public State.@NonNull Chain getStyle() {
         return State.Chain.SPREAD;
     }
 
@@ -71,8 +72,7 @@
      * @param style Defines the way the chain will lay out its elements
      * @return This same instance
      */
-    @NonNull
-    public ChainReference style(@NonNull State.Chain style) {
+    public @NonNull ChainReference style(State.@NonNull Chain style) {
         mStyle = style;
         return this;
     }
@@ -191,9 +191,8 @@
     }
 
     // @TODO: add description
-    @NonNull
     @Override
-    public ChainReference bias(float bias) {
+    public @NonNull ChainReference bias(float bias) {
         mBias = bias;
         return this;
     }
diff --git a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/helpers/GridReference.java b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/helpers/GridReference.java
index d2168ad..900ef31 100644
--- a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/helpers/GridReference.java
+++ b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/state/helpers/GridReference.java
@@ -16,13 +16,14 @@
 
 package androidx.constraintlayout.core.state.helpers;
 
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
 import androidx.constraintlayout.core.state.HelperReference;
 import androidx.constraintlayout.core.state.State;
 import androidx.constraintlayout.core.utils.GridCore;
 import androidx.constraintlayout.core.widgets.HelperWidget;
 
+import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
+
 /**
  * A HelperReference of a Grid Helper that helps enable Grid in Compose
  */
@@ -31,7 +32,7 @@
     private static final String SPANS_RESPECT_WIDGET_ORDER_STRING = "spansrespectwidgetorder";
     private static final String SUB_GRID_BY_COL_ROW_STRING = "subgridbycolrow";
 
-    public GridReference(@NonNull State state, @NonNull State.Helper type) {
+    public GridReference(@NonNull State state, State.@NonNull Helper type) {
         super(state, type);
         if (type == State.Helper.ROW) {
             this.mRowsSet = 1;
@@ -292,8 +293,7 @@
      * Get the row weights
      * @return the row weights
      */
-    @Nullable
-    public String getRowWeights() {
+    public @Nullable String getRowWeights() {
         return mRowWeights;
     }
 
@@ -309,8 +309,7 @@
      * Get the column weights
      * @return the column weights
      */
-    @Nullable
-    public String getColumnWeights() {
+    public @Nullable String getColumnWeights() {
         return mColumnWeights;
     }
 
@@ -326,8 +325,7 @@
      * Get the spans
      * @return the spans
      */
-    @Nullable
-    public String getSpans() {
+    public @Nullable String getSpans() {
         return mSpans;
     }
 
@@ -343,8 +341,7 @@
      * Get the skips
      * @return the skips
      */
-    @Nullable
-    public String getSkips() {
+    public @Nullable String getSkips() {
         return mSkips;
     }
 
@@ -361,8 +358,7 @@
      * @return the helper widget (Grid)
      */
     @Override
-    @NonNull
-    public HelperWidget getHelperWidget() {
+    public @NonNull HelperWidget getHelperWidget() {
         if (mGrid == null) {
             mGrid = new GridCore();
         }
diff --git a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/utils/GridCore.java b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/utils/GridCore.java
index 7424e64c..6d72d91 100644
--- a/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/utils/GridCore.java
+++ b/constraintlayout/constraintlayout-core/src/main/java/androidx/constraintlayout/core/utils/GridCore.java
@@ -18,13 +18,14 @@
 
 import static androidx.constraintlayout.core.widgets.ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT;
 
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
 import androidx.constraintlayout.core.LinearSystem;
 import androidx.constraintlayout.core.widgets.ConstraintWidget;
 import androidx.constraintlayout.core.widgets.ConstraintWidgetContainer;
 import androidx.constraintlayout.core.widgets.VirtualLayout;
 
+import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
+
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
@@ -181,8 +182,7 @@
      *
      * @return the parent ConstraintWidgetContainer
      */
-    @Nullable
-    public ConstraintWidgetContainer getContainer() {
+    public @Nullable ConstraintWidgetContainer getContainer() {
         return mContainer;
     }
 
@@ -278,8 +278,7 @@
      *
      * @return the string value of rowWeights
      */
-    @Nullable
-    public String getRowWeights() {
+    public @Nullable String getRowWeights() {
         return mRowWeights;
     }
 
@@ -301,8 +300,7 @@
      *
      * @return the string value of columnWeights
      */
-    @Nullable
-    public String getColumnWeights() {
+    public @Nullable String getColumnWeights() {
         return mColumnWeights;
     }
 
diff --git a/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/AdvancedChainTest.java b/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/AdvancedChainTest.java
index 2064aa3..cfdb016 100644
--- a/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/AdvancedChainTest.java
+++ b/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/AdvancedChainTest.java
@@ -28,7 +28,6 @@
 
 import java.util.ArrayList;
 
-
 public class AdvancedChainTest {
 
     @Test
diff --git a/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/ArrayLinkedVariablesTest.java b/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/ArrayLinkedVariablesTest.java
index 991f996..adac6db 100644
--- a/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/ArrayLinkedVariablesTest.java
+++ b/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/ArrayLinkedVariablesTest.java
@@ -20,7 +20,6 @@
 
 import org.junit.Test;
 
-
 /**
  * Test nested layout
  */
diff --git a/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/BarrierTest.java b/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/BarrierTest.java
index 64fd187..faa0e2c 100644
--- a/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/BarrierTest.java
+++ b/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/BarrierTest.java
@@ -27,7 +27,6 @@
 
 import org.junit.Test;
 
-
 /**
  * Tests for Barriers
  */
diff --git a/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/RandomLayoutTest.java b/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/RandomLayoutTest.java
index de79560..c823105 100644
--- a/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/RandomLayoutTest.java
+++ b/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/RandomLayoutTest.java
@@ -28,7 +28,6 @@
 import java.util.ArrayList;
 import java.util.Random;
 
-
 /**
  * This test creates a random set of non overlapping rectangles uses the scout
  * to add a sequence of constraints. Verify that the constraint engine will then layout the
diff --git a/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/widgets/ChainHeadTest.java b/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/widgets/ChainHeadTest.java
index 1c85799..bd9d2d1 100644
--- a/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/widgets/ChainHeadTest.java
+++ b/constraintlayout/constraintlayout-core/src/test/java/androidx/constraintlayout/core/widgets/ChainHeadTest.java
@@ -24,7 +24,6 @@
 
 import org.junit.Test;
 
-
 public class ChainHeadTest {
 
     @Test
diff --git a/constraintlayout/constraintlayout/build.gradle b/constraintlayout/constraintlayout/build.gradle
index c29662e..cf91f8b 100644
--- a/constraintlayout/constraintlayout/build.gradle
+++ b/constraintlayout/constraintlayout/build.gradle
@@ -29,6 +29,7 @@
 }
 
 dependencies {
+    api(libs.jspecify)
     implementation("androidx.appcompat:appcompat:1.2.0")
     implementation("androidx.core:core:1.3.2")
     implementation(project(":constraintlayout:constraintlayout-core"))
@@ -48,6 +49,4 @@
     mavenVersion = LibraryVersions.CONSTRAINTLAYOUT
     inceptionYear = "2022"
     description = "This library offers a flexible and adaptable way to position and animate widgets"
-    // TODO: b/326456246
-    optOutJSpecify = true
 }
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Grid.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Grid.java
index 5d23e12..d99fd40 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Grid.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/helper/widget/Grid.java
@@ -24,12 +24,13 @@
 import android.util.AttributeSet;
 import android.view.View;
 
-import androidx.annotation.NonNull;
 import androidx.constraintlayout.widget.ConstraintLayout;
 import androidx.constraintlayout.widget.ConstraintSet;
 import androidx.constraintlayout.widget.R;
 import androidx.constraintlayout.widget.VirtualLayout;
 
+import org.jspecify.annotations.NonNull;
+
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java
index ef888ce..bf3d856 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/MotionLayout.java
@@ -49,8 +49,6 @@
 import android.widget.TextView;
 
 import androidx.annotation.IdRes;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
 import androidx.constraintlayout.core.motion.utils.KeyCache;
 import androidx.constraintlayout.core.widgets.ConstraintAnchor;
 import androidx.constraintlayout.core.widgets.ConstraintWidget;
@@ -68,13 +66,15 @@
 import androidx.constraintlayout.widget.R;
 import androidx.core.view.NestedScrollingParent3;
 
+import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
 
-
 /**
  * A subclass of ConstraintLayout that supports animating between
  * various states <b>Added in 2.0</b>
@@ -3161,7 +3161,7 @@
     public void onNestedPreScroll(@NonNull View target,
                                   int dx,
                                   int dy,
-                                  @NonNull int[] consumed,
+                                  int @NonNull [] consumed,
                                   int type) {
 
         MotionScene scene = mScene;
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/MotionPaths.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/MotionPaths.java
index b695b5b..2baf01c 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/MotionPaths.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/motion/widget/MotionPaths.java
@@ -21,11 +21,12 @@
 import android.util.Log;
 import android.view.View;
 
-import androidx.annotation.NonNull;
 import androidx.constraintlayout.core.motion.utils.Easing;
 import androidx.constraintlayout.widget.ConstraintAttribute;
 import androidx.constraintlayout.widget.ConstraintSet;
 
+import org.jspecify.annotations.NonNull;
+
 import java.util.Arrays;
 import java.util.LinkedHashMap;
 import java.util.Set;
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/ImageFilterButton.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/ImageFilterButton.java
index a755550..db9c224 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/ImageFilterButton.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/ImageFilterButton.java
@@ -29,11 +29,12 @@
 import android.view.View;
 import android.view.ViewOutlineProvider;
 
-import androidx.annotation.NonNull;
 import androidx.annotation.RequiresApi;
 import androidx.appcompat.content.res.AppCompatResources;
 import androidx.constraintlayout.widget.R;
 
+import org.jspecify.annotations.NonNull;
+
 /**
  * An AppCompatImageButton that can display, combine and filter images. <b>Added in 2.0</b>
  * <p>
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/ImageFilterView.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/ImageFilterView.java
index 4ca975c..8890b9a 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/ImageFilterView.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/ImageFilterView.java
@@ -32,11 +32,12 @@
 import android.view.ViewOutlineProvider;
 import android.widget.ImageView;
 
-import androidx.annotation.NonNull;
 import androidx.annotation.RequiresApi;
 import androidx.appcompat.content.res.AppCompatResources;
 import androidx.constraintlayout.widget.R;
 
+import org.jspecify.annotations.NonNull;
+
 /**
  * An ImageView that can display, combine and filter images. <b>Added in 2.0</b>
  * <p>
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/MockView.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/MockView.java
index 389bfa7..d850868 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/MockView.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/MockView.java
@@ -26,9 +26,10 @@
 import android.util.DisplayMetrics;
 import android.view.View;
 
-import androidx.annotation.NonNull;
 import androidx.constraintlayout.widget.R;
 
+import org.jspecify.annotations.NonNull;
+
 /**
  * A view that is useful for prototyping layouts. <b>Added in 2.0</b>
  * <p>
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/MotionButton.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/MotionButton.java
index 93d791c..4e7c7ba 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/MotionButton.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/MotionButton.java
@@ -27,10 +27,11 @@
 import android.view.View;
 import android.view.ViewOutlineProvider;
 
-import androidx.annotation.NonNull;
 import androidx.annotation.RequiresApi;
 import androidx.constraintlayout.widget.R;
 
+import org.jspecify.annotations.NonNull;
+
 /**
  * A MotionButton is an AppCompatButton that can round its edges. <b>Added in 2.0</b>
  * <p>
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/MotionLabel.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/MotionLabel.java
index 9d1a216..0b5765d 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/MotionLabel.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/MotionLabel.java
@@ -42,14 +42,15 @@
 import android.view.View;
 import android.view.ViewOutlineProvider;
 
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
 import androidx.annotation.RequiresApi;
 import androidx.constraintlayout.motion.widget.Debug;
 import androidx.constraintlayout.motion.widget.FloatLayout;
 import androidx.constraintlayout.widget.R;
 import androidx.core.widget.TextViewCompat;
 
+import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
+
 import java.util.Objects;
 
 /**
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/MotionTelltales.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/MotionTelltales.java
index 38a2433..068fb17 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/MotionTelltales.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/utils/widget/MotionTelltales.java
@@ -24,10 +24,11 @@
 import android.util.AttributeSet;
 import android.view.ViewParent;
 
-import androidx.annotation.NonNull;
 import androidx.constraintlayout.motion.widget.MotionLayout;
 import androidx.constraintlayout.widget.R;
 
+import org.jspecify.annotations.NonNull;
+
 /**
  * A view that is useful for prototyping Views that will move in MotionLayout. <b>Added in 2.0</b>
  * <p>
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintHelper.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintHelper.java
index 7b1e135..c0aadaa 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintHelper.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintHelper.java
@@ -27,12 +27,13 @@
 import android.view.ViewGroup;
 import android.view.ViewParent;
 
-import androidx.annotation.NonNull;
 import androidx.constraintlayout.core.widgets.ConstraintWidget;
 import androidx.constraintlayout.core.widgets.ConstraintWidgetContainer;
 import androidx.constraintlayout.core.widgets.Helper;
 import androidx.constraintlayout.core.widgets.HelperWidget;
 
+import org.jspecify.annotations.NonNull;
+
 import java.lang.reflect.Field;
 import java.util.Arrays;
 import java.util.HashMap;
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintLayout.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintLayout.java
index 94ccc7b..163d4f5 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintLayout.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintLayout.java
@@ -41,8 +41,6 @@
 import android.view.View;
 import android.view.ViewGroup;
 
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
 import androidx.constraintlayout.core.LinearSystem;
 import androidx.constraintlayout.core.Metrics;
 import androidx.constraintlayout.core.widgets.ConstraintAnchor;
@@ -52,6 +50,9 @@
 import androidx.constraintlayout.core.widgets.Optimizer;
 import androidx.constraintlayout.core.widgets.analyzer.BasicMeasure;
 
+import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.Nullable;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintLayoutStatistics.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintLayoutStatistics.java
index a161340..c708831 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintLayoutStatistics.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ConstraintLayoutStatistics.java
@@ -22,7 +22,6 @@
 import androidx.constraintlayout.core.Metrics;
 
 import java.text.DecimalFormat;
-import java.util.ArrayList;
 
 /**
  * This provide metrics of the complexity of the layout that is being solved.
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/Guideline.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/Guideline.java
index 577a8d7..8e41650 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/Guideline.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/Guideline.java
@@ -22,7 +22,7 @@
 import android.util.AttributeSet;
 import android.view.View;
 
-import androidx.annotation.NonNull;
+import org.jspecify.annotations.NonNull;
 
 /**
  * Utility class representing a Guideline helper object for
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/Placeholder.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/Placeholder.java
index dd60e03..0ee1008 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/Placeholder.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/Placeholder.java
@@ -26,9 +26,10 @@
 import android.util.AttributeSet;
 import android.view.View;
 
-import androidx.annotation.NonNull;
 import androidx.constraintlayout.core.widgets.ConstraintWidget;
 
+import org.jspecify.annotations.NonNull;
+
 /**
  * <b>Added in 1.1</b>
  * <p>
diff --git a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ReactiveGuide.java b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ReactiveGuide.java
index 9f7bde2..fec9008 100644
--- a/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ReactiveGuide.java
+++ b/constraintlayout/constraintlayout/src/main/java/androidx/constraintlayout/widget/ReactiveGuide.java
@@ -23,9 +23,10 @@
 import android.util.AttributeSet;
 import android.view.View;
 
-import androidx.annotation.NonNull;
 import androidx.constraintlayout.motion.widget.MotionLayout;
 
+import org.jspecify.annotations.NonNull;
+
 /**
  * Utility class representing a reactive Guideline helper object for {@link ConstraintLayout}.
  */