extends AbstractArraySubject {
private final T @Nullable [] actual;
diff --git a/core/src/main/java/com/google/common/truth/OptionalDoubleSubject.java b/core/src/main/java/com/google/common/truth/OptionalDoubleSubject.java
index fa9d94025..2aefa170f 100644
--- a/core/src/main/java/com/google/common/truth/OptionalDoubleSubject.java
+++ b/core/src/main/java/com/google/common/truth/OptionalDoubleSubject.java
@@ -19,7 +19,7 @@
import static com.google.common.truth.Fact.simpleFact;
import java.util.OptionalDouble;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/**
* Propositions for Java 8 {@link OptionalDouble} subjects.
diff --git a/core/src/main/java/com/google/common/truth/OptionalIntSubject.java b/core/src/main/java/com/google/common/truth/OptionalIntSubject.java
index b4350536c..12d0ed932 100644
--- a/core/src/main/java/com/google/common/truth/OptionalIntSubject.java
+++ b/core/src/main/java/com/google/common/truth/OptionalIntSubject.java
@@ -19,7 +19,7 @@
import static com.google.common.truth.Fact.simpleFact;
import java.util.OptionalInt;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/**
* Propositions for Java 8 {@link OptionalInt} subjects.
diff --git a/core/src/main/java/com/google/common/truth/OptionalLongSubject.java b/core/src/main/java/com/google/common/truth/OptionalLongSubject.java
index 535fd1b3b..ddf51066a 100644
--- a/core/src/main/java/com/google/common/truth/OptionalLongSubject.java
+++ b/core/src/main/java/com/google/common/truth/OptionalLongSubject.java
@@ -19,7 +19,7 @@
import static com.google.common.truth.Fact.simpleFact;
import java.util.OptionalLong;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/**
* Propositions for Java 8 {@link OptionalLong} subjects.
diff --git a/core/src/main/java/com/google/common/truth/OptionalSubject.java b/core/src/main/java/com/google/common/truth/OptionalSubject.java
index f6cac1ef5..246888041 100644
--- a/core/src/main/java/com/google/common/truth/OptionalSubject.java
+++ b/core/src/main/java/com/google/common/truth/OptionalSubject.java
@@ -19,7 +19,7 @@
import static com.google.common.truth.Fact.simpleFact;
import java.util.Optional;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/**
* Propositions for Java 8 {@link Optional} subjects.
diff --git a/core/src/main/java/com/google/common/truth/Ordered.java b/core/src/main/java/com/google/common/truth/Ordered.java
index 2f7efed38..2eb1f0d18 100644
--- a/core/src/main/java/com/google/common/truth/Ordered.java
+++ b/core/src/main/java/com/google/common/truth/Ordered.java
@@ -15,6 +15,7 @@
*/
package com.google.common.truth;
+import org.jspecify.annotations.NullMarked;
/**
* Returned by calls like {@link IterableSubject#containsExactly}, {@code Ordered} lets the caller
@@ -26,6 +27,7 @@
* assertThat(supportedCharsets).containsExactly("UTF-8", "US-ASCII").inOrder(); // does check order
* }
*/
+@NullMarked
public interface Ordered {
/**
diff --git a/core/src/main/java/com/google/common/truth/Platform.java b/core/src/main/java/com/google/common/truth/Platform.java
index 30f7277dd..69944c1e4 100644
--- a/core/src/main/java/com/google/common/truth/Platform.java
+++ b/core/src/main/java/com/google/common/truth/Platform.java
@@ -32,7 +32,8 @@
import java.lang.reflect.Method;
import java.util.List;
import java.util.regex.Pattern;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
import org.junit.ComparisonFailure;
import org.junit.rules.TestRule;
@@ -42,6 +43,7 @@
*
* @author Christian Gruber (cgruber@google.com)
*/
+@NullMarked
final class Platform {
private Platform() {}
diff --git a/core/src/main/java/com/google/common/truth/PrimitiveBooleanArraySubject.java b/core/src/main/java/com/google/common/truth/PrimitiveBooleanArraySubject.java
index 33ff6d895..30e221d9c 100644
--- a/core/src/main/java/com/google/common/truth/PrimitiveBooleanArraySubject.java
+++ b/core/src/main/java/com/google/common/truth/PrimitiveBooleanArraySubject.java
@@ -18,13 +18,15 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.primitives.Booleans;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* A Subject for {@code boolean[]}.
*
* @author Christian Gruber (cgruber@israfil.net)
*/
+@NullMarked
public final class PrimitiveBooleanArraySubject extends AbstractArraySubject {
private final boolean @Nullable [] actual;
diff --git a/core/src/main/java/com/google/common/truth/PrimitiveByteArraySubject.java b/core/src/main/java/com/google/common/truth/PrimitiveByteArraySubject.java
index f8169ca4d..510d953d6 100644
--- a/core/src/main/java/com/google/common/truth/PrimitiveByteArraySubject.java
+++ b/core/src/main/java/com/google/common/truth/PrimitiveByteArraySubject.java
@@ -18,13 +18,15 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.primitives.Bytes;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* A Subject for {@code byte[]}.
*
* @author Kurt Alfred Kluever
*/
+@NullMarked
public final class PrimitiveByteArraySubject extends AbstractArraySubject {
private final byte @Nullable [] actual;
diff --git a/core/src/main/java/com/google/common/truth/PrimitiveCharArraySubject.java b/core/src/main/java/com/google/common/truth/PrimitiveCharArraySubject.java
index 79e6f12eb..bfeceea06 100644
--- a/core/src/main/java/com/google/common/truth/PrimitiveCharArraySubject.java
+++ b/core/src/main/java/com/google/common/truth/PrimitiveCharArraySubject.java
@@ -18,13 +18,15 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.primitives.Chars;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* A Subject for {@code char[]}.
*
* @author Christian Gruber (cgruber@israfil.net)
*/
+@NullMarked
public final class PrimitiveCharArraySubject extends AbstractArraySubject {
private final char @Nullable [] actual;
diff --git a/core/src/main/java/com/google/common/truth/PrimitiveDoubleArraySubject.java b/core/src/main/java/com/google/common/truth/PrimitiveDoubleArraySubject.java
index 6fdb27507..840b6f704 100644
--- a/core/src/main/java/com/google/common/truth/PrimitiveDoubleArraySubject.java
+++ b/core/src/main/java/com/google/common/truth/PrimitiveDoubleArraySubject.java
@@ -23,13 +23,15 @@
import com.google.common.primitives.Doubles;
import com.google.errorprone.annotations.CanIgnoreReturnValue;
import java.util.Arrays;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* A Subject for {@code double[]}.
*
* @author Christian Gruber (cgruber@israfil.net)
*/
+@NullMarked
public final class PrimitiveDoubleArraySubject extends AbstractArraySubject {
private final double @Nullable [] actual;
diff --git a/core/src/main/java/com/google/common/truth/PrimitiveFloatArraySubject.java b/core/src/main/java/com/google/common/truth/PrimitiveFloatArraySubject.java
index 339a4d5be..c53267d0f 100644
--- a/core/src/main/java/com/google/common/truth/PrimitiveFloatArraySubject.java
+++ b/core/src/main/java/com/google/common/truth/PrimitiveFloatArraySubject.java
@@ -23,13 +23,15 @@
import com.google.common.primitives.Floats;
import com.google.errorprone.annotations.CanIgnoreReturnValue;
import java.util.Arrays;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* A Subject for {@code float[]}.
*
* @author Christian Gruber (cgruber@israfil.net)
*/
+@NullMarked
public final class PrimitiveFloatArraySubject extends AbstractArraySubject {
private final float @Nullable [] actual;
diff --git a/core/src/main/java/com/google/common/truth/PrimitiveIntArraySubject.java b/core/src/main/java/com/google/common/truth/PrimitiveIntArraySubject.java
index b6c64634d..f2458b88c 100644
--- a/core/src/main/java/com/google/common/truth/PrimitiveIntArraySubject.java
+++ b/core/src/main/java/com/google/common/truth/PrimitiveIntArraySubject.java
@@ -18,13 +18,15 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.primitives.Ints;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* A Subject for {@code int[]}.
*
* @author Christian Gruber (cgruber@israfil.net)
*/
+@NullMarked
public final class PrimitiveIntArraySubject extends AbstractArraySubject {
private final int @Nullable [] actual;
diff --git a/core/src/main/java/com/google/common/truth/PrimitiveLongArraySubject.java b/core/src/main/java/com/google/common/truth/PrimitiveLongArraySubject.java
index 074410863..4b5ed5ebe 100644
--- a/core/src/main/java/com/google/common/truth/PrimitiveLongArraySubject.java
+++ b/core/src/main/java/com/google/common/truth/PrimitiveLongArraySubject.java
@@ -18,13 +18,15 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.primitives.Longs;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* A Subject for {@code long[]}.
*
* @author Christian Gruber (cgruber@israfil.net)
*/
+@NullMarked
public final class PrimitiveLongArraySubject extends AbstractArraySubject {
private final long @Nullable [] actual;
diff --git a/core/src/main/java/com/google/common/truth/PrimitiveShortArraySubject.java b/core/src/main/java/com/google/common/truth/PrimitiveShortArraySubject.java
index dcefab478..ff36a947e 100644
--- a/core/src/main/java/com/google/common/truth/PrimitiveShortArraySubject.java
+++ b/core/src/main/java/com/google/common/truth/PrimitiveShortArraySubject.java
@@ -18,13 +18,15 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.primitives.Shorts;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* A Subject for {@code short[]}.
*
* @author Christian Gruber (cgruber@israfil.net)
*/
+@NullMarked
public final class PrimitiveShortArraySubject extends AbstractArraySubject {
private final short @Nullable [] actual;
diff --git a/core/src/main/java/com/google/common/truth/SimpleSubjectBuilder.java b/core/src/main/java/com/google/common/truth/SimpleSubjectBuilder.java
index 80caa364c..7bae5be04 100644
--- a/core/src/main/java/com/google/common/truth/SimpleSubjectBuilder.java
+++ b/core/src/main/java/com/google/common/truth/SimpleSubjectBuilder.java
@@ -17,7 +17,8 @@
import static com.google.common.base.Preconditions.checkNotNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* In a fluent assertion chain, exposes the most common {@code that} method, which accepts a value
@@ -31,6 +32,7 @@
* You won't extend this type. When you write a custom subject, see our doc on extensions.
*/
+@NullMarked
public final class SimpleSubjectBuilder {
private final FailureMetadata metadata;
private final Subject.Factory subjectFactory;
diff --git a/core/src/main/java/com/google/common/truth/StackTraceCleaner.java b/core/src/main/java/com/google/common/truth/StackTraceCleaner.java
index 5efc43a0f..290aea0d1 100644
--- a/core/src/main/java/com/google/common/truth/StackTraceCleaner.java
+++ b/core/src/main/java/com/google/common/truth/StackTraceCleaner.java
@@ -27,11 +27,13 @@
import java.util.List;
import java.util.ListIterator;
import java.util.Set;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/** Utility that cleans stack traces to remove noise from common frameworks. */
@GwtIncompatible
@J2ktIncompatible
+@NullMarked
final class StackTraceCleaner {
static final String CLEANER_LINK = "https://goo.gl/aH3UyP";
diff --git a/core/src/main/java/com/google/common/truth/StandardSubjectBuilder.java b/core/src/main/java/com/google/common/truth/StandardSubjectBuilder.java
index 5413182f7..7a450367d 100644
--- a/core/src/main/java/com/google/common/truth/StandardSubjectBuilder.java
+++ b/core/src/main/java/com/google/common/truth/StandardSubjectBuilder.java
@@ -33,7 +33,8 @@
import java.util.stream.IntStream;
import java.util.stream.LongStream;
import java.util.stream.Stream;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* In a fluent assertion chain, an object with which you can do any of the following:
@@ -53,6 +54,7 @@
* You won't extend this type. When you write a custom subject, see our doc on extensions.
*/
+@NullMarked
public class StandardSubjectBuilder {
/**
* Returns a new instance that invokes the given {@code FailureStrategy} when a check fails. Most
diff --git a/core/src/main/java/com/google/common/truth/StreamSubject.java b/core/src/main/java/com/google/common/truth/StreamSubject.java
index a774cc994..2baed2ccd 100644
--- a/core/src/main/java/com/google/common/truth/StreamSubject.java
+++ b/core/src/main/java/com/google/common/truth/StreamSubject.java
@@ -25,7 +25,7 @@
import java.util.Comparator;
import java.util.List;
import java.util.stream.Stream;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/**
* Propositions for {@link Stream} subjects.
diff --git a/core/src/main/java/com/google/common/truth/StringSubject.java b/core/src/main/java/com/google/common/truth/StringSubject.java
index 597bcd9bb..8e71cc113 100644
--- a/core/src/main/java/com/google/common/truth/StringSubject.java
+++ b/core/src/main/java/com/google/common/truth/StringSubject.java
@@ -23,7 +23,8 @@
import com.google.common.annotations.GwtIncompatible;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* Propositions for string subjects.
@@ -31,6 +32,7 @@
* @author David Saff
* @author Christian Gruber (cgruber@israfil.net)
*/
+@NullMarked
public class StringSubject extends ComparableSubject {
private final @Nullable String actual;
diff --git a/core/src/main/java/com/google/common/truth/Subject.java b/core/src/main/java/com/google/common/truth/Subject.java
index bcb8e4d0d..d97f3791b 100644
--- a/core/src/main/java/com/google/common/truth/Subject.java
+++ b/core/src/main/java/com/google/common/truth/Subject.java
@@ -53,7 +53,8 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* An object that lets you perform checks on the value under test. For example, {@code Subject}
@@ -72,6 +73,7 @@
* @author David Saff
* @author Christian Gruber
*/
+@NullMarked
public class Subject {
/**
* In a fluent assertion chain, the argument to the common overload of {@link
diff --git a/core/src/main/java/com/google/common/truth/SubjectUtils.java b/core/src/main/java/com/google/common/truth/SubjectUtils.java
index 7668beb52..20fe72e15 100644
--- a/core/src/main/java/com/google/common/truth/SubjectUtils.java
+++ b/core/src/main/java/com/google/common/truth/SubjectUtils.java
@@ -36,7 +36,8 @@
import java.util.Collection;
import java.util.List;
import java.util.Map;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* Utility methods used in {@code Subject} implementors.
@@ -44,6 +45,7 @@
* @author Christian Gruber
* @author Jens Nyman
*/
+@NullMarked
final class SubjectUtils {
private SubjectUtils() {}
diff --git a/core/src/main/java/com/google/common/truth/TableSubject.java b/core/src/main/java/com/google/common/truth/TableSubject.java
index 9ab8f5c3e..21e9e1041 100644
--- a/core/src/main/java/com/google/common/truth/TableSubject.java
+++ b/core/src/main/java/com/google/common/truth/TableSubject.java
@@ -23,13 +23,15 @@
import com.google.common.collect.Table;
import com.google.common.collect.Table.Cell;
import com.google.common.collect.Tables;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* Propositions for {@link Table} subjects.
*
* @author Kurt Alfred Kluever
*/
+@NullMarked
public final class TableSubject extends Subject {
private final @Nullable Table, ?, ?> actual;
diff --git a/core/src/main/java/com/google/common/truth/ThrowableSubject.java b/core/src/main/java/com/google/common/truth/ThrowableSubject.java
index 08306bcb2..8566dbd70 100644
--- a/core/src/main/java/com/google/common/truth/ThrowableSubject.java
+++ b/core/src/main/java/com/google/common/truth/ThrowableSubject.java
@@ -17,7 +17,8 @@
import static com.google.common.base.Preconditions.checkNotNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* Propositions for {@link Throwable} subjects.
@@ -38,6 +39,7 @@
*
* @author Kurt Alfred Kluever
*/
+@NullMarked
public class ThrowableSubject extends Subject {
private final @Nullable Throwable actual;
diff --git a/core/src/main/java/com/google/common/truth/Truth.java b/core/src/main/java/com/google/common/truth/Truth.java
index 8b16b6c44..7ece562cf 100644
--- a/core/src/main/java/com/google/common/truth/Truth.java
+++ b/core/src/main/java/com/google/common/truth/Truth.java
@@ -32,7 +32,8 @@
import java.util.stream.IntStream;
import java.util.stream.LongStream;
import java.util.stream.Stream;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* The primary entry point for Truth, a library for fluent test
@@ -78,6 +79,7 @@
* @author David Saff
* @author Christian Gruber (cgruber@israfil.net)
*/
+@NullMarked
public final class Truth {
private Truth() {}
diff --git a/core/src/main/java/com/google/common/truth/Truth8.java b/core/src/main/java/com/google/common/truth/Truth8.java
index 23bd46764..e28ad49e0 100644
--- a/core/src/main/java/com/google/common/truth/Truth8.java
+++ b/core/src/main/java/com/google/common/truth/Truth8.java
@@ -25,7 +25,7 @@
import java.util.stream.IntStream;
import java.util.stream.LongStream;
import java.util.stream.Stream;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/**
* The obsolete entry point for assertions about Java 8 types.
diff --git a/core/src/main/java/com/google/common/truth/TruthFailureSubject.java b/core/src/main/java/com/google/common/truth/TruthFailureSubject.java
index eb9f93878..d4b6d6066 100644
--- a/core/src/main/java/com/google/common/truth/TruthFailureSubject.java
+++ b/core/src/main/java/com/google/common/truth/TruthFailureSubject.java
@@ -23,7 +23,8 @@
import static com.google.common.truth.Fact.simpleFact;
import com.google.common.collect.ImmutableList;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* Subject for {@link AssertionError} objects thrown by Truth. {@code TruthFailureSubject} contains
@@ -38,6 +39,7 @@
* This class accepts any {@code AssertionError} value, but it will throw an exception if a
* caller tries to access the facts of an error that wasn't produced by Truth.
*/
+@NullMarked
public final class TruthFailureSubject extends ThrowableSubject {
static final Fact HOW_TO_TEST_KEYS_WITHOUT_VALUES =
simpleFact(
diff --git a/core/src/main/java/com/google/common/truth/TruthJUnit.java b/core/src/main/java/com/google/common/truth/TruthJUnit.java
index 648d51236..94f47cb75 100644
--- a/core/src/main/java/com/google/common/truth/TruthJUnit.java
+++ b/core/src/main/java/com/google/common/truth/TruthJUnit.java
@@ -15,6 +15,7 @@
*/
package com.google.common.truth;
+import org.jspecify.annotations.NullMarked;
import org.junit.AssumptionViolatedException;
/**
@@ -39,6 +40,7 @@
* @author David Saff
* @author Christian Gruber (cgruber@israfil.net)
*/
+@NullMarked
@com.google.common.annotations.GwtIncompatible("JUnit4")
public final class TruthJUnit {
@SuppressWarnings("ConstantCaseForConstants") // Despite the "Builder" name, it's not mutable.
diff --git a/core/src/main/java/com/google/common/truth/UsedByReflection.java b/core/src/main/java/com/google/common/truth/UsedByReflection.java
index ce41dfd8d..50713931e 100644
--- a/core/src/main/java/com/google/common/truth/UsedByReflection.java
+++ b/core/src/main/java/com/google/common/truth/UsedByReflection.java
@@ -20,6 +20,8 @@
import static java.lang.annotation.ElementType.METHOD;
import java.lang.annotation.Target;
+import org.jspecify.annotations.NullMarked;
@Target({METHOD, FIELD, CONSTRUCTOR})
+@NullMarked
@interface UsedByReflection {}
diff --git a/core/src/main/java/com/google/common/truth/super/com/google/common/truth/Platform.java b/core/src/main/java/com/google/common/truth/super/com/google/common/truth/Platform.java
index 3bb24af2e..e50bd28ea 100644
--- a/core/src/main/java/com/google/common/truth/super/com/google/common/truth/Platform.java
+++ b/core/src/main/java/com/google/common/truth/super/com/google/common/truth/Platform.java
@@ -23,7 +23,8 @@
import jsinterop.annotations.JsMethod;
import jsinterop.annotations.JsProperty;
import jsinterop.annotations.JsType;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
@@ -32,6 +33,7 @@
*
* @author Christian Gruber (cgruber@google.com)
*/
+@NullMarked
final class Platform {
private Platform() {}
diff --git a/core/src/test/java/com/google/common/truth/DoubleSubjectTest.java b/core/src/test/java/com/google/common/truth/DoubleSubjectTest.java
index e6535584d..f65e2603c 100644
--- a/core/src/test/java/com/google/common/truth/DoubleSubjectTest.java
+++ b/core/src/test/java/com/google/common/truth/DoubleSubjectTest.java
@@ -23,7 +23,7 @@
import com.google.common.annotations.GwtIncompatible;
import com.google.common.truth.ExpectFailure.SimpleSubjectBuilderCallback;
import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
diff --git a/core/src/test/java/com/google/common/truth/FloatSubjectTest.java b/core/src/test/java/com/google/common/truth/FloatSubjectTest.java
index b528ab090..b14da38fc 100644
--- a/core/src/test/java/com/google/common/truth/FloatSubjectTest.java
+++ b/core/src/test/java/com/google/common/truth/FloatSubjectTest.java
@@ -23,7 +23,7 @@
import com.google.common.annotations.GwtIncompatible;
import com.google.common.truth.ExpectFailure.SimpleSubjectBuilderCallback;
import com.google.errorprone.annotations.CanIgnoreReturnValue;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
diff --git a/core/src/test/java/com/google/common/truth/SubjectTest.java b/core/src/test/java/com/google/common/truth/SubjectTest.java
index 9544f52f4..48b74b3dc 100644
--- a/core/src/test/java/com/google/common/truth/SubjectTest.java
+++ b/core/src/test/java/com/google/common/truth/SubjectTest.java
@@ -42,7 +42,7 @@
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Iterator;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
diff --git a/core/src/test/java/com/google/common/truth/TestCorrespondences.java b/core/src/test/java/com/google/common/truth/TestCorrespondences.java
index d2488d5ca..0c5c3af7c 100644
--- a/core/src/test/java/com/google/common/truth/TestCorrespondences.java
+++ b/core/src/test/java/com/google/common/truth/TestCorrespondences.java
@@ -23,7 +23,7 @@
import com.google.common.base.Splitter;
import com.google.common.primitives.Ints;
import java.util.List;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/** {@link Correspondence} implementations for testing purposes. */
final class TestCorrespondences {
diff --git a/core/src/test/java/com/google/common/truth/extension/EmployeeSubject.java b/core/src/test/java/com/google/common/truth/extension/EmployeeSubject.java
index 224bf6539..72c6a1778 100644
--- a/core/src/test/java/com/google/common/truth/extension/EmployeeSubject.java
+++ b/core/src/test/java/com/google/common/truth/extension/EmployeeSubject.java
@@ -23,7 +23,7 @@
import com.google.common.truth.LongSubject;
import com.google.common.truth.StringSubject;
import com.google.common.truth.Subject;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/**
* A Truth subject for {@link Employee}.
diff --git a/extensions/java8/pom.xml b/extensions/java8/pom.xml
index 951dc43a8..95fb6505a 100644
--- a/extensions/java8/pom.xml
+++ b/extensions/java8/pom.xml
@@ -20,8 +20,8 @@
truth