diff --git a/api/pom.xml b/api/pom.xml
index b7b1bc6..d33f2ed 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -67,6 +67,9 @@
                 <plugin>
                     <artifactId>maven-javadoc-plugin</artifactId>
                     <configuration>
+                        <failOnWarnings>true</failOnWarnings>
+                        <doclint>all,-missing</doclint>
+                        <quiet>true</quiet>
                         <nodeprecated>false</nodeprecated>
                         <notimestamp>true</notimestamp>
                         <nosince>true</nosince>
@@ -173,6 +176,7 @@
                 <configuration>
                     <compilerArgs>
                         <arg>-Xlint:all</arg>
+                        <arg>-Xdoclint:all,-missing</arg>
                     </compilerArgs>
                     <showDeprecation>true</showDeprecation>
                     <showWarnings>true</showWarnings>
diff --git a/api/src/main/java/jakarta/xml/bind/Binder.java b/api/src/main/java/jakarta/xml/bind/Binder.java
index 372a6aa..acf2a17 100644
--- a/api/src/main/java/jakarta/xml/bind/Binder.java
+++ b/api/src/main/java/jakarta/xml/bind/Binder.java
@@ -49,7 +49,6 @@
  * A Binder instance is created using the factory method
  * {@link JAXBContext#createBinder()} or {@link JAXBContext#createBinder(Class)}.
  *
- * <p>
  * @param <XmlNode> the template parameter, <code>XmlNode</code>, is the
  * root interface/class for the XML infoset preserving representation.
  * A Binder implementation is required to minimally support
diff --git a/api/src/main/java/jakarta/xml/bind/ContextFinder.java b/api/src/main/java/jakarta/xml/bind/ContextFinder.java
index 6435cd1..727bbb1 100644
--- a/api/src/main/java/jakarta/xml/bind/ContextFinder.java
+++ b/api/src/main/java/jakarta/xml/bind/ContextFinder.java
@@ -367,43 +367,6 @@
         return value;
     }
 
-    private static Properties loadJAXBProperties(URL url) throws JAXBException {
-
-        try {
-            Properties props;
-            logger.log(Level.FINE, "loading props from {0}", url);
-            props = new Properties();
-            InputStream is = url.openStream();
-            props.load(is);
-            is.close();
-            return props;
-        } catch (IOException ioe) {
-            logger.log(Level.FINE, "Unable to load " + url.toString(), ioe);
-            throw new JAXBException(ioe.toString(), ioe);
-        }
-    }
-
-    /**
-     * If run on JPMS package containing resource must be open unconditionally.
-     *
-     * @param classLoader classloader to load resource with
-     * @param resourceName qualified name of the resource
-     * @return resource url if found
-     */
-    private static URL getResourceUrl(ClassLoader classLoader, String resourceName) {
-        URL url;
-        if (classLoader == null)
-            url = ClassLoader.getSystemResource(resourceName);
-        else
-            url = classLoader.getResource(resourceName);
-        return url;
-    }
-
-    private static URL getResourceUrl(Class<?> clazz, String resourceName) {
-        return clazz.getResource(resourceName);
-    }
-
-
     /**
      * Search the given ClassLoader for an instance of the specified class and
      * return a string representation of the URL that points to the resource.
diff --git a/api/src/main/java/jakarta/xml/bind/DatatypeConverterImpl.java b/api/src/main/java/jakarta/xml/bind/DatatypeConverterImpl.java
index c394800..f183823 100644
--- a/api/src/main/java/jakarta/xml/bind/DatatypeConverterImpl.java
+++ b/api/src/main/java/jakarta/xml/bind/DatatypeConverterImpl.java
@@ -75,7 +75,7 @@
     }
 
     /**
-     * Faster but less robust String->int conversion.
+     * Faster but less robust {@code String->int} conversion.
      *
      * Note that:
      * <ol>
diff --git a/api/src/main/java/jakarta/xml/bind/JAXB.java b/api/src/main/java/jakarta/xml/bind/JAXB.java
index b3606fc..7610cba 100644
--- a/api/src/main/java/jakarta/xml/bind/JAXB.java
+++ b/api/src/main/java/jakarta/xml/bind/JAXB.java
@@ -289,7 +289,7 @@
      *      the body. If this object has {@link XmlRootElement}
      *      on its class definition, that will be used as the root tag name
      *      and the given object will provide the body. Otherwise,
-     *      the root tag name is {@link java.beans.Introspector#decapitalize(String) infered} from
+     *      the root tag name is inferred from
      *      {@link Class#getSimpleName() the short class name}.
      *      This parameter must not be null.
      *
@@ -313,7 +313,7 @@
      *      the body. If this object has {@link XmlRootElement}
      *      on its class definition, that will be used as the root tag name
      *      and the given object will provide the body. Otherwise,
-     *      the root tag name is {@link java.beans.Introspector#decapitalize(String) infered} from
+     *      the root tag name is inferred from
      *      {@link Class#getSimpleName() the short class name}.
      *      This parameter must not be null.
      *
@@ -340,7 +340,7 @@
      *      the body. If this object has {@link XmlRootElement}
      *      on its class definition, that will be used as the root tag name
      *      and the given object will provide the body. Otherwise,
-     *      the root tag name is {@link java.beans.Introspector#decapitalize(String) infered} from
+     *      the root tag name is inferred from
      *      {@link Class#getSimpleName() the short class name}.
      *      This parameter must not be null.
      *
@@ -364,7 +364,7 @@
      *      the body. If this object has {@link XmlRootElement}
      *      on its class definition, that will be used as the root tag name
      *      and the given object will provide the body. Otherwise,
-     *      the root tag name is {@link java.beans.Introspector#decapitalize(String) infered} from
+     *      the root tag name is inferred from
      *      {@link Class#getSimpleName() the short class name}.
      *      This parameter must not be null.
      *
@@ -389,7 +389,7 @@
      *      the body. If this object has {@link XmlRootElement}
      *      on its class definition, that will be used as the root tag name
      *      and the given object will provide the body. Otherwise,
-     *      the root tag name is {@link java.beans.Introspector#decapitalize(String) infered} from
+     *      the root tag name is inferred from
      *      {@link Class#getSimpleName() the short class name}.
      *      This parameter must not be null.
      *
@@ -413,7 +413,7 @@
      *      the body. If this object has {@link XmlRootElement}
      *      on its class definition, that will be used as the root tag name
      *      and the given object will provide the body. Otherwise,
-     *      the root tag name is {@link java.beans.Introspector#decapitalize(String) infered} from
+     *      the root tag name is inferred from
      *      {@link Class#getSimpleName() the short class name}.
      *      This parameter must not be null.
      *
@@ -437,7 +437,7 @@
      *      the body. If this object has {@link XmlRootElement}
      *      on its class definition, that will be used as the root tag name
      *      and the given object will provide the body. Otherwise,
-     *      the root tag name is {@link java.beans.Introspector#decapitalize(String) infered} from
+     *      the root tag name is inferred from
      *      {@link Class#getSimpleName() the short class name}.
      *      This parameter must not be null.
      *
@@ -477,14 +477,16 @@
      *      the body. If this object has {@link XmlRootElement}
      *      on its class definition, that will be used as the root tag name
      *      and the given object will provide the body. Otherwise,
-     *      the root tag name is {@link java.beans.Introspector#decapitalize(String) infered} from
+     *      the root tag name is inferred from
      *      {@link Class#getSimpleName() the short class name}.
      *      This parameter must not be null.
      *
      * @param xml
      *      Represents the receiver of XML. Objects of the following types are allowed.
      *
-     *      <table><tr>
+     *      <table>
+     *          <caption>Allowed Objects</caption>
+     *      <tr>
      *          <th>Type</th>
      *          <th>Operation</th>
      *      </tr><tr>
@@ -552,14 +554,14 @@
         // XXX - behaviour of this method must be same as of Introspector.decapitalize
         // which is not used to avoid dependency on java.desktop
         String simpleName = clazz.getSimpleName();
-        if (simpleName == null || simpleName.isEmpty()) {
+        if (simpleName.isEmpty()) {
             return simpleName;
         }
         if (simpleName.length() > 1 && Character.isUpperCase(simpleName.charAt(1))
                 && Character.isUpperCase(simpleName.charAt(0))) {
             return simpleName;
         }
-        char chars[] = simpleName.toCharArray();
+        char[] chars = simpleName.toCharArray();
         chars[0] = Character.toLowerCase(chars[0]);
         return new String(chars);
     }
diff --git a/api/src/main/java/jakarta/xml/bind/JAXBPermission.java b/api/src/main/java/jakarta/xml/bind/JAXBPermission.java
index 7f9c641..170a896 100644
--- a/api/src/main/java/jakarta/xml/bind/JAXBPermission.java
+++ b/api/src/main/java/jakarta/xml/bind/JAXBPermission.java
@@ -48,7 +48,7 @@
  *     Malicious code can set {@link DatatypeConverterInterface}, which has
  *     VM-wide singleton semantics,  before a genuine Jakarta XML Binding implementation sets one.
  *     This allows malicious code to gain access to objects that it may otherwise
- *     not have access to, such as {@link java.awt.Frame#getFrames()} that belongs to
+ *     not have access to, such as {@code java.awt.Frame#getFrames()} that belongs to
  *     another application running in the same JVM.
  *   </td>
  * </tr>
diff --git a/api/src/main/java/jakarta/xml/bind/annotation/XmlInlineBinaryData.java b/api/src/main/java/jakarta/xml/bind/annotation/XmlInlineBinaryData.java
index 2d59db6..2b48235 100644
--- a/api/src/main/java/jakarta/xml/bind/annotation/XmlInlineBinaryData.java
+++ b/api/src/main/java/jakarta/xml/bind/annotation/XmlInlineBinaryData.java
@@ -27,7 +27,7 @@
  *
  * <p>
  * When XOP encoding is enabled as described in {@link AttachmentMarshaller#isXOPPackage()},
- * this annotation disables datatypes such as {@link java.awt.Image} or {@link Source}
+ * this annotation disables datatypes such as {@code java.awt.Image} or {@link Source}
  * or {@code byte[]} that are bound to base64-encoded binary from being considered for
  * XOP encoding. If a Jakarta XML Binding property is annotated with this annotation or if
  * the Jakarta XML Binding property's base type is annotated with this annotation, 
diff --git a/api/src/main/java/jakarta/xml/bind/annotation/XmlMimeType.java b/api/src/main/java/jakarta/xml/bind/annotation/XmlMimeType.java
index e57835e..7f52629 100644
--- a/api/src/main/java/jakarta/xml/bind/annotation/XmlMimeType.java
+++ b/api/src/main/java/jakarta/xml/bind/annotation/XmlMimeType.java
@@ -24,7 +24,7 @@
  *
  * <p>
  * This annotation is used in conjunction with datatypes such as
- * {@link java.awt.Image} or {@link Source} that are bound to base64-encoded binary in XML.
+ * {@code java.awt.Image} or {@link Source} that are bound to base64-encoded binary in XML.
  *
  * <p>
  * If a property that has this annotation has a sibling property bound to
diff --git a/api/src/main/java/jakarta/xml/bind/annotation/adapters/XmlJavaTypeAdapter.java b/api/src/main/java/jakarta/xml/bind/annotation/adapters/XmlJavaTypeAdapter.java
index ade56a4..50a3e08 100644
--- a/api/src/main/java/jakarta/xml/bind/annotation/adapters/XmlJavaTypeAdapter.java
+++ b/api/src/main/java/jakarta/xml/bind/annotation/adapters/XmlJavaTypeAdapter.java
@@ -81,6 +81,7 @@
      * Points to the class that converts a value type to a bound type or vice versa.
      * See {@link XmlAdapter} for more details.
      */
+    @SuppressWarnings({"rawtypes"})
     Class<? extends XmlAdapter> value();
 
     /**
diff --git a/api/src/main/java/jakarta/xml/bind/annotation/package-info.java b/api/src/main/java/jakarta/xml/bind/annotation/package-info.java
index a016cff..903f65d 100644
--- a/api/src/main/java/jakarta/xml/bind/annotation/package-info.java
+++ b/api/src/main/java/jakarta/xml/bind/annotation/package-info.java
@@ -16,7 +16,6 @@
  * <h2>Package Specification</h2>
  * <p>The following table shows the Jakarta XML Binding mapping annotations
  * that can be associated with each program element. </p>
- * <p>
  * <table class="striped">
  *   <caption>Annotations for customizing Java program elements to XML Schema mapping</caption>
  *   <thead>
@@ -143,7 +142,6 @@
  * <b>Namespace prefixes</b>
  * <p>The following namespace prefixes are used in the XML Schema
  * fragments in this package.
- * <p>
  * <table class="striped">
  *   <caption>XML Schema fragments namespace prefixes</caption>
  *   <thead>
diff --git a/api/src/main/java/jakarta/xml/bind/attachment/package-info.java b/api/src/main/java/jakarta/xml/bind/attachment/package-info.java
index c163a2e..e570c53 100644
--- a/api/src/main/java/jakarta/xml/bind/attachment/package-info.java
+++ b/api/src/main/java/jakarta/xml/bind/attachment/package-info.java
@@ -13,7 +13,6 @@
  * enables the interpretation and creation of optimized binary data
  * within an MIME-based package format.
  * <p>
- * <p>
  * Soap MTOM[1], XOP([2][3]) and WS-I AP[4] standardize approaches to
  * optimized transmission of binary datatypes as an attachment.
  * To optimally support these standards within a message passing
@@ -23,13 +22,10 @@
  * References in this document to JAXB refer to the Jakarta XML Binding unless otherwise noted.
  *
  * <h2>Package Specification</h2>
- * <p>
  * <ul>
  * <li><a href="https://projects.eclipse.org/projects/ee4j.jaxb">Jakarta XML Binding Specification project</a>
  * </ul>
- * <p>
  * <h2>Related Standards</h2>
- * <p>
  * <ul>
  * <li><a href="http://www.w3.org/TR/2004/WD-soap12-mtom-20040608/">[1]SOAP Message Transmission Optimization Mechanism</a> </li>
  * <li><a href="http://www.w3.org/TR/2005/REC-xop10-20050125/">[2]XML-binary Optimized Packaging</a></li>
diff --git a/api/src/main/java/jakarta/xml/bind/package-info.java b/api/src/main/java/jakarta/xml/bind/package-info.java
index 36480ae..60ba012 100644
--- a/api/src/main/java/jakarta/xml/bind/package-info.java
+++ b/api/src/main/java/jakarta/xml/bind/package-info.java
@@ -12,21 +12,16 @@
  * Provides a runtime binding framework for client applications including
  * unmarshalling, marshalling, and validation capabilities.
  * <p>
- * <p>
  * <code>JAXBContext</code> is the client-entry point to the runtime binding
  * framework.
  * <p>
- * <p>
  * References in this document to JAXB refer to the Jakarta XML Binding unless otherwise noted.
  *
  * <h2>Package Specification</h2>
- * <p>
  * <ul>
  * <li><a href="https://projects.eclipse.org/projects/ee4j.jaxb">Jakarta XML Binding Specification project</a>
  * </ul>
- * <p>
  * <h2>Related Documentation</h2>
- * <p>
  * For overviews, tutorials, examples, guides, and tool documentation,
  * please see:
  * <ul>
diff --git a/etc/spotbugs-exclude.xml b/etc/spotbugs-exclude.xml
index 5ce58f2..7dfe711 100644
--- a/etc/spotbugs-exclude.xml
+++ b/etc/spotbugs-exclude.xml
@@ -13,6 +13,35 @@
 <FindBugsFilter>
 
     <!--
+    TODO: reevaluate for MR
+    As designed, impossible to change, maybe with MR.
+    -->
+    <Match>
+        <Bug pattern="EI_EXPOSE_REP"/>
+        <Or>
+            <Class name="~.*\.*Exception"/>
+            <Class name="~.*\.W3CDomHandler"/>
+            <Class name="~.*\.ValidationEventImpl"/>
+            <Class name="~.*\.ValidationEventLocatorImpl"/>
+        </Or>
+    </Match>
+
+    <!--
+    TODO: reevaluate for MR
+    As designed, impossible to change, maybe with MR.
+    -->
+    <Match>
+        <Bug pattern="EI_EXPOSE_REP2"/>
+        <Or>
+            <Class name="~.*\.*Exception"/>
+            <Class name="~.*\.W3CDomHandler"/>
+            <Class name="~.*\.ValidationEventImpl"/>
+            <Class name="~.*\.ValidationEventLocatorImpl"/>
+            <Class name="jakarta.xml.bind.util.JAXBSource"/>
+        </Or>
+    </Match>
+
+    <!--
     As designed.
     -->
     <Match>
@@ -29,13 +58,4 @@
         <Bug pattern="PZLA_PREFER_ZERO_LENGTH_ARRAYS"/>
     </Match>
 
-    <!--
-      https://github.com/eclipse-ee4j/jaxb-api/issues/78
-    -->
-    <Match>
-        <Class name="jakarta.xml.bind.ModuleUtil"/>
-        <Bug pattern="DM_STRING_TOSTRING"/>
-    </Match>
-
-
 </FindBugsFilter>
diff --git a/pom.xml b/pom.xml
index 75f1e8d..14171a4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -76,12 +76,12 @@
         <copyright.update>false</copyright.update>
         <spotbugs.skip>false</spotbugs.skip>
         <spotbugs.threshold>Low</spotbugs.threshold>
-        <spotbugs.version>4.3.0</spotbugs.version>
+        <spotbugs.version>4.5.0.0</spotbugs.version>
 
         <maven.compiler.release>11</maven.compiler.release>
 
         <release.spec.feedback>jaxb-dev@eclipse.org</release.spec.feedback>
-        <release.spec.date>Jul 2017</release.spec.date>
+        <release.spec.date>Jan 2022</release.spec.date>
         <api.package>jakarta.xml.bind</api.package>
         <extension.name>jakarta.xml.bind</extension.name>
         <spec.version>4.0</spec.version>
@@ -110,7 +110,7 @@
                 <plugin>
                     <groupId>org.codehaus.mojo</groupId>
                     <artifactId>buildnumber-maven-plugin</artifactId>
-                    <version>1.4</version>
+                    <version>3.0.0</version>
                 </plugin>
                 <plugin>
                     <groupId>org.codehaus.mojo</groupId>
@@ -132,7 +132,7 @@
                 </plugin>
                 <plugin>
                     <artifactId>maven-javadoc-plugin</artifactId>
-                    <version>3.3.0</version>
+                    <version>3.3.1</version>
                 </plugin>
                 <plugin>
                     <artifactId>maven-enforcer-plugin</artifactId>
