diff --git a/pom.xml b/pom.xml
index ea4ca9c..64a3898 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,8 +51,9 @@
 
     <dependencies>
         <dependency>
-            <groupId>com.google.code.findbugs</groupId>
-            <artifactId>jsr305</artifactId>
+            <groupId>org.jetbrains</groupId>
+            <artifactId>annotations</artifactId>
+            <version>16.0.2</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/src/main/java/org/apache/sling/caconfig/ConfigurationBuilder.java b/src/main/java/org/apache/sling/caconfig/ConfigurationBuilder.java
index be06432..b93ed82 100644
--- a/src/main/java/org/apache/sling/caconfig/ConfigurationBuilder.java
+++ b/src/main/java/org/apache/sling/caconfig/ConfigurationBuilder.java
@@ -20,9 +20,8 @@
 
 import java.util.Collection;
 
-import javax.annotation.Nonnull;
-
 import org.apache.sling.api.resource.ValueMap;
+import org.jetbrains.annotations.NotNull;
 import org.osgi.annotation.versioning.ProviderType;
 
 /**
@@ -37,7 +36,7 @@
      * @param configName Relative path
      * @return Configuration builder
      */
-    @Nonnull ConfigurationBuilder name(@Nonnull String configName);
+    @NotNull ConfigurationBuilder name(@NotNull String configName);
 
     /**
      * Get configuration as singleton resource and its properties mapped to the given annotation class.
@@ -47,7 +46,7 @@
      * @param <T> Annotation class type
      * @return Configuration object. Contains only the default values if content resource or configuration cannot be found.
      */
-    @Nonnull <T> T as(@Nonnull Class<T> clazz);
+    @NotNull <T> T as(@NotNull Class<T> clazz);
 
     /**
      * Get collection of configuration resources with their properties mapped to the given annotation class.
@@ -57,19 +56,19 @@
      * @param <T> Annotation class type
      * @return Collection of configuration objects. Is empty if content resource or configuration cannot be found.
      */
-    @Nonnull <T> Collection<T> asCollection(@Nonnull Class<T> clazz);
+    @NotNull <T> Collection<T> asCollection(@NotNull Class<T> clazz);
 
     /**
      * Get configuration as singleton resource and return its properties as value map.
      * @return Value map. Map is empty if content resource or configuration cannot be found.
      */
-    @Nonnull ValueMap asValueMap();
+    @NotNull ValueMap asValueMap();
 
     /**
      * Get collection of configuration resources with their properties mapped to the given annotation class.
      * @return Collection of value map. Is empty if content resource or configuration cannot be found.
      */
-    @Nonnull Collection<ValueMap> asValueMapCollection();
+    @NotNull Collection<ValueMap> asValueMapCollection();
 
     /**
      * Get configuration as singleton configuration resource and adapt it to the given class.
@@ -77,7 +76,7 @@
      * @param <T> Annotation class type
      * @return Object instance or null if content resource or configuration cannot be found or if the adaption was not possible.
      */
-    <T> T asAdaptable(@Nonnull Class<T> clazz);
+    <T> T asAdaptable(@NotNull Class<T> clazz);
 
     /**
      * Get collection of configuration resources and adapt them to the given class.
@@ -85,6 +84,6 @@
      * @param <T> Annotation class type
      * @return Collection of object instances. Is empty if content resource or configuration cannot be found or if the adaption was not possible.
      */
-    @Nonnull <T> Collection<T> asAdaptableCollection(@Nonnull Class<T> clazz);
+    @NotNull <T> Collection<T> asAdaptableCollection(@NotNull Class<T> clazz);
 
 }
diff --git a/src/main/java/org/apache/sling/caconfig/ConfigurationResolver.java b/src/main/java/org/apache/sling/caconfig/ConfigurationResolver.java
index 885daf4..6ffd444 100644
--- a/src/main/java/org/apache/sling/caconfig/ConfigurationResolver.java
+++ b/src/main/java/org/apache/sling/caconfig/ConfigurationResolver.java
@@ -18,9 +18,8 @@
  */
 package org.apache.sling.caconfig;
 
-import javax.annotation.Nonnull;
-
 import org.apache.sling.api.resource.Resource;
+import org.jetbrains.annotations.NotNull;
 import org.osgi.annotation.versioning.ProviderType;
 
 /**
@@ -41,6 +40,6 @@
      * @param resource Context resource
      * @return Configuration builder
      */
-    @Nonnull ConfigurationBuilder get(@Nonnull Resource resource);
+    @NotNull ConfigurationBuilder get(@NotNull Resource resource);
 
 }
diff --git a/src/main/java/org/apache/sling/caconfig/package-info.java b/src/main/java/org/apache/sling/caconfig/package-info.java
index 5a7580a..92feabe 100644
--- a/src/main/java/org/apache/sling/caconfig/package-info.java
+++ b/src/main/java/org/apache/sling/caconfig/package-info.java
@@ -19,5 +19,5 @@
 /**
  * API for accessing context-aware configuration.
  */
-@org.osgi.annotation.versioning.Version("1.0.0")
+@org.osgi.annotation.versioning.Version("1.0.1")
 package org.apache.sling.caconfig;
diff --git a/src/main/java/org/apache/sling/caconfig/resource/ConfigurationResourceResolver.java b/src/main/java/org/apache/sling/caconfig/resource/ConfigurationResourceResolver.java
index 12f13c3..65b7b14 100644
--- a/src/main/java/org/apache/sling/caconfig/resource/ConfigurationResourceResolver.java
+++ b/src/main/java/org/apache/sling/caconfig/resource/ConfigurationResourceResolver.java
@@ -20,10 +20,9 @@
 
 import java.util.Collection;
 
-import javax.annotation.CheckForNull;
-import javax.annotation.Nonnull;
-
 import org.apache.sling.api.resource.Resource;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.osgi.annotation.versioning.ProviderType;
 
 /**
@@ -45,7 +44,7 @@
      * @param configName Configuration name or relative path.
      * @return Configuration resource or {@code null}.
      */
-    @CheckForNull Resource getResource(@Nonnull Resource resource, @Nonnull String bucketName, @Nonnull String configName);
+    @Nullable Resource getResource(@NotNull Resource resource, @NotNull String bucketName, @NotNull String configName);
 
     /**
      * Get a collection of context-aware configuration resources defined by the given configuration name.
@@ -56,14 +55,14 @@
      * @param configName Configuration name or relative path.
      * @return Collection of configuration resources, the collection might be empty.
      */
-    @Nonnull Collection<Resource> getResourceCollection(@Nonnull Resource resource, @Nonnull String bucketName, @Nonnull String configName);
+    @NotNull Collection<Resource> getResourceCollection(@NotNull Resource resource, @NotNull String bucketName, @NotNull String configName);
 
     /**
      * Get the inner-most context path (deepest path) returned by {@link #getAllContextPaths(Resource)}.
      * @param resource Context resource to fetch configuration for
      * @return Context path or null
      */
-    String getContextPath(@Nonnull Resource resource);
+    String getContextPath(@NotNull Resource resource);
 
     /**
      * Get all context paths for which context-aware configurations could be defined.
@@ -72,6 +71,6 @@
      * @param resource Context resource to fetch configuration for
      * @return List of context paths
      */
-    @Nonnull Collection<String> getAllContextPaths(@Nonnull Resource resource);
+    @NotNull Collection<String> getAllContextPaths(@NotNull Resource resource);
 
 }
diff --git a/src/main/java/org/apache/sling/caconfig/resource/package-info.java b/src/main/java/org/apache/sling/caconfig/resource/package-info.java
index ef04a94..6577b50 100644
--- a/src/main/java/org/apache/sling/caconfig/resource/package-info.java
+++ b/src/main/java/org/apache/sling/caconfig/resource/package-info.java
@@ -20,5 +20,5 @@
  * API for accessing context-aware configuration resources.
  * This is a low-level API.
  */
-@org.osgi.annotation.versioning.Version("1.0.0")
+@org.osgi.annotation.versioning.Version("1.0.1")
 package org.apache.sling.caconfig.resource;
