diff --git a/jaxb-ri/boms/bom-ext/pom.xml b/jaxb-ri/boms/bom-ext/pom.xml
index 346d1ae..717d136 100644
--- a/jaxb-ri/boms/bom-ext/pom.xml
+++ b/jaxb-ri/boms/bom-ext/pom.xml
@@ -35,10 +35,10 @@
 
     <properties>
         <codemodel.version>${project.version}</codemodel.version>
-        <dtd-parser.version>1.4.4</dtd-parser.version>
+        <dtd-parser.version>1.4.5</dtd-parser.version>
         <relaxng.version>${project.version}</relaxng.version>
         <xsom.version>${project.version}</xsom.version>
-        <ant.version>1.10.9</ant.version>
+        <ant.version>1.10.11</ant.version>
     </properties>
 
     <dependencyManagement>
diff --git a/jaxb-ri/codemodel/codemodel-annotation-compiler/pom.xml b/jaxb-ri/codemodel/codemodel-annotation-compiler/pom.xml
index 4cded8f..04828a1 100644
--- a/jaxb-ri/codemodel/codemodel-annotation-compiler/pom.xml
+++ b/jaxb-ri/codemodel/codemodel-annotation-compiler/pom.xml
@@ -34,7 +34,7 @@
         <dependency>
             <groupId>org.apache.ant</groupId>
             <artifactId>ant</artifactId>
-            <version>1.10.9</version>
+            <version>1.10.11</version>
             <scope>provided</scope>
         </dependency>
     </dependencies>
diff --git a/jaxb-ri/codemodel/codemodel-annotation-compiler/src/main/java/com/sun/codemodel/ac/ACTask.java b/jaxb-ri/codemodel/codemodel-annotation-compiler/src/main/java/com/sun/codemodel/ac/ACTask.java
index e29e707..963192b 100644
--- a/jaxb-ri/codemodel/codemodel-annotation-compiler/src/main/java/com/sun/codemodel/ac/ACTask.java
+++ b/jaxb-ri/codemodel/codemodel-annotation-compiler/src/main/java/com/sun/codemodel/ac/ACTask.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0, which is available at
@@ -59,9 +59,9 @@
      */
     private final Path classpath;
 
-    private final List<URL> endorsedJars = new ArrayList<URL>();
+    private final List<URL> endorsedJars = new ArrayList<>();
 
-    private final List<Classes> patterns = new ArrayList<Classes>();
+    private final List<Classes> patterns = new ArrayList<>();
 
     /**
      * Used during the build to load annotation classes.
@@ -303,6 +303,7 @@
     private void processDir(File dir, String prefix) {
         // look for class files
         String[] classes = dir.list(new FilenameFilter() {
+            @Override
             public boolean accept(File dir, String name) {
                 return name.endsWith(".class");
             }
@@ -314,6 +315,7 @@
 
         // look for subdirectories
         File[] subdirs = dir.listFiles(new FileFilter() {
+            @Override
             public boolean accept(File path) {
                 return path.isDirectory();
             }
diff --git a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/CodeWriter.java b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/CodeWriter.java
index 52aee72..bd54511 100644
--- a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/CodeWriter.java
+++ b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/CodeWriter.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0, which is available at
@@ -27,6 +27,8 @@
  */
 public abstract class CodeWriter {
 
+    public CodeWriter() {}
+
     /**
      * Encoding to be used by the writer. Null means platform specific encoding.
      *
diff --git a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JAnnotatable.java b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JAnnotatable.java
index d1f27b1..cf161ee 100644
--- a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JAnnotatable.java
+++ b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JAnnotatable.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0, which is available at
@@ -45,8 +45,11 @@
     /**
      * Adds an annotation to this program element
      * and returns a type-safe writer to fill in the values of such annotations.
+     * @param <W>
+     * @param clazz
+     * @return 
      */
-    <W extends JAnnotationWriter> W annotate2(Class<W> clazz);
+    <W extends JAnnotationWriter<? extends Annotation>> W annotate2(Class<W> clazz);
     
     /**
      * Read-only live view of all annotations on this {@link JAnnotatable}
diff --git a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JAnnotationArrayMember.java b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JAnnotationArrayMember.java
index e7fec50..25f8443 100644
--- a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JAnnotationArrayMember.java
+++ b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JAnnotationArrayMember.java
@@ -235,7 +235,7 @@
     }
 
     @Override
-    public <W extends JAnnotationWriter> W annotate2(Class<W> clazz) {
+    public <W extends JAnnotationWriter<? extends Annotation>> W annotate2(Class<W> clazz) {
         return TypedAnnotationWriter.create(clazz,this);
     }
     
diff --git a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JAnnotationValue.java b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JAnnotationValue.java
index 7ebfd75..3c79b8a 100644
--- a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JAnnotationValue.java
+++ b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JAnnotationValue.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0, which is available at
@@ -17,4 +17,7 @@
  *     Bhakti Mehta (bhakti.mehta@sun.com)
  */
 public abstract class JAnnotationValue implements JGenerable {
+
+    protected JAnnotationValue() {}
+
 }
diff --git a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JCommentPart.java b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JCommentPart.java
index 3c800f5..9bfc492 100644
--- a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JCommentPart.java
+++ b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JCommentPart.java
@@ -30,9 +30,12 @@
  */
 public class JCommentPart extends ArrayList<Object> {
 
-	private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
 
-	/**
+    protected JCommentPart() {
+    }
+
+    /**
      * Appends a new value.
      *
      * If the value is {@link JType} it will be printed as a @link tag.
diff --git a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JDefinedClass.java b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JDefinedClass.java
index 686ee8d..20b0eea 100644
--- a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JDefinedClass.java
+++ b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JDefinedClass.java
@@ -916,7 +916,7 @@
     }
 
     @Override
-    public <W extends JAnnotationWriter> W annotate2(Class<W> clazz) {
+    public <W extends JAnnotationWriter<? extends Annotation>> W annotate2(Class<W> clazz) {
         return TypedAnnotationWriter.create(clazz,this);
     }
 
diff --git a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JEnumConstant.java b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JEnumConstant.java
index a358efa..4970205 100644
--- a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JEnumConstant.java
+++ b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JEnumConstant.java
@@ -122,7 +122,7 @@
     }
 
     @Override
-    public <W extends JAnnotationWriter> W annotate2(Class<W> clazz) {
+    public <W extends JAnnotationWriter<? extends Annotation>> W annotate2(Class<W> clazz) {
         return TypedAnnotationWriter.create(clazz,this);
     }
 
diff --git a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JExpressionImpl.java b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JExpressionImpl.java
index e9098be..3f9f91b 100644
--- a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JExpressionImpl.java
+++ b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JExpressionImpl.java
@@ -14,6 +14,10 @@
  * Provides default implementations for {@link JExpression}.
  */
 public abstract class JExpressionImpl implements JExpression {
+
+    protected JExpressionImpl() {
+    }
+
     //
     //
     // from JOp
diff --git a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JForLoop.java b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JForLoop.java
index 838d38f..23b5541 100644
--- a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JForLoop.java
+++ b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JForLoop.java
@@ -24,7 +24,9 @@
     private JExpression test = null;
     private List<JExpression> updates = new ArrayList<>();
     private JBlock body = null;
-    
+
+    protected JForLoop() {}
+
     public JVar init(int mods, JType type, String var, JExpression e) {
         JVar v = new JVar(JMods.forVar(mods), type, var, e);
         inits.add(v);
diff --git a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JJavaName.java b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JJavaName.java
index a024368..6cfafd7 100644
--- a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JJavaName.java
+++ b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JJavaName.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0, which is available at
@@ -19,6 +19,8 @@
  */
 public class JJavaName {
 
+    private JJavaName() {
+    }
 
     /**
      * Checks if a given string is usable as a Java identifier.
diff --git a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JMethod.java b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JMethod.java
index 1703eb9..06572b0 100644
--- a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JMethod.java
+++ b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JMethod.java
@@ -236,7 +236,7 @@
     }
 
     @Override
-    public <W extends JAnnotationWriter> W annotate2(Class<W> clazz) {
+    public <W extends JAnnotationWriter<? extends Annotation>> W annotate2(Class<W> clazz) {
         return TypedAnnotationWriter.create(clazz, this);
     }
 
diff --git a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JMod.java b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JMod.java
index 5bc7f3c..e5a04a6 100644
--- a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JMod.java
+++ b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JMod.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0, which is available at
@@ -15,6 +15,10 @@
  * Modifier constants.
  */
 public final class JMod {
+
+    private JMod() {
+    }
+
     public final static int NONE         = 0x000;
     public final static int PUBLIC       = 0x001;
     public final static int PROTECTED    = 0x002;
diff --git a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JPackage.java b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JPackage.java
index 792d620..472c749 100644
--- a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JPackage.java
+++ b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JPackage.java
@@ -425,7 +425,7 @@
     }
 
     @Override
-    public <W extends JAnnotationWriter> W annotate2(Class<W> clazz) {
+    public <W extends JAnnotationWriter<? extends Annotation>> W annotate2(Class<W> clazz) {
         return TypedAnnotationWriter.create(clazz,this);
     }
 
diff --git a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JType.java b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JType.java
index 04f0c6f..0f3e41f 100644
--- a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JType.java
+++ b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JType.java
@@ -19,6 +19,8 @@
  */
 public abstract class JType implements JGenerable, Comparable<JType> {
 
+    protected JType() {}
+
     /**
      * Obtains a reference to the primitive type object from a type name.
      */
diff --git a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JVar.java b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JVar.java
index 83a09b9..359e667 100644
--- a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JVar.java
+++ b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/JVar.java
@@ -161,7 +161,7 @@
     }
 
     @Override
-    public <W extends JAnnotationWriter> W annotate2(Class<W> clazz) {
+    public <W extends JAnnotationWriter<? extends Annotation>> W annotate2(Class<W> clazz) {
         return TypedAnnotationWriter.create(clazz,this);
     }
 
diff --git a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/SecureLoader.java b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/SecureLoader.java
index 1d60c82..051ec16 100644
--- a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/SecureLoader.java
+++ b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/SecureLoader.java
@@ -22,24 +22,24 @@
         if (System.getSecurityManager() == null) {
             return Thread.currentThread().getContextClassLoader();
         } else {
-            return (ClassLoader) java.security.AccessController.doPrivileged(
-                    new java.security.PrivilegedAction() {
+            return java.security.AccessController.doPrivileged(
+                    new java.security.PrivilegedAction<ClassLoader>() {
                         @Override
-                        public java.lang.Object run() {
+                        public ClassLoader run() {
                             return Thread.currentThread().getContextClassLoader();
                         }
                     });
         }
     }
 
-    static ClassLoader getClassClassLoader(final Class c) {
+    static ClassLoader getClassClassLoader(final Class<?> c) {
         if (System.getSecurityManager() == null) {
             return c.getClassLoader();
         } else {
-            return (ClassLoader) java.security.AccessController.doPrivileged(
-                    new java.security.PrivilegedAction() {
+            return java.security.AccessController.doPrivileged(
+                    new java.security.PrivilegedAction<ClassLoader>() {
                         @Override
-                        public java.lang.Object run() {
+                        public ClassLoader run() {
                             return c.getClassLoader();
                         }
                     });
@@ -50,10 +50,10 @@
         if (System.getSecurityManager() == null) {
             return ClassLoader.getSystemClassLoader();
         } else {
-            return (ClassLoader) java.security.AccessController.doPrivileged(
-                    new java.security.PrivilegedAction() {
+            return java.security.AccessController.doPrivileged(
+                    new java.security.PrivilegedAction<ClassLoader>() {
                         @Override
-                        public java.lang.Object run() {
+                        public ClassLoader run() {
                             return ClassLoader.getSystemClassLoader();
                         }
                     });
@@ -65,9 +65,9 @@
             Thread.currentThread().setContextClassLoader(cl);
         } else {
             java.security.AccessController.doPrivileged(
-                    new java.security.PrivilegedAction() {
+                    new java.security.PrivilegedAction<Void>() {
                         @Override
-                        public java.lang.Object run() {
+                        public Void run() {
                             Thread.currentThread().setContextClassLoader(cl);
                             return null;
                         }
diff --git a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/TypedAnnotationWriter.java b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/TypedAnnotationWriter.java
index 59d34a5..abd2fa3 100644
--- a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/TypedAnnotationWriter.java
+++ b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/TypedAnnotationWriter.java
@@ -64,9 +64,9 @@
         return annotation;
     }
 
-    @SuppressWarnings("unchecked")
+    @SuppressWarnings({"unchecked", "rawtypes"})
     @Override
-	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
 
         if(method.getDeclaringClass()==JAnnotationWriter.class) {
             try {
@@ -141,8 +141,8 @@
         throw new IllegalArgumentException("Unable to handle this method call "+method.toString());
     }
 
-    @SuppressWarnings("unchecked")
-	private Object addArrayValue(Object proxy,String name, Class itemType, Class expectedReturnType, Object arg) {
+    @SuppressWarnings({"unchecked", "rawtypes"})
+    private Object addArrayValue(Object proxy,String name, Class<?> itemType, Class<?> expectedReturnType, Object arg) {
         if(arrays==null)
             arrays = new HashMap<>();
         JAnnotationArrayMember m = arrays.get(name);
@@ -205,21 +205,22 @@
     /**
      * Creates a proxy and returns it.
      */
-    @SuppressWarnings("unchecked")
-	private W createProxy() {
+    @SuppressWarnings({"unchecked", "rawtypes"})
+    private W createProxy() {
         return (W)Proxy.newProxyInstance(
-            SecureLoader.getClassClassLoader(writerType),new Class[]{writerType},this);
+            SecureLoader.getClassClassLoader(writerType),new Class<?>[]{writerType},this);
     }
 
     /**
      * Creates a new typed annotation writer.
      */
-    @SuppressWarnings("unchecked")
-	static <W extends JAnnotationWriter<?>> W create(Class<W> w, JAnnotatable annotatable) {
+    @SuppressWarnings({"unchecked", "rawtypes"})
+    static <W extends JAnnotationWriter<?>> W create(Class<W> w, JAnnotatable annotatable) {
         Class<? extends Annotation> a = findAnnotationType(w);
         return (W)new TypedAnnotationWriter(a,w,annotatable.annotate(a)).createProxy();
     }
 
+    @SuppressWarnings({"unchecked", "rawtypes"})
     private static Class<? extends Annotation> findAnnotationType(Class<?> clazz) {
         for( Type t : clazz.getGenericInterfaces()) {
             if(t instanceof ParameterizedType) {
diff --git a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/fmt/SecureLoader.java b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/fmt/SecureLoader.java
index e3b30c2..23214ea 100644
--- a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/fmt/SecureLoader.java
+++ b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/fmt/SecureLoader.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0, which is available at
@@ -10,8 +10,6 @@
 
 package com.sun.codemodel.fmt;
 
-import com.sun.codemodel.*;
-
 /**
  * Class defined for safe calls of getClassLoader methods of any kind (context/system/class
  * classloader. This MUST be package private and defined in every package which 
@@ -24,22 +22,24 @@
         if (System.getSecurityManager() == null) {
             return Thread.currentThread().getContextClassLoader();
         } else {
-            return (ClassLoader) java.security.AccessController.doPrivileged(
-                    new java.security.PrivilegedAction() {
-                        public java.lang.Object run() {
+            return java.security.AccessController.doPrivileged(
+                    new java.security.PrivilegedAction<ClassLoader>() {
+                        @Override
+                        public ClassLoader run() {
                             return Thread.currentThread().getContextClassLoader();
                         }
                     });
         }
     }
 
-    static ClassLoader getClassClassLoader(final Class c) {
+    static ClassLoader getClassClassLoader(final Class<?> c) {
         if (System.getSecurityManager() == null) {
             return c.getClassLoader();
         } else {
-            return (ClassLoader) java.security.AccessController.doPrivileged(
-                    new java.security.PrivilegedAction() {
-                        public java.lang.Object run() {
+            return java.security.AccessController.doPrivileged(
+                    new java.security.PrivilegedAction<ClassLoader>() {
+                        @Override
+                        public ClassLoader run() {
                             return c.getClassLoader();
                         }
                     });
@@ -50,9 +50,10 @@
         if (System.getSecurityManager() == null) {
             return ClassLoader.getSystemClassLoader();
         } else {
-            return (ClassLoader) java.security.AccessController.doPrivileged(
-                    new java.security.PrivilegedAction() {
-                        public java.lang.Object run() {
+            return java.security.AccessController.doPrivileged(
+                    new java.security.PrivilegedAction<ClassLoader>() {
+                        @Override
+                        public ClassLoader run() {
                             return ClassLoader.getSystemClassLoader();
                         }
                     });
@@ -64,8 +65,9 @@
             Thread.currentThread().setContextClassLoader(cl);
         } else {
             java.security.AccessController.doPrivileged(
-                    new java.security.PrivilegedAction() {
-                        public java.lang.Object run() {
+                    new java.security.PrivilegedAction<Void>() {
+                        @Override
+                        public Void run() {
                             Thread.currentThread().setContextClassLoader(cl);
                             return null;
                         }
diff --git a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/package-info.java b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/package-info.java
index 6e292aa..84374c7 100644
--- a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/package-info.java
+++ b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/package-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0, which is available at
@@ -63,7 +63,7 @@
  * better performance wise, here's the findings.
  *
  * <p>
- * {@link List}s {@link Map}s, and other collections take up
+ * {@link java.util.List}s {@link java.util.Map}s, and other collections take up
  * a lot of space. Allocating those things lazily is generally
  * a good idea.
  *
@@ -75,6 +75,3 @@
  *
  */
 package com.sun.codemodel;
-
-import java.util.List;
-import java.util.Map;
diff --git a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/util/EncoderFactory.java b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/util/EncoderFactory.java
index 75de208..761f4c4 100644
--- a/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/util/EncoderFactory.java
+++ b/jaxb-ri/codemodel/codemodel/src/main/java/com/sun/codemodel/util/EncoderFactory.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0, which is available at
@@ -24,6 +24,8 @@
  */
 public class EncoderFactory {
 
+    private EncoderFactory() {}
+
     public static CharsetEncoder createEncoder( String encoding ) {
         Charset cs = Charset.forName(encoding == null
                 ? System.getProperty("file.encoding")
diff --git a/jaxb-ri/codemodel/pom.xml b/jaxb-ri/codemodel/pom.xml
index 2194b5c..6f2d89d 100644
--- a/jaxb-ri/codemodel/pom.xml
+++ b/jaxb-ri/codemodel/pom.xml
@@ -60,7 +60,7 @@
         <spotbugs.exclude/>
         <spotbugs.skip>false</spotbugs.skip>
         <spotbugs.threshold>High</spotbugs.threshold>
-        <spotbugs.version>4.2.0</spotbugs.version>
+        <spotbugs.version>4.3.0</spotbugs.version>
 
         <upper.java.level>9</upper.java.level>
         <base.java.level>8</base.java.level>
@@ -112,7 +112,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-javadoc-plugin</artifactId>
-                    <version>3.2.0</version>
+                    <version>3.3.0</version>
                     <configuration>
                         <archive>
                             <manifest>
@@ -241,6 +241,8 @@
                     <compilerArgs>
                         <arg>-Xlint:all</arg>
                     </compilerArgs>
+                    <showDeprecation>true</showDeprecation>
+                    <showWarnings>true</showWarnings>
                 </configuration>
                 <executions>
                     <execution>
diff --git a/jaxb-ri/external/pom.xml b/jaxb-ri/external/pom.xml
index a0f1b46..e461b85 100644
--- a/jaxb-ri/external/pom.xml
+++ b/jaxb-ri/external/pom.xml
@@ -62,7 +62,7 @@
         <spotbugs.exclude/>
         <spotbugs.skip>false</spotbugs.skip>
         <spotbugs.threshold>High</spotbugs.threshold>
-        <spotbugs.version>4.2.0</spotbugs.version>
+        <spotbugs.version>4.3.0</spotbugs.version>
 
         <upper.java.level>9</upper.java.level>
         <base.java.level>8</base.java.level>
@@ -136,7 +136,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-javadoc-plugin</artifactId>
-                    <version>3.2.0</version>
+                    <version>3.3.0</version>
                     <configuration>
                         <archive>
                             <manifest>
diff --git a/jaxb-ri/jxc/src/main/java/com/sun/tools/jxc/gen/config/NGCCRuntime.java b/jaxb-ri/jxc/src/main/java/com/sun/tools/jxc/gen/config/NGCCRuntime.java
index 8c90db3..64a9e24 100644
--- a/jaxb-ri/jxc/src/main/java/com/sun/tools/jxc/gen/config/NGCCRuntime.java
+++ b/jaxb-ri/jxc/src/main/java/com/sun/tools/jxc/gen/config/NGCCRuntime.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0, which is available at
diff --git a/jaxb-ri/jxc/src/main/java/com/sun/tools/jxc/model/nav/ApNavigator.java b/jaxb-ri/jxc/src/main/java/com/sun/tools/jxc/model/nav/ApNavigator.java
index 940f9ac..913728a 100644
--- a/jaxb-ri/jxc/src/main/java/com/sun/tools/jxc/model/nav/ApNavigator.java
+++ b/jaxb-ri/jxc/src/main/java/com/sun/tools/jxc/model/nav/ApNavigator.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0, which is available at
diff --git a/jaxb-ri/pom.xml b/jaxb-ri/pom.xml
index 57ce5cd..7a9f9e9 100644
--- a/jaxb-ri/pom.xml
+++ b/jaxb-ri/pom.xml
@@ -79,7 +79,7 @@
         <spotbugs.exclude/>
         <spotbugs.skip>false</spotbugs.skip>
         <spotbugs.threshold>High</spotbugs.threshold>
-        <spotbugs.version>4.2.0</spotbugs.version>
+        <spotbugs.version>4.3.0</spotbugs.version>
 
         <junit.version>4.13.2</junit.version>
 
@@ -145,7 +145,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-resources-plugin</artifactId>
-                    <version>3.1.0</version>
+                    <version>3.2.0</version>
                     <configuration>
                         <escapeString>\</escapeString>
                     </configuration>
@@ -179,7 +179,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-dependency-plugin</artifactId>
-                    <version>3.1.2</version>
+                    <version>3.2.0</version>
                 </plugin>
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
@@ -241,7 +241,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-javadoc-plugin</artifactId>
-                    <version>3.2.0</version>
+                    <version>3.3.0</version>
                     <configuration>
                         <archive>
                             <manifest>
@@ -581,7 +581,7 @@
                         <plugin>
                             <groupId>org.jacoco</groupId>
                             <artifactId>jacoco-maven-plugin</artifactId>
-                            <version>0.8.6</version>
+                            <version>0.8.7</version>
                         </plugin>
                     </plugins>
                 </pluginManagement>
diff --git a/jaxb-ri/xjc/src/main/java/com/sun/tools/xjc/reader/dtd/bindinfo/BindInfo.java b/jaxb-ri/xjc/src/main/java/com/sun/tools/xjc/reader/dtd/bindinfo/BindInfo.java
index 91fdff1..b19baec 100644
--- a/jaxb-ri/xjc/src/main/java/com/sun/tools/xjc/reader/dtd/bindinfo/BindInfo.java
+++ b/jaxb-ri/xjc/src/main/java/com/sun/tools/xjc/reader/dtd/bindinfo/BindInfo.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0, which is available at
diff --git a/jaxb-ri/xjc/src/main/java/module-info.java b/jaxb-ri/xjc/src/main/java/module-info.java
index 774de1d..0f9360b 100644
--- a/jaxb-ri/xjc/src/main/java/module-info.java
+++ b/jaxb-ri/xjc/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0, which is available at
diff --git a/jaxb-ri/xsom/pom.xml b/jaxb-ri/xsom/pom.xml
index 7d9fbed..a7b98e4 100644
--- a/jaxb-ri/xsom/pom.xml
+++ b/jaxb-ri/xsom/pom.xml
@@ -64,7 +64,7 @@
         <spotbugs.exclude>${project.basedir}/exclude-xsom.xml</spotbugs.exclude>
         <spotbugs.skip>false</spotbugs.skip>
         <spotbugs.threshold>Low</spotbugs.threshold>
-        <spotbugs.version>4.2.0</spotbugs.version>
+        <spotbugs.version>4.3.0</spotbugs.version>
 
         <relaxng.version>${project.version}</relaxng.version>
         <junit.version>4.13.2</junit.version>
@@ -127,7 +127,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-javadoc-plugin</artifactId>
-                    <version>3.2.0</version>
+                    <version>3.3.0</version>
                     <configuration>
                         <archive>
                             <manifest>
@@ -349,7 +349,7 @@
                         <plugin>
                             <groupId>org.jacoco</groupId>
                             <artifactId>jacoco-maven-plugin</artifactId>
-                            <version>0.8.6</version>
+                            <version>0.8.7</version>
                         </plugin>
                     </plugins>
                 </pluginManagement>
