No longer using SuppressFBWarnings from findbugs/spotbugs in the published classes. Instead, there is a package private annotation in all places (since it seems that the package name does not matter)
diff --git a/build.gradle.kts b/build.gradle.kts
index 7dd284d..5c9905f 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -549,7 +549,6 @@
     compileOnly("org.slf4j:jcl-over-slf4j:${slf4jVersion}") // FIXME: This seems to be unused
     compileOnly("commons-logging:commons-logging:1.1.1") // FIXME: This seems to be unused
     compileOnly("org.zeroturnaround:javarebel-sdk:1.2.2")
-    compileOnly("com.google.code.findbugs:annotations:3.0.0")
     compileOnly("org.dom4j:dom4j:2.1.3")
 
     "jsp20CompileOnly"("javax.servlet.jsp:jsp-api:2.0")
@@ -567,6 +566,7 @@
     "jython25CompileOnly"(sourceSets["jython20"].output)
     "jython25CompileOnly"("org.python:jython:2.5.0")
 
+    testImplementation("com.google.code.findbugs:annotations:3.0.0")
     testImplementation("junit:junit:4.12")
     testImplementation("org.hamcrest:hamcrest-library:1.3")
     testImplementation("ch.qos.logback:logback-classic:1.1.2")
diff --git a/freemarker-core/src/main/java/freemarker/core/BuiltInsForNodes.java b/freemarker-core/src/main/java/freemarker/core/BuiltInsForNodes.java
index ff75b6e..cb863ba 100644
--- a/freemarker-core/src/main/java/freemarker/core/BuiltInsForNodes.java
+++ b/freemarker-core/src/main/java/freemarker/core/BuiltInsForNodes.java
@@ -21,7 +21,6 @@
 
 import java.util.List;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import freemarker.ext.dom._ExtDomApi;
 import freemarker.template.SimpleScalar;
 import freemarker.template.SimpleSequence;
diff --git a/freemarker-core/src/main/java/freemarker/core/Environment.java b/freemarker-core/src/main/java/freemarker/core/Environment.java
index 66f1214..a24c333 100644
--- a/freemarker-core/src/main/java/freemarker/core/Environment.java
+++ b/freemarker-core/src/main/java/freemarker/core/Environment.java
@@ -41,7 +41,6 @@
 import java.util.Set;
 import java.util.TimeZone;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import freemarker.cache.TemplateNameFormat;
 import freemarker.cache._CacheAPI;
 import freemarker.ext.beans.BeansWrapper;
diff --git a/freemarker-core/src/main/java/freemarker/core/ISOLikeTemplateDateFormat.java b/freemarker-core/src/main/java/freemarker/core/ISOLikeTemplateDateFormat.java
index aeff3c8..9eb50ab 100644
--- a/freemarker-core/src/main/java/freemarker/core/ISOLikeTemplateDateFormat.java
+++ b/freemarker-core/src/main/java/freemarker/core/ISOLikeTemplateDateFormat.java
@@ -22,7 +22,6 @@
 import java.util.Date;
 import java.util.TimeZone;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import freemarker.template.TemplateDateModel;
 import freemarker.template.TemplateModelException;
 import freemarker.template.utility.DateUtil;
diff --git a/freemarker-core/src/main/java/freemarker/core/SuppressFBWarnings.java b/freemarker-core/src/main/java/freemarker/core/SuppressFBWarnings.java
new file mode 100644
index 0000000..14b8042
--- /dev/null
+++ b/freemarker-core/src/main/java/freemarker/core/SuppressFBWarnings.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package freemarker.core;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.CLASS)
+@interface SuppressFBWarnings {
+    String[] value() default {};
+    String justification() default "";
+}
diff --git a/freemarker-core/src/main/java/freemarker/core/UnifiedCall.java b/freemarker-core/src/main/java/freemarker/core/UnifiedCall.java
index 5f2d0ba..ec877aa 100644
--- a/freemarker-core/src/main/java/freemarker/core/UnifiedCall.java
+++ b/freemarker-core/src/main/java/freemarker/core/UnifiedCall.java
@@ -27,7 +27,6 @@
 import java.util.List;
 import java.util.Map;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import freemarker.template.EmptyMap;
 import freemarker.template.TemplateDirectiveModel;
 import freemarker.template.TemplateException;
diff --git a/freemarker-core/src/main/java/freemarker/debug/impl/RmiDebuggedEnvironmentImpl.java b/freemarker-core/src/main/java/freemarker/debug/impl/RmiDebuggedEnvironmentImpl.java
index 8719fcb..3bbb3e3 100644
--- a/freemarker-core/src/main/java/freemarker/debug/impl/RmiDebuggedEnvironmentImpl.java
+++ b/freemarker-core/src/main/java/freemarker/debug/impl/RmiDebuggedEnvironmentImpl.java
@@ -32,7 +32,6 @@
 import java.util.List;
 import java.util.Set;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import freemarker.cache.CacheStorage;
 import freemarker.cache.SoftCacheStorage;
 import freemarker.core.Configurable;
diff --git a/freemarker-core/src/main/java/freemarker/debug/impl/RmiDebuggerService.java b/freemarker-core/src/main/java/freemarker/debug/impl/RmiDebuggerService.java
index d889af5..72ca88f 100644
--- a/freemarker-core/src/main/java/freemarker/debug/impl/RmiDebuggerService.java
+++ b/freemarker-core/src/main/java/freemarker/debug/impl/RmiDebuggerService.java
@@ -35,7 +35,6 @@
 import java.util.List;
 import java.util.Map;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import freemarker.core.DebugBreak;
 import freemarker.core.Environment;
 import freemarker.core.TemplateElement;
diff --git a/freemarker-core/src/main/java/freemarker/debug/impl/SuppressFBWarnings.java b/freemarker-core/src/main/java/freemarker/debug/impl/SuppressFBWarnings.java
new file mode 100644
index 0000000..3059b0c
--- /dev/null
+++ b/freemarker-core/src/main/java/freemarker/debug/impl/SuppressFBWarnings.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package freemarker.debug.impl;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.CLASS)
+@interface SuppressFBWarnings {
+    String[] value() default {};
+    String justification() default "";
+}
diff --git a/freemarker-core/src/main/java/freemarker/ext/beans/BeansModelCache.java b/freemarker-core/src/main/java/freemarker/ext/beans/BeansModelCache.java
index 99374b6..bc21c9b 100644
--- a/freemarker-core/src/main/java/freemarker/ext/beans/BeansModelCache.java
+++ b/freemarker-core/src/main/java/freemarker/ext/beans/BeansModelCache.java
@@ -24,7 +24,6 @@
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import freemarker.ext.util.ModelCache;
 import freemarker.ext.util.ModelFactory;
 import freemarker.template.TemplateModel;
diff --git a/freemarker-core/src/main/java/freemarker/ext/beans/OverloadedMethodsSubset.java b/freemarker-core/src/main/java/freemarker/ext/beans/OverloadedMethodsSubset.java
index ea7f091..10488f7 100644
--- a/freemarker-core/src/main/java/freemarker/ext/beans/OverloadedMethodsSubset.java
+++ b/freemarker-core/src/main/java/freemarker/ext/beans/OverloadedMethodsSubset.java
@@ -27,7 +27,6 @@
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import freemarker.template.TemplateModelException;
 import freemarker.template.utility.ClassUtil;
 import freemarker.template.utility.NullArgumentException;
diff --git a/freemarker-core/src/main/java/freemarker/ext/beans/SuppressFBWarnings.java b/freemarker-core/src/main/java/freemarker/ext/beans/SuppressFBWarnings.java
new file mode 100644
index 0000000..0174640
--- /dev/null
+++ b/freemarker-core/src/main/java/freemarker/ext/beans/SuppressFBWarnings.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package freemarker.ext.beans;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.CLASS)
+@interface SuppressFBWarnings {
+    String[] value() default {};
+    String justification() default "";
+}
diff --git a/freemarker-core/src/main/java/freemarker/template/DefaultEnumerationAdapter.java b/freemarker-core/src/main/java/freemarker/template/DefaultEnumerationAdapter.java
index fdd0bea..a456440 100644
--- a/freemarker-core/src/main/java/freemarker/template/DefaultEnumerationAdapter.java
+++ b/freemarker-core/src/main/java/freemarker/template/DefaultEnumerationAdapter.java
@@ -22,7 +22,6 @@
 import java.util.Enumeration;
 import java.util.Iterator;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import freemarker.ext.util.WrapperTemplateModel;
 import freemarker.template.utility.ObjectWrapperWithAPISupport;
 
diff --git a/freemarker-core/src/main/java/freemarker/template/DefaultIteratorAdapter.java b/freemarker-core/src/main/java/freemarker/template/DefaultIteratorAdapter.java
index 8f8d0c3..50305d0 100644
--- a/freemarker-core/src/main/java/freemarker/template/DefaultIteratorAdapter.java
+++ b/freemarker-core/src/main/java/freemarker/template/DefaultIteratorAdapter.java
@@ -22,7 +22,6 @@
 import java.io.Serializable;
 import java.util.Iterator;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import freemarker.ext.util.WrapperTemplateModel;
 import freemarker.template.utility.ObjectWrapperWithAPISupport;
 
diff --git a/freemarker-core/src/main/java/freemarker/template/ObjectWrapper.java b/freemarker-core/src/main/java/freemarker/template/ObjectWrapper.java
index 71eea17..1739a64 100644
--- a/freemarker-core/src/main/java/freemarker/template/ObjectWrapper.java
+++ b/freemarker-core/src/main/java/freemarker/template/ObjectWrapper.java
@@ -22,7 +22,6 @@
 import java.util.Map;
 import java.util.ResourceBundle;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import freemarker.ext.beans.BeansWrapper;
 import freemarker.ext.beans.BeansWrapperBuilder;
 import freemarker.ext.util.WrapperTemplateModel;
diff --git a/freemarker-core/src/main/java/freemarker/template/SuppressFBWarnings.java b/freemarker-core/src/main/java/freemarker/template/SuppressFBWarnings.java
new file mode 100644
index 0000000..b771c47
--- /dev/null
+++ b/freemarker-core/src/main/java/freemarker/template/SuppressFBWarnings.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package freemarker.template;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.CLASS)
+@interface SuppressFBWarnings {
+    String[] value() default {};
+    String justification() default "";
+}
diff --git a/freemarker-jsp20/src/main/java/freemarker/ext/servlet/FreemarkerServlet.java b/freemarker-jsp20/src/main/java/freemarker/ext/servlet/FreemarkerServlet.java
index b9164ab..40ca7a4 100644
--- a/freemarker-jsp20/src/main/java/freemarker/ext/servlet/FreemarkerServlet.java
+++ b/freemarker-jsp20/src/main/java/freemarker/ext/servlet/FreemarkerServlet.java
@@ -40,7 +40,6 @@
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import freemarker.cache.ClassTemplateLoader;
 import freemarker.cache.FileTemplateLoader;
 import freemarker.cache.MultiTemplateLoader;
diff --git a/freemarker-jsp20/src/main/java/freemarker/ext/servlet/SuppressFBWarnings.java b/freemarker-jsp20/src/main/java/freemarker/ext/servlet/SuppressFBWarnings.java
new file mode 100644
index 0000000..45e9652
--- /dev/null
+++ b/freemarker-jsp20/src/main/java/freemarker/ext/servlet/SuppressFBWarnings.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package freemarker.ext.servlet;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.CLASS)
+@interface SuppressFBWarnings {
+    String[] value() default {};
+    String justification() default "";
+}