diff --git a/pom.xml b/pom.xml
index 536c05e2..eaa6076d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -85,9 +85,9 @@
1.2.2
- org.checkerframework
- checker-qual
- 3.48.3
+ org.jspecify
+ jspecify
+ 1.0.0
diff --git a/src/main/java/com/google/testing/compile/CompilationSubject.java b/src/main/java/com/google/testing/compile/CompilationSubject.java
index 2fd3f393..22b093ba 100644
--- a/src/main/java/com/google/testing/compile/CompilationSubject.java
+++ b/src/main/java/com/google/testing/compile/CompilationSubject.java
@@ -57,7 +57,7 @@
import javax.tools.JavaFileManager.Location;
import javax.tools.JavaFileObject;
import javax.tools.StandardLocation;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/** A {@link Truth} subject for a {@link Compilation}. */
public final class CompilationSubject extends Subject {
diff --git a/src/main/java/com/google/testing/compile/CompilationSubjectFactory.java b/src/main/java/com/google/testing/compile/CompilationSubjectFactory.java
index 75eda87a..b2ff5ff4 100644
--- a/src/main/java/com/google/testing/compile/CompilationSubjectFactory.java
+++ b/src/main/java/com/google/testing/compile/CompilationSubjectFactory.java
@@ -18,7 +18,7 @@
import com.google.common.truth.FailureMetadata;
import com.google.common.truth.Subject;
import com.google.common.truth.Truth;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/** A {@link Truth} subject factory for a {@link Compilation}. */
final class CompilationSubjectFactory implements Subject.Factory {
diff --git a/src/main/java/com/google/testing/compile/Compiler.java b/src/main/java/com/google/testing/compile/Compiler.java
index f77d7e56..827f2912 100644
--- a/src/main/java/com/google/testing/compile/Compiler.java
+++ b/src/main/java/com/google/testing/compile/Compiler.java
@@ -45,7 +45,7 @@
import javax.tools.JavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.StandardLocation;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/** An object that can {@link #compile} Java source files. */
@AutoValue
diff --git a/src/main/java/com/google/testing/compile/InMemoryJavaFileManager.java b/src/main/java/com/google/testing/compile/InMemoryJavaFileManager.java
index d7f540a2..b2641b3a 100644
--- a/src/main/java/com/google/testing/compile/InMemoryJavaFileManager.java
+++ b/src/main/java/com/google/testing/compile/InMemoryJavaFileManager.java
@@ -43,7 +43,7 @@
import javax.tools.SimpleJavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.StandardLocation;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/**
* A file manager implementation that stores all output in memory.
diff --git a/src/main/java/com/google/testing/compile/JavaFileObjectSubject.java b/src/main/java/com/google/testing/compile/JavaFileObjectSubject.java
index 29211b6f..80df4894 100644
--- a/src/main/java/com/google/testing/compile/JavaFileObjectSubject.java
+++ b/src/main/java/com/google/testing/compile/JavaFileObjectSubject.java
@@ -36,7 +36,7 @@
import java.nio.charset.Charset;
import java.util.function.BiFunction;
import javax.tools.JavaFileObject;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/** Assertions about {@link JavaFileObject}s. */
public final class JavaFileObjectSubject extends Subject {
diff --git a/src/main/java/com/google/testing/compile/JavaFileObjectSubjectFactory.java b/src/main/java/com/google/testing/compile/JavaFileObjectSubjectFactory.java
index daf7fc47..174c29af 100644
--- a/src/main/java/com/google/testing/compile/JavaFileObjectSubjectFactory.java
+++ b/src/main/java/com/google/testing/compile/JavaFileObjectSubjectFactory.java
@@ -18,7 +18,7 @@
import com.google.common.truth.FailureMetadata;
import com.google.common.truth.Subject;
import javax.tools.JavaFileObject;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/** A factory for {@link JavaFileObjectSubject}s. */
final class JavaFileObjectSubjectFactory
diff --git a/src/main/java/com/google/testing/compile/JavaSourceSubjectFactory.java b/src/main/java/com/google/testing/compile/JavaSourceSubjectFactory.java
index 9e807ab5..ba477913 100644
--- a/src/main/java/com/google/testing/compile/JavaSourceSubjectFactory.java
+++ b/src/main/java/com/google/testing/compile/JavaSourceSubjectFactory.java
@@ -18,7 +18,7 @@
import com.google.common.truth.FailureMetadata;
import com.google.common.truth.Subject;
import javax.tools.JavaFileObject;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/**
* A Truth {@link Subject.Factory} similar to
diff --git a/src/main/java/com/google/testing/compile/JavaSourcesSubject.java b/src/main/java/com/google/testing/compile/JavaSourcesSubject.java
index a088c411..1687c2e8 100644
--- a/src/main/java/com/google/testing/compile/JavaSourcesSubject.java
+++ b/src/main/java/com/google/testing/compile/JavaSourcesSubject.java
@@ -55,7 +55,7 @@
import javax.tools.Diagnostic.Kind;
import javax.tools.JavaFileManager;
import javax.tools.JavaFileObject;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/**
* A Truth {@link Subject} that evaluates the result
diff --git a/src/main/java/com/google/testing/compile/JavaSourcesSubjectFactory.java b/src/main/java/com/google/testing/compile/JavaSourcesSubjectFactory.java
index 89cb800b..517e21e1 100644
--- a/src/main/java/com/google/testing/compile/JavaSourcesSubjectFactory.java
+++ b/src/main/java/com/google/testing/compile/JavaSourcesSubjectFactory.java
@@ -18,7 +18,7 @@
import com.google.common.truth.FailureMetadata;
import com.google.common.truth.Subject;
import javax.tools.JavaFileObject;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/**
* A Truth {@link Subject.Factory} for creating
diff --git a/src/main/java/com/google/testing/compile/MoreTrees.java b/src/main/java/com/google/testing/compile/MoreTrees.java
index 5a10e044..9c4fd1d6 100644
--- a/src/main/java/com/google/testing/compile/MoreTrees.java
+++ b/src/main/java/com/google/testing/compile/MoreTrees.java
@@ -35,7 +35,7 @@
import com.sun.source.util.TreePathScanner;
import java.util.Arrays;
import java.util.Optional;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/**
* A class containing methods which are useful for gaining access to {@code Tree} instances from
diff --git a/src/main/java/com/google/testing/compile/TreeDiffer.java b/src/main/java/com/google/testing/compile/TreeDiffer.java
index 87344c22..9df5585d 100644
--- a/src/main/java/com/google/testing/compile/TreeDiffer.java
+++ b/src/main/java/com/google/testing/compile/TreeDiffer.java
@@ -54,7 +54,7 @@
import javax.lang.model.element.Name;
import javax.lang.model.type.TypeMirror;
import javax.tools.JavaFileObject;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/**
* A class for determining how two compilation {@code Tree}s differ from each other.
diff --git a/src/main/java/com/google/testing/compile/TreeDifference.java b/src/main/java/com/google/testing/compile/TreeDifference.java
index 1170bbfd..f62481a1 100644
--- a/src/main/java/com/google/testing/compile/TreeDifference.java
+++ b/src/main/java/com/google/testing/compile/TreeDifference.java
@@ -22,7 +22,7 @@
import com.google.errorprone.annotations.CanIgnoreReturnValue;
import com.sun.source.tree.Tree;
import com.sun.source.util.TreePath;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/**
* A data structure describing the set of syntactic differences between two {@link Tree}s.
diff --git a/src/main/java/com/google/testing/compile/TypeEnumerator.java b/src/main/java/com/google/testing/compile/TypeEnumerator.java
index a385ac75..ac65357d 100644
--- a/src/main/java/com/google/testing/compile/TypeEnumerator.java
+++ b/src/main/java/com/google/testing/compile/TypeEnumerator.java
@@ -29,7 +29,7 @@
import com.sun.source.tree.Tree;
import com.sun.source.util.TreeScanner;
import java.util.Set;
-import org.checkerframework.checker.nullness.qual.Nullable;
+import org.jspecify.annotations.Nullable;
/**
* Provides information about the set of types that are declared by a {@code CompilationUnitTree}.
diff --git a/src/main/java/com/google/testing/compile/package-info.java b/src/main/java/com/google/testing/compile/package-info.java
index 789c8900..24015b5a 100644
--- a/src/main/java/com/google/testing/compile/package-info.java
+++ b/src/main/java/com/google/testing/compile/package-info.java
@@ -83,6 +83,8 @@
*
*/
@CheckReturnValue
+@NullMarked
package com.google.testing.compile;
import com.google.errorprone.annotations.CheckReturnValue;
+import org.jspecify.annotations.NullMarked;