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}.
*/